Більшість оболонок для входу за рахунком за нещодавно встановленою системою насправді:
$ 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
Очевидно , /bin/bashі /bin/shтрадиційні снаряди , і вони інтерактивні. Але всі інші елементи цього списку не інтерактивні. Якщо ви читаєте список і не знаєте, що робить один з них, ви можете просто переглянути його сторінку керівництва (наприклад, man nologinабо man sync).
Що команда насправді виконує
Дивлячись на історію публікацій капітана, я бачу, що з Unix вони досить недосвідчені. Тож, можливо, питання в коментарі про не наступне стосується командного рядка вгорі відповіді, а не просто виводу. Тож я поясню і командний рядок, навіть якщо це питання справді поза темою.
Команда - це конвеєр Unix . Трубопровід - це ланцюг команд - ви читаєте його зліва направо - в якому вихід першої команди стає входом другої, вихід другої стає входом третьої тощо, до тих пір, поки кінець трубопроводу. Вихід останнього процесу відображається на терміналі (якщо він не був перенаправлений). Додаткову інформацію див. У Вікіпедії на оболонках трубопроводів .
Якщо ви не розумієте, що робить трубопровід, ви можете просто запустити його в сегменти, щоб побачити, що відбувається. Ви також можете прочитати сторінку керівництва для команд, які використовуються (тут awk, sortі uniq). Насправді, ви повинні це зробити зараз. Я почекаю.
Давайте почнемо поетапно виконувати етапи трубопроводу (це можна сміливо робити у власній системі 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 ... ]
Вихідний результат - це просто вміст сьомого поля з /etc/passwdфайлу. Це база даних (плоский текстовий файл), яка повідомляє системі, що таке оболонка для входу у кожного. Якщо ви хочете дізнатись більше про це, /etc/passwdпросто прочитайте його (це читається у всьому світі) та подивіться на сторінку керівництва (man 5 passwd).
Ознайомившись із цілим списком, ви можете зрозуміти, що таке популярні товари, але це не гарний формат для відповіді на це запитання, адже питання справді стосувалося поширеності неінтерактивних оболонок. Давайте порахуємо їх. Найпростіший спосіб зробити це - спочатку сортувати елементи:
~$ 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 ... ]
Ми можемо використовувати програму, uniqщоб показати нам лише унікальні елементи:
~ $ awk -F: '{print $ 7}' </ etc / passwd | сортувати | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin
Але зачекайте, це не корисно, скільки кожного там було? Давайте запитаємо uniq(прочитайте сторінку чоловіка!):
~$ 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
Це, звичайно, результат, який ми побачили у верхній частині відповіді. Давайте відсортуємо його ще раз, щоб побачити записи в порядку:
~$ 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
Зачекайте, що це не може бути правильним, 17 приходить до 1 і 5 після 23. Проблема полягає в тому, що елементи сортуються лексикографічно . Давайте попросимо sortїх сортувати за чисельністю та у зворотному порядку:
~$ 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
Я думаю, що це пояснює все в оригінальній відповіді. Якщо вам все ще незрозуміло, що стосується цих команд, ви можете прочитати сторінки керівництва. Якщо ви все ще не зрозуміли принципи того, що відбувається, може бути краще почати з того, щоб прочитати книгу (в Інтернеті чи на папері), що пояснює Unix та Linux.
telnet towel.blinkenlights.nlдля неінтерактивної оболонки для входу ;-)