Die meisten Login-Shells auf einem neu installierten System sind eigentlich nicht interaktiv:
$ 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
Klar /bin/bash
und /bin/sh
sind traditionelle Muscheln und sie sind interaktiv. Alle anderen Elemente in dieser Liste sind jedoch nicht interaktiv. Wenn Sie die Liste lesen und nicht wissen, was einer von ihnen tut, können Sie einfach seine Handbuchseite nachschlagen (zum Beispiel mit man nologin
oder man sync
).
Was der Befehl tatsächlich tut
Wenn ich mir die Posting-Historie von Captain Man ansehe, sehe ich, dass sie ziemlich unerfahren mit Unix sind. Vielleicht bezog sich die Frage im Kommentar zu "Nicht folgen" auf die Befehlszeile oben in der Antwort, nicht nur auf die Ausgabe. Deshalb erkläre ich auch die Kommandozeile, auch wenn sie bei dieser Frage nicht zum Thema gehört.
Der Befehl ist eine Unix-Pipeline . Eine Pipeline ist eine Befehlskette - Sie lesen sie von links nach rechts -, in der die Ausgabe des ersten Befehls zur Eingabe des zweiten, die Ausgabe des zweiten zur Eingabe des dritten usw. wird Ende der Pipeline. Die Ausgabe des letzten Prozesses wird auf dem Terminal angezeigt (sofern sie nicht umgeleitet wurde). Weitere Informationen finden Sie im Wikipedia-Eintrag zu Shell-Pipelines .
Wenn Sie nicht verstehen, was eine Pipeline tut, können Sie sie einfach in Segmenten ausführen, um zu sehen, was passiert. Sie können auch die Handbuchseite für die verwendeten Befehle lesen (hier awk
,, sort
und uniq
). Tatsächlich sollten Sie das jetzt tun. Ich werde warten.
Lassen Sie uns die Phasen der Pipeline schrittweise ausführen (dies können Sie problemlos auf Ihrem eigenen Unix-System tun):
~$ 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 ... ]
Die Ausgabe oben ist einfach der Inhalt des siebten Feldes aus der /etc/passwd
Datei. Das ist die (Flat-Text-Datei) -Datenbank, die dem System mitteilt, was die Login-Shell aller Benutzer ist. Wenn Sie mehr darüber erfahren möchten, /etc/passwd
lesen Sie es einfach (es ist von der Welt lesbar) und schauen Sie auf die Handbuchseite (man 5 passwd)
.
Wenn Sie also die gesamte Liste dort lesen, können Sie eine Vorstellung davon bekommen, was die beliebtesten Elemente sind. Dies ist jedoch kein gutes Format für die Beantwortung dieser Frage, da es wirklich darum ging, wie häufig nicht interaktive Shells sind. Zählen wir sie auf. Der einfachste Weg, dies zu tun, besteht darin, die Elemente zuerst zu sortieren:
~$ 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 ... ]
Mit dem Programm können uniq
wir uns nur die Unikate anzeigen lassen:
~ $ awk -F: '{print $ 7}' </ etc / passwd | sortieren | uniq | sed -es / ^ / / '/ bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Aber warte, das nützt nichts, wie viele von jedem waren da? Fragen wir uniq
(lesen Sie die Manpage!):
~$ 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
Das ist natürlich die Ausgabe, die wir oben in der Antwort gesehen haben. Sortieren wir es noch einmal, um die Einträge in der Reihenfolge zu sehen:
~$ 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
Warten Sie, das kann nicht richtig sein, 17 kommt vor 1 und 5 nach 23. Das Problem ist, dass die Artikel lexikografisch sortiert werden . Lassen Sie uns sort
sie numerisch und in umgekehrter Reihenfolge sortieren:
~$ 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
Ich denke, das erklärt alles in der ursprünglichen Antwort. Wenn Sie immer noch nicht genau wissen, was diese Befehle bewirken, können Sie die Handbuchseiten lesen. Wenn Sie sich noch nicht sicher sind, was in der Zukunft vor sich geht, lesen Sie am besten zunächst ein Buch (online oder auf Papier), in dem Unix und Linux erläutert werden.
telnet towel.blinkenlights.nl
für eine Login-Shell, die nicht interaktiv ist ;-)