管道 命令符的作用也可以用一句话概括为“ 把前一个命令原本要输出到屏幕的信息当作后一个命令的标准输入”。
把 grep 搜索命令的输出值传递给 wc 统计命令,即把原本要输出到屏幕 的用户信息列表再
交给 wc 命令作进一步的加工,因此只需要把管道符放到两条命令之间即 可,具体如下:
[root@rhel-8 ~]# grep /sbin/nologin /etc/passwd | wc -l41
如用翻页的形式查看/etc 目录中的文件列表及属性信息
[root@rhel-8 ~]# ls -l /etc/ | moretotal 1348-rw-r--r--. 1 root root 44 Nov 1014:03 adjtime -rw-r--r--. 1 root root 1518 Sep 102018 aliases drwxr-xr-x. 3 root root 65 Nov 915:43 alsa --More--
在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成 为一个非常致命的缺陷。通过把管道符和 passwd 命令的--stdin 参数相结合,可以用一条命令 来完成密码重置操作:
[root@rhel-8 ~]# echo "123456" | passwd --stdin rootChanging password for user root. passwd: all authentication tokens updated successfully.
输入ps aux 命令后屏幕信息呼呼闪过,根本找不到有用的 信息。现在也可以将ps、grep、管道符三者结合到一起使用了。下面搜索与 bash 有关的进程信息:
[root@rhel-8 ~]# ps aux | grep abshroot 62370.0 0.0 12112964 pts/0 S+19:24 0:00 grep--color=auto absh
如果需要将管道符处理后的结果既输出到屏幕,又同时写入到文件中,则可 以与 tee 命令结合使用。
下述命令将显示系统中所有与 bash 相关的进程信息,并同时将输出到屏幕和文件中:
[root@rhel-8 ~]# ps aux | grep bash | tee test.txtroot 9540.0 0.0 255122624 ? S 10:37 0:00 /bin/bash /usr/sbin/ksmtuned root 26850.0 0.1 266725584 pts/0 Ss 12:39 0:00 -bashroot 62580.0 0.0 121121064 pts/0 R+19:26 0:00 grep--color=auto bashroot 62590.0 0.0 266721892 pts/0 D+19:26 0:00 -bash[root@rhel-8 ~]# cat test.txtroot 9540.0 0.0 255122624 ? S 10:37 0:00 /bin/bash /usr/sbin/ksmtuned root 26850.0 0.1 266725584 pts/0 Ss 12:39 0:00 -bashroot 62580.0 0.0 121121064 pts/0 R+19:26 0:00 grep--color=auto bashroot 62590.0 0.0 266721892 pts/0 D+19:26 0:00 -bash