「其他」手指(/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 callsbash 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 具有分割字串的
功能(在本例中,您將使用第五個欄位作為字串,並使用分隔符號)。從其他一些關於它的答案中獲得靈感[split(),2] ....

答案3

您可以只使用兩個巢狀剪切命令:

  • 首先以「:」作為字段分隔符,剪切字段1&5;和
  • 第二個以「,」作為字段分隔符,剪切字段 1 & 5-N;

相關內容