“其他”手指(/etc/passwd 中的 GECOS 字段)

“其他”手指(/etc/passwd 中的 GECOS 字段)

在文件中/etc/passwd我们有所谓的GECOS fields(代表“通用电气综合操作系统”),即:

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

答案1

我发现最好的方法是使用,getent因为它可以与 LDAP/NIS 或非本地用户的其他方法一起使用

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

答案2

/etc/passwd例如,在 bash 脚本中,您可以使用 awk/gawk打印文件的第五个字段:

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

该选项-F fs使用 fs 作为输入字段分隔符(在本例中为:)。
例如,您可以在 GNU awk 主页上阅读更多内容 [1]。Awk具有拆分字符串的
功能(在这种情况下,您将使用第 5 个字段作为字符串,并使用作为分隔符)。从其他一些关于它的答案中获取灵感[split(),2] ....

答案3

您只需使用两个嵌套的剪切命令:

  • 首先以“:”作为字段分隔符,剪切字段 1 和 5;然后
  • 第二行以“ ,”作为字段分隔符,剪切字段1&5-N;

相关内容