Linux每天学习一个命令之管道命令(pipe)

来源:互联网 发布:mac git 分支重命名 编辑:程序博客网 时间:2024/05/17 02:32
之前学习命令的时候使用了管道命令,只知道如何使用,不是十分清楚其使用规则,决定学习总结一下管道的使用

什么是管道管道就是用 | 连接两个命令,以前面一个命令的标准输出作为后面命令的标准输入,与连续执行命令是有区别的,值得注意的管道对于前一条命令的标准错误输出没事有处理能力的



下面来看些例子:
[root@localhost ~]# find -name anaconda-ks.cfg | ls -al
总用量 44
dr-xr-x---. 7 root root 4096 4 28 08:07 .
dr-xr-xr-x. 17 root root 4096 4 3 22:45 ..
-rw-------. 1 root root 1656 4 3 22:45 anaconda-ks.cfg
-rw-------. 1 root root 348 4 28 08:31 .bash_history
-rw-r--r--. 1 root root 18 12 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 12 29 2013 .bashrc
drwx------. 4 root root 29 4 26 19:09 .cache
drwxr-xr-x. 3 root root 17 4 26 19:09 .config
-rw-r--r--. 1 root root 100 12 29 2013 .cshrc
drwx------. 3 root root 24 4 3 22:48 .dbus
-rw-r--r--. 1 root root 1704 4 3 22:49 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 4 26 19:09 perl5
drwxr-xr-x. 3 root root 61 4 3 22:52 .subversion
-rw-r--r--. 1 root root 129 12 29 2013 .tcshrc
-rw-------. 1 root root 66 4 26 19:09 .xauthLT2NdF

[root@localhost ~]# cat anaconda-ks.cfg | less
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
 
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
# System language
lang zh_CN.UTF-8
 
# Network information
network --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# Root password
rootpw --iscrypted $6$IuiLG5eDPq.dOrjL$mzQSQVgGMuN8xXQFlp4dhgGdRca767dDviMhNkY6TGYkza.O7LPE1I0D5XrjzcGp3trNfruSih3jvmQ/qQTfA0
# System timezone

从上面的两个命令结果可以看出,ls命令没有把前面命令的标准输出作为自己的标准输入,而是直接执行ls命令;而less命令把前面命令的标准输出作为自己的标准输入。这是因为每个管道后面接的命令
必须能够接收标准输入的数据,而ls,cp,mv命令不能接收标准输入的数据。把管道的用法总结两条规则如下:

管道命令仅会处理标准输出的数据,而对于标准错误输出则会忽略
管道后名所接的命令必须能够接受标准输入的数据才行

0 0