2015-10-15 154 views
1

考慮到所有具有id >= 1000的用戶都是非系統用戶,我們如何才能通過單個命令獲取這些用戶的列表?我們如何獲得Linux上的非系統用戶列表?

+0

約通用計算硬件和軟件的問題是題外話堆棧溢出,除非他們直接涉及主要用於編程的工具。您可以在[超級用戶](http://superuser.com)上獲得幫助。 –

+3

@ m.s。,這個問題被標記爲[bash]和[shell],並且對於帶有這些標籤的SO問題來說並不罕見或不適合。 「使用什麼命令來執行X」*是* bash'的編程問題。 –

回答

4

你需要得到其gid大於或等於1000使用此命令爲所有用戶:

awk -F: '($3>=1000)&&($1!="nobody"){print $1}' /etc/passwd 

如果你想系統的用戶(GID < 1000),這將是:

awk -F: '($3<1000){print $1}' /etc/passwd 
4

您可以使用awk此任務:

awk -F: '$3 >= 1000' /etc/passwd 

這將結腸分割/etc/passwd文件,然後如果現場3(用戶ID)大於或等於1000,它將打印整個/etc/passwd記錄。

如果你想獲得唯一的用戶名了這個名單則:

awk -F: '$3 >= 1000 {print $1}' /etc/passwd 

其中$ 1是etc/passwd的第一個字段是用戶名。

1

假設系統只識別本地用戶(即記錄在/etc/passwd中的那些用戶,而不是通過LDAP,NIS或Winbind等遠程服務進行驗證的用戶),則可以使用grepsedawk/etc/passwd中提取數據。 awk是最靈活的,但是怎麼樣用sed的解決方案:

sed -n '/^\([^:]\+\):[^:]\+:[1-9][0-9]\{3\}/ { s/:.*//; p }' /etc/passwd 
0

系統的用戶(應該是)那些/etc/passwd用的UID小於1000的實際數量僅僅是一個約定上市。非系統用戶不需要在那裏列出。你可以使用getentawk列表忽略"nobody"(也是慣例):

getent passwd |awk -F : '$3 >= 1000 && $3 < 65534' 
相關問題