Лучший способ, который я нашел, это использовать, getent
потому что он будет работать с LDAP / NIS или другими методами не локальных пользователей.
getent passwd $UID| awk -F ":" ''
в файле /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
?
Лучший способ, который я нашел, это использовать, getent
потому что он будет работать с LDAP / NIS или другими методами не локальных пользователей.
getent passwd $UID| awk -F ":" ''
Например, в скрипте bash вы можете напечатать пятое поле файла /etc/passwd
с помощью awk / gawk:
awk -F ":" '' /etc/passwd
Опция -F fs
использует fs для разделителя поля ввода (в данном случае :
).
Вы можете прочитать больше, например, на домашней странице GNU awk [ 1 ] .
В Awk есть функция split()
разделения строки (где в этом случае вы будете использовать 5-е поле в качестве строки и ,
разделитель в качестве). Возьмите insipiration от какого - то другого ответа о нем [ 2 ] ... .