
Я пытаюсь собрать единую команду, которая будет отображать оболочку по умолчанию каждого пользователя. Изучая, я в основном могу найти команды для изменения оболочки по умолчанию, например, chsh -s /bin/ksh
но не для выполнения текущей задачи.
Кто-нибудь знает, как это можно сделать на CentOS?
решение1
Другой способ сделать это
getent passwd | cut -d: -f1,7
решение2
Вы можете проанализировать /etc/passwd
файл, содержащий имя пользователя и список оболочек входа, а также другую важную информацию, касающуюся всех учетных записей пользователей системы.
Имя пользователя хранится в :
отдельном первом поле, а оболочка входа в систему — в седьмом (последнем) поле.
Поэтому вы можете использовать awk
для печати полей небольшое форматирование между ними для красоты:
awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
Если вы используете такие сервисы, ldap
которые не используют локальную файловую систему, вы можете использовать getent passwd
следующую команду nsswitch
, чтобы получить информацию, а затем использовать awk
ее:
getent passwd | awk -F':' '{ print $1 " " FS " " $NF }'
Пример:
% awk -F':' '{ print $1 " " FS " " $NF }' /etc/passwd
root : /bin/bash
daemon : /usr/sbin/nologin
bin : /usr/sbin/nologin
sys : /usr/sbin/nologin
sync : /bin/sync
games : /usr/sbin/nologin
man : /usr/sbin/nologin
lp : /usr/sbin/nologin
mail : /usr/sbin/nologin
решение3
Эта информация хранится в /etc/passwd:
cut -d: -f1,7 /etc/passwd