用于打印没有 /sbin/nologin 作为 shell 的用户的命令

用于打印没有 /sbin/nologin 作为 shell 的用户的命令

给定 /etc/passwd 文件,什么命令可以仅打印没有 /sbin/nologin 作为 shell 的用户的登录名?

另外,在我的 /etc 目录中,我可以使用什么命令来计算以字母 's' 开头的文件数量?对这个有点新,谢谢!

答案1

要仅打印没有登录 shell 的用户,您只能在最简单的情况下使用 awk:

awk -F/ '$NF != "nologin"' /etc/passwd

这里我们使用-F/作为分隔符,然后'$NF =! "nologin"' where$NF is the last field of the line/row. The default action inawk` 被打印,所以它会打印整行。

s使用 可以轻松查找所有以 an 开头的文件find。在本例中为 GnuFind

find /etc/ -maxdepth 1 -type f -name 's*' -printf '%P\n'

这里我们使用 GNUfind来搜索/etc/路径,然后检查一级(没有子目录)。

-type f告诉 find 仅检查文件。 -name 's*不言自明 -printf '%P\n''%P'是一种 printf 格式。查看man find更多。

答案2

1. grep -v '/sbin/nologin' /etc/passwd|awk -F: '{print $1}'

2. ls s*|wc -w

或更好:

2. ls -l s*|wc -l

以避免文件名带有空格时出现错误

答案3

第一的:

grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

第二:

ls -ld /etc/s* | wc -l

相关内容