Sebagian besar shell login dengan mengandalkan sistem yang baru diinstal bersifat non-interaktif, sebenarnya:
$ 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
Jelas /bin/bashdan /bin/shtradisional kerang dan mereka interaktif. Tetapi semua item lain dalam daftar itu adalah non-interaktif. Jika Anda membaca daftar dan tidak tahu apa yang salah satu dari mereka tidak, Anda hanya dapat melihat manual page-nya (dengan misalnya man nologinatau man sync).
Apa yang sebenarnya dilakukan perintah
Melihat riwayat posting Kapten Man saya melihat bahwa mereka cukup berpengalaman dengan Unix. Jadi mungkin pertanyaan di komentar tentang tidak mengikuti terkait dengan baris perintah di bagian atas jawaban, bukan hanya output. Jadi saya akan menjelaskan baris perintah juga, meskipun itu benar-benar di luar topik untuk pertanyaan ini.
Perintahnya adalah pipa Unix . Pipeline adalah rantai perintah - Anda membacanya dari kiri ke kanan - di mana output dari perintah pertama menjadi input yang kedua, output yang kedua menjadi input yang ketiga, dan seterusnya, hingga ujung pipa. Output dari proses terakhir ditampilkan pada terminal (kecuali jika sudah diarahkan). Lihat entri Wikipedia pada pipa shell untuk informasi lebih lanjut.
Jika Anda tidak mengerti apa yang dilakukan pipa, Anda bisa menjalankannya dalam segmen untuk melihat apa yang terjadi. Anda juga dapat membaca halaman manual untuk perintah yang digunakan (di sini awk,, sortdan uniq). Bahkan, Anda harus melakukannya sekarang. Aku akan menunggu.
Mari kita jalankan tahapan pipeline secara bertahap (Anda dapat melakukannya dengan aman di sistem Unix Anda sendiri):
~$ 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 ... ]
Output di atas hanyalah isi dari bidang ketujuh dari /etc/passwdfile. Itu adalah basis data (flat-text-file) yang memberi tahu sistem tentang apa shell login semua orang. Jika Anda ingin mengetahui lebih lanjut tentang /etc/passwdbacalah saja (ini dapat dibaca dunia) dan lihat halaman manual untuk itu (man 5 passwd).
Jadi, bacalah seluruh daftar di sana, Anda dapat memperoleh gagasan tentang apa barang-barang populer itu, tetapi itu bukan format yang baik untuk menjawab pertanyaan ini, karena pertanyaannya sebenarnya tentang seberapa umum cangkang non-interaktif. Mari kita hitung. Cara paling sederhana untuk melakukannya adalah dengan mengurutkan item terlebih dahulu:
~$ 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 ... ]
Kami dapat menggunakan program ini uniquntuk menunjukkan kepada kami hanya barang-barang unik:
~ $ awk -F: '{print $ 7}' </ etc / passwd | sortir | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Tapi tunggu, tidak ada gunanya, ada berapa masing-masing? Mari kita bertanya uniq(baca halaman manual!):
~$ 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
Tentu saja itu hasil yang kami lihat di bagian atas jawabannya. Mari kita urutkan lagi untuk melihat entri secara berurutan:
~$ 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
Tunggu, itu tidak mungkin benar, 17 muncul sebelum 1 dan 5 setelah 23. Masalahnya adalah bahwa item sedang diurutkan secara leksikografis . Mari kita minta sortuntuk mengurutkannya secara numerik, dan dalam urutan terbalik:
~$ 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
Saya pikir itu menjelaskan semuanya dalam jawaban aslinya. Jika Anda masih tidak jelas tentang rincian apa yang dilakukan perintah-perintah itu, Anda dapat membaca halaman manual. Jika Anda masih tidak jelas pada prinsip-prinsip apa yang terjadi, mungkin lebih baik untuk memulai dengan membaca buku (online atau di atas kertas) yang menjelaskan Unix dan Linux.
telnet towel.blinkenlights.nluntuk shell login yang non-interaktif ;-)