Większość powłok logowania według liczby nowo zainstalowanych systemów jest nieinteraktywna, w rzeczywistości:
$ 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
Jasno /bin/bash
i /bin/sh
tradycyjne muszle i są interaktywne. Ale wszystkie inne elementy na tej liście są nieinteraktywne. Jeśli czytasz listę i nie wiesz, co robi jedna z nich, możesz po prostu sprawdzić jej stronę podręcznika (na przykład man nologin
lub man sync
).
Co faktycznie robi polecenie
Patrząc na historię postów Kapitana Człowieka, widzę, że nie mają oni doświadczenia z Uniksem. Może więc pytanie w komentarzu dotyczące nieprzestrzegania dotyczyło wiersza poleceń u góry odpowiedzi, a nie tylko wyniku. Wyjaśnię również wiersz poleceń, mimo że jest to naprawdę nie na temat tego pytania.
Polecenie jest potokiem uniksowym . Potok jest łańcuchem poleceń - czytasz go od lewej do prawej - w którym wyjście pierwszego polecenia staje się wejściem drugiego, wyjście drugiego staje się wejściem trzeciego itd., Dopóki koniec rurociągu. Wynik ostatniego procesu jest wyświetlany na terminalu (chyba że został przekierowany). Aby uzyskać więcej informacji, zobacz wpis w Wikipedii dotyczący rurociągów powłokowych .
Jeśli nie rozumiesz, co robi potok, możesz po prostu uruchomić go w segmentach, aby zobaczyć, co się dzieje. Możesz także przeczytać stronę podręcznika poleceń, które są używane (tutaj awk
, sort
i uniq
). W rzeczywistości powinieneś to zrobić teraz. Poczekam.
Uruchommy etapy potoku stopniowo (możesz to bezpiecznie zrobić na własnym systemie 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 ... ]
Powyższy wynik to po prostu zawartość siódmego pola z /etc/passwd
pliku. Jest to baza danych (plik tekstowy), która informuje system, czym jest powłoka logowania wszystkich użytkowników. Jeśli chcesz dowiedzieć się więcej o tym, /etc/passwd
po prostu przeczytaj go (jest to świat do odczytu) i zajrzyj na stronę podręcznika (man 5 passwd)
.
Więc czytając całą listę, możesz dowiedzieć się, jakie są popularne przedmioty, ale to nie jest dobry format odpowiedzi na to pytanie, ponieważ tak naprawdę chodziło o to, jak popularne są nieinteraktywne powłoki. Policzmy je. Najprostszym sposobem na to jest posortowanie elementów w pierwszej kolejności:
~$ 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 ... ]
Możemy użyć programu, uniq
aby pokazać nam tylko unikalne elementy:
~ $ awk -F: '{print 7 $}' </ etc / passwd | sortuj | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Ale czekaj, to nie ma sensu, ile ich było? Zapytajmy uniq
(przeczytaj stronę podręcznika!):
~$ 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
To oczywiście wynik, który widzieliśmy u góry odpowiedzi. Posortujmy to jeszcze raz, aby zobaczyć wpisy w kolejności:
~$ 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
Poczekaj, to nie może być prawda, 17 pojawia się przed 1, a 5 po 23. Problem polega na tym, że przedmioty są sortowane leksykograficznie . Poprośmy o sort
posortowanie ich numerycznie i w odwrotnej kolejności:
~$ 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
Myślę, że to wyjaśnia wszystko w oryginalnej odpowiedzi. Jeśli nadal nie masz pewności co do szczegółów działania tych poleceń, możesz przeczytać strony podręcznika. Jeśli nadal nie masz pewności co do zasad tego, co się dzieje, lepiej zacząć od przeczytania książki (online lub na papierze) wyjaśniającej Unixa i Linuksa.
telnet towel.blinkenlights.nl
dla powłoki nieinteraktywnej ;-)