| 还记得Linux系统的口令文件吗?在这个文件中,所有的字段都是以:分隔的。有时可能只想知道某些用户登录时运用的shell,可以运用下列组合命令。在这个组合命令中,egrep命令从 /etc/passwd 文件中抽取包含goddog的数据行,之后将egrep命令的结果通过管道送给awk命令。awk命令把冒号看成字段的分隔符并将列出第1个(用户名)和第7个字段(登录时的shell),同时还将在显示结果中加入一些描述信息以帮助阅读和理解。 goddog@ubuntu:~$ egrep 'goddog' /etc/passwd | awk -F: '{ print $1 " has "$7" as loggin shell." }' goddog has /bin/bash as loggin shell. 如果有一天,boss问你现在咱们公司Linux系统上最流行的shell是哪个?有多少人在运用这个shell?现在你就完全不用调查所有的用户了,命令如下: goddog@ubuntu:~$ awk -F: '{ print $7 }' /etc/passwd | sort | uniq -c 2 /bin/bash 23 /bin/false 1 /bin/sync 16 /usr/sbin/nologin 如果想知道哪些用户在登录时是存放在/bin 目录中以及这个shell的名字,命令如下: goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1" "$7 }' root /bin/bash sync /bin/sync …… 可是在上例中有一个名为sync的用户运用的是 /bin/sync使用程序。你不想让他出现在显示结果中,于是,你对命令进行了修改,将以上命令的结果通过管道送给sed命令,并由sed命令删除所有包含sync字符串的数据行。命令如下: goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1" "$7 }' | sed '/sync/d' root /bin/bash systemd-network /bin/false …… 虽然去掉了sync用户的数据行,但是显示结果却没有了顺序,因此可以将这个结果通过管道送给sort命令进行排序,命令如下: goddog@ubuntu:~$ grep /bin/ /etc/passwd | awk -F: '{ print $1 " " $7 }' | sed '/sync/d' | sort _apt /bin/false avahi-autoipd /bin/false …… 以上所有例子告诉我们这样一个事实,那就是编程并不需要一步到位,而是一步步加以完善的。开发大型软件也是一样,许多软件在刚刚发行时,bugs满天飞,但是厂家照样卖,然后是一边卖一边改进。 |
|Archiver|手机版|家电维修论坛
( 蜀ICP备19011473号-4 川公网安备51102502000164号 )
GMT+8, 2026-1-13 17:13 , Processed in 0.195360 second(s), 17 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.