Yeni kurulan bir sisteme göre çoğu giriş kabuğu etkileşimli değildir, aslında:
$ 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
Açıkça /bin/bashve /bin/shgeleneksel kabuklardır ve etkileşimlidirler. Ancak bu listedeki diğer tüm öğeler etkileşimli değildir. Listeyi okuyorsanız ve bunlardan birinin ne yaptığını bilmiyorsanız, sadece manuel sayfasına bakabilirsiniz (örneğin man nologinveya ile man sync).
Komut aslında ne yapar
Kaptan Adam'ın gönderi geçmişine baktığımda, Unix ile oldukça deneyimsiz olduklarını görüyorum. Yani belki de yorumdaki soru, cevabın üst kısmındaki komut satırıyla ilgili değil, sadece çıktı ile ilgili değildir. Bu soru için konu dışı olmasına rağmen komut satırını da açıklayacağım.
Komut bir Unix ardışık düzenidir . Bir boru hattı, bir komut zinciridir - soldan sağa okursunuz - burada ilk komutun çıktısı ikincinin girişi olur, ikincisinin çıktısı üçüncü olanın girişi olur ve bu şekilde devam eder. boru hattının sonu. Son işlemin çıkışı terminalde gösterilir (yönlendirilmedikçe). Daha fazla bilgi için kabuk boru hatlarındaki Wikipedia girişine bakın .
Bir boru hattının ne yaptığını anlamıyorsanız, neler olduğunu görmek için basitçe bölümler halinde çalıştırabilirsiniz. Kullanılan komutların (burada awk, sortve uniq) el kitabını da okuyabilirsiniz . Aslında bunu şimdi yapmalısınız. Bekleyeceğim.
Boru hattının aşamalarını aşamalı olarak çalıştıralım (bunu kendi Unix sisteminizde güvenle yapabilirsiniz):
~$ 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 ... ]
Yukarıdaki çıktı /etc/passwddosyadan yedinci alanın içeriğidir . Bu, sisteme herkesin giriş kabuğunun ne olduğunu söyleyen (düz metin dosyası) veritabanıdır. Hakkında daha fazla bilgi edinmek için /etc/passwdsadece okuyun (dünya tarafından okunabilir) ve bunun için manuel sayfaya bakın (man 5 passwd).
Bu nedenle, tüm listeyi okurken popüler öğelerin ne olduğu hakkında bir fikir edinebilirsiniz, ancak bu soruya cevap vermek için iyi bir format değildir, çünkü soru gerçekten etkileşimli olmayan kabukların ne kadar olduğuyla ilgiliydi. Onları sayalım. Bunu yapmanın en basit yolu, önce öğeleri sıralamaktır:
~$ 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 ... ]
Programı uniqbize sadece benzersiz öğeleri göstermek için kullanabiliriz :
~ $ awk -F: '{print $ 7}' </ etc / passwd | sıralama | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Ama bekle, faydası yok, her birinden kaç tane vardı? Soralım uniq(adam sayfasını okuyun!):
~$ 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
Elbette cevabın tepesinde gördüğümüz çıktı bu. Girdileri sırayla görmek için tekrar sıralayalım:
~$ 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
Bekleyin, bu doğru olamaz, 17 23'ten 1 ve 5'ten önce gelir. Sorun şu ki, sözcükler sözlüksel olarak sıralanıyor . sortOnları sayısal olarak ve ters sırada sıralamayı isteyelim :
~$ 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
Bence bu orijinal cevaptaki her şeyi açıklıyor. Bu komutların ne yaptığının ayrıntılarından hala emin değilseniz, manuel sayfaları okuyabilirsiniz. Neler olup bittiğini hala bilmiyorsanız, Unix ve Linux'u açıklayan bir kitap (çevrimiçi veya kağıt üzerinde) okuyarak başlamak daha iyi olabilir.
telnet towel.blinkenlights.nletkileşimli olmayan bir giriş kabuğu için ;-)