5

в файле /etc/passwd у нас есть так называемые GECOS fields (что означает "Комплексная операционная система General Electric"), то есть:

username:password:userid:groupid:gecos:home-dir:shell 

Где GECOS делятся на:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

И Others делятся на столько запятых, сколько захотите:

:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:

На страницах man chfn можно прочитать:

Другое поле используется для хранения учетной информации, используемой другими приложениями.

Теперь, для разработчика приложений (меня интересуют C language , system calls и / или bash script), какой лучший способ получить эту информацию?

А учитывая только среду Bash , учитывая, что команда finger не может отображать others поля (или, по крайней мере, я не вижу как), какие другие команды могут это делать? Я знаю, что chfn не только показывает, но и позволяет их менять. Что если нужно просто вывести его на стандартный stdout?

2 ответа2

2

Лучший способ, который я нашел, это использовать getent потому что он будет работать с LDAP/NIS или другими методами не локальных пользователей.

getent passwd $UID| awk -F ":" '{print $5}'
1

Например, в скрипте bash вы можете напечатать пятое поле файла /etc/passwd с помощью awk/gawk:

awk -F ":" '{print $5}' /etc/passwd

Опция -F fs использует fs для разделителя поля ввода (в данном случае : .
Вы можете прочитать больше, например, на домашней странице GNU awk [ 1 ] .
В Awk есть функция split() для разделения строки (где в этом случае вы будете использовать 5-е поле в качестве строки , а разделитель - в). Возьмите вдохновение от какого-то другого ответа об этом [ 2 ] ....

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .