分布不同的贝壳

时间:2013-09-13 18:59:32

标签: linux shell command

在linux中找到的命令是什么? 所有用户使用的不同 shell的分发

4 个答案:

答案 0 :(得分:2)

getent passwd | awk -F: '{print $7}' | sort | uniq -c

getent命令转储密码数据库。通常这只是一个文件,/etc/passwd,但它可以来自其他来源;使用getent passwd而不是仅仅阅读/etc/passwd即可。

如果您的系统没有getent命令,请找出系统的等效命令(如果您的系统使用NIS,可能是ypcat passwd),或直接读取/etc/passwd文件如果你确定信息没有存储在其他地方。

awk命令从每一行抓取第7个以冒号分隔的字段,该字段是该帐户的登录shell。

sort | uniq -c打印每个shell的出现次数。如果您希望列表按降序排列,请添加| sort -rn

请注意,这会列出系统上所有帐户的登录shell,其中许多帐户实际上并不对应于用户。有多种方法可以过滤列表(通常是数字用户ID,第3个字段,从1000开始),但没有一种方法可以100%可靠。

答案 1 :(得分:0)

通常位于/etc/passwd内(但正如above answer所述,由getent passwd)给出;在某些系统上它可以通过NIS / YP,LDAP,......等...数据库(但也可以参见pam)。详细信息可在/etc/nsswitch.conf中配置(请参阅nsswitch.conf(5)手册页)。

此外,授权登录shell列在/etc/shells中(参见shells(5));你需要在那里添加一个shell的路径名,以便chsh更改它(参见chsh(1))。

答案 2 :(得分:0)

以root身份运行!这将为您提供用户名和登录shell。

grep -v "nologin" /etc/passwd | awk 'BEGIN{FS=":"}{print $1,$7}'

答案 3 :(得分:0)

你可以输出/ etc / passwd,awk out shell字段,grep -v你想要的任何东西,然后对它进行排序。像这样:

cat /etc/passwd | awk -F ":" '{print $7}' | grep -v "whatever" | sort | uniq -c

在我的Mac上(没有任何“真实”用户),这会导致

10没有shell,1个/ bin / sh,70个/ usr / bin / false和1个/ usr / sbin / uucico

据推测,在具有实际用户的系统上,有/ bin / sh,/ bin / ksh,/ bin / csh和/ bin / bash数量。