La plupart des shells de connexion par compte sur un système nouvellement installé ne sont pas interactifs, en fait:
$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c
5 /bin/bash
23 /bin/false
1 /bin/sh
1 /bin/sync
17 /usr/sbin/nologin
Clairement /bin/bashet /bin/shsont des coquilles traditionnelles et elles sont interactives. Mais tous les autres éléments de cette liste ne sont pas interactifs. Si vous lisez la liste et ne savez pas ce que fait l'un d'eux, vous pouvez simplement consulter sa page de manuel (avec par exemple man nologinou man sync).
Ce que fait réellement la commande
En regardant l'historique des publications de Captain Man, je vois qu'ils sont assez inexpérimentés avec Unix. Alors peut-être que la question dans le commentaire de ne pas suivre concerne la ligne de commande en haut de la réponse, pas simplement la sortie. Je vais donc aussi expliquer la ligne de commande, même si c'est vraiment hors sujet pour cette question.
La commande est un pipeline Unix . Un pipeline est une chaîne de commandes - vous le lisez de gauche à droite - dans laquelle la sortie de la première commande devient l'entrée de la seconde, la sortie de la seconde devient l'entrée de la troisième, et ainsi de suite, jusqu'à ce que le fin du pipeline. La sortie du dernier processus est affichée sur le terminal (sauf s'il a été redirigé). Voir l'entrée Wikipedia sur les pipelines shell pour plus d'informations.
Si vous ne comprenez pas ce que fait un pipeline, vous pouvez simplement l'exécuter en segments pour voir ce qui se passe. Vous pouvez également lire la page de manuel pour les commandes qui sont utilisées (ici, awk, sortet uniq). En fait, vous devriez le faire maintenant. J'attendrai.
Exécutons les étapes du pipeline de manière incrémentielle (vous pouvez le faire en toute sécurité sur votre propre système Unix):
~$ awk -F: '{print $7}' < /etc/passwd | sed -e 's/^/ /'
/bin/bash
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/bin/sync
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/usr/sbin/nologin
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
/usr/sbin/nologin
[ ... and so on, I've left the rest out ... ]
La sortie ci-dessus est simplement le contenu du septième champ du /etc/passwdfichier. C'est la base de données (fichier texte plat) qui indique au système ce qu'est le shell de connexion de tout le monde. Si vous voulez en savoir plus, /etc/passwdlisez-le (il est lisible dans le monde entier) et consultez sa page de manuel (man 5 passwd).
Donc, en lisant toute la liste, vous pouvez avoir une idée des éléments populaires, mais ce n'est pas un bon format pour une réponse à cette question, car la question portait vraiment sur la fréquence des coquilles non interactives. Comptons-les. La façon la plus simple de procéder consiste à trier les éléments en premier:
~$ awk -F: '{print $7}' < /etc/passwd | sort
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/bash
/bin/false
/bin/false
/bin/false
/bin/false
/bin/false
[ ... and so on, I've left the rest out ... ]
Nous pouvons utiliser le programme uniqpour nous montrer uniquement les éléments uniques:
~ $ awk -F: '{print $ 7}' </ etc / passwd | trier | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Mais attendez, cela ne sert à rien, combien de chacun était là? Demandons uniq(lisez la page de manuel!):
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c
5 /bin/bash
23 /bin/false
1 /bin/sh
1 /bin/sync
17 /usr/sbin/nologin
C'est le résultat que nous avons vu en haut de la réponse, bien sûr. Trions-le à nouveau pour voir les entrées dans l'ordre:
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort
17 /usr/sbin/nologin
1 /bin/sh
1 /bin/sync
23 /bin/false
5 /bin/bash
Attendez, cela ne peut pas être vrai, 17 vient avant 1 et 5 après 23. Le problème est que les articles sont triés lexicographiquement . Demandons sortde les trier numériquement, et dans l'ordre inverse:
~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort -n -r
23 /bin/false
17 /usr/sbin/nologin
5 /bin/bash
1 /bin/sync
1 /bin/sh
Je pense que cela explique tout dans la réponse originale. Si vous ne savez toujours pas ce que font ces commandes, vous pouvez lire les pages de manuel. Si vous n'êtes toujours pas clair sur les principes de ce qui se passe, il serait préférable de commencer par lire un livre (en ligne ou sur papier) expliquant Unix et Linux.
telnet towel.blinkenlights.nlpour un shell de connexion non interactif ;-)