M. *_*ley 22 command-line users
是否有一个用户友好的命令可以用来在 Ubuntu 系统的控制台中列出用户?
当我cat /etc/passwd
得到一个难以阅读的用户列表时。很高兴看到按字母顺序排列的列表,条目按列排列,组名在组 ID 旁边的括号中。
Nyk*_*kin 27
很好地输出 /etc/passwd 文件的好方法:
$ column -nts: /etc/passwd
Run Code Online (Sandbox Code Playgroud)
现在您可以对其进行排序:
$ column -nts: /etc/passwd | sort
Run Code Online (Sandbox Code Playgroud)
在最后一列中使用组名称(无括号):
$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort
Run Code Online (Sandbox Code Playgroud)
如果您在机器上具有 root 访问权限,则可以执行以下操作:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Run Code Online (Sandbox Code Playgroud)
成为 root 以读取影子文件。如果您想检查用户是否设置了密码(人类用户),您只需要 root 权限,否则您可以cat /etc/passwd
代替sudo grep ...
:
sudo
Run Code Online (Sandbox Code Playgroud)
只显示设置了密码的用户:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
Run Code Online (Sandbox Code Playgroud)
按用户名排序:
sort
Run Code Online (Sandbox Code Playgroud)
丢弃除用户名以外的所有信息:
cut -d: -f1
Run Code Online (Sandbox Code Playgroud)
遍历用户名并使用组信息丰富它:
while read user; do id $user; done
Run Code Online (Sandbox Code Playgroud)
将输入格式化为列:
column -ts' ,'
Run Code Online (Sandbox Code Playgroud)
使用vi查看结果:
vi '+set nowrap' -
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
Run Code Online (Sandbox Code Playgroud)
它的输出有点不同,但我把它作为练习留给读者,将这个答案中的两个部分组合成完全适合工作的东西。(你不就是爱sed
吗?)