4-16 Linux中的管道符

1、管道符用 | (一竖)表示。

2、管道符的作用:

  • 承上启下,把上一个命令的输出作为下一个命令的输入来执行。
  • 搭配 grep 实现过滤功能。

3、实操练习:

  • ①、ll /etc/ 列出 etc 目录下的内容,etc 目录下有很多内容,不便于阅读。那么,可以通过管道符配合 more 命令进行分页显示,便于阅读。
    ll /etc/ | more 是一个管道符使用的典型案例。前面 ll /etc/ 命令的输出作为后面 more 的输入,more 会把 ll /etc/ 的输出进行分页显示,便于阅读。
[root@localhost ~]# ll /etc/ | more
total 1076
-rw-r--r--.  1 root root     16 Mar  5  2021 adjtime
-rw-r--r--.  1 root root   1529 Apr  1  2020 aliases
-rw-r--r--.  1 root root  12288 Mar 22  2021 aliases.db
drwxr-xr-x.  2 root root    236 Mar 22  2021 alternatives
-rw-------.  1 root root    541 Aug  9  2019 anacrontab
-rw-r--r--.  1 root root     55 Aug  8  2019 asound.conf
drwxr-x---.  3 root root     43 Mar 22  2021 audisp
drwxr-x---.  3 root root     83 Mar 22  2021 audit
drwxr-xr-x.  2 root root     46 Apr  2  2021 bash_completion.d
-rw-r--r--.  1 root root   2853 Apr  1  2020 bashrc
drwxr-xr-x.  2 root root      6 Feb  3  2021 binfmt.d
-rw-r--r--.  1 root root     37 Nov 23  2020 centos-release
-rw-r--r--.  1 root root     51 Nov 23  2020 centos-release-upstream
drwxr-xr-x.  2 root root      6 Oct 13  2020 chkconfig.d
drwxr-xr-x.  2 root root     21 Mar 22  2021 cron.d
drwxr-xr-x.  2 root root     42 Mar 22  2021 cron.daily
-rw-------.  1 root root      0 Aug  9  2019 cron.deny
drwxr-xr-x.  2 root root     22 Mar 22  2021 cron.hourly
drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.monthly
--More--      ## <---- more 分页显示

②、利用管道符配合 grep,列出指定关键字的目录和文件。

  • 列出 etc 目录含 “ cron” 的目录和文件。
[root@localhost ~]# ll /etc/ | grep cron
-rw-------.  1 root root    541 Aug  9  2019 anacrontab
drwxr-xr-x.  2 root root     21 Mar 22  2021 cron.d
drwxr-xr-x.  2 root root     42 Mar 22  2021 cron.daily
-rw-------.  1 root root      0 Aug  9  2019 cron.deny
drwxr-xr-x.  2 root root     22 Mar 22  2021 cron.hourly
drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.monthly
-rw-r--r--.  1 root root    457 Oct 19 15:10 crontab
drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.weekly
[root@localhost ~]# 

  • 列出 etc 目录含 “ cron” 的目录,目录的特征是前面以 d 开头。所以,过滤了所有含 “ cron” 的目录出来后,再用一个管道符进行过滤所有 d 开头的文件。(grep ' ^d ',^ 符号代表行首的位置。 ' ^d ',行首为 d 开头)。
[root@localhost ~]# 
[root@localhost ~]# ll /etc/ | grep cron | grep '^d'
drwxr-xr-x.  2 root root     21 Mar 22  2021 cron.d
drwxr-xr-x.  2 root root     42 Mar 22  2021 cron.daily
drwxr-xr-x.  2 root root     22 Mar 22  2021 cron.hourly
drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.monthly
drwxr-xr-x.  2 root root      6 Jun 10  2014 cron.weekly
[root@localhost ~]# 

  • 列出 etc 目录含 “ cron” 的文件,文件的特征是前面以 - 开头。所以,过滤了所有 “ cron” 的目录出来后,再用一个管道符进行过滤所有 - 开头的文件。(grep ' ^- ',^ 符号代表行首的位置。' ^- ',行首为 - 开头 )。
[root@localhost ~]# ll /etc/ | grep cron | grep '^-'
-rw-------.  1 root root    541 Aug  9  2019 anacrontab
-rw-------.  1 root root      0 Aug  9  2019 cron.deny
-rw-r--r--.  1 root root    457 Oct 19 15:10 crontab
[root@localhost ~]# 

## 方法 2:目录取反,因为除了目录剩下就是文件。取反用 grep -v
[root@localhost ~]# ll /etc/ | grep cron | grep -v '^d'
-rw-------.  1 root root    541 Aug  9  2019 anacrontab
-rw-------.  1 root root      0 Aug  9  2019 cron.deny
-rw-r--r--.  1 root root    457 Oct 19 15:10 crontab
[root@localhost ~]# 

③、管道符还经常配合 ps aux 查看进程使用。

  • 列出所有 cron 进程。
[root@localhost ~]# 
[root@localhost ~]# ps aux | grep cron
root        594  0.0  0.0 126384  1664 ?        Ss   09:05   0:00 /usr/sbin/crond -n
root       1836  0.0  0.0 112812   972 pts/0    R+   16:23   0:00 grep --color=auto cro
[root@localhost ~]# 

## cron 进程输出重定向到 cron.txt 文件
[root@localhost ~]# ps aux | grep cron > cron.txt
[root@localhost ~]# 
[root@localhost ~]# cat cron.txt 
root        594  0.0  0.0 126384  1664 ?        Ss   09:05   0:00 /usr/sbin/crond -n
root       1838  0.0  0.0 112812   972 pts/0    R+   16:26   0:00 grep --color=auto cron
[root@localhost ~]# 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容