1. 程式人生 > >Linux每天學習一個命令之管道命令(pipe)

Linux每天學習一個命令之管道命令(pipe)

之前學習命令的時候使用了管道命令,只知道如何使用,不是十分清楚其使用規則,決定學習總結一下管道的使用 什麼是管道管道就是用 | 連線兩個命令,以前面一個命令的標準輸出作為後面命令的標準輸入,與連續執行命令是有區別的,值得注意的管道對於前一條命令的標準錯誤輸出沒事有處理能力的
下面來看些例子: [root@localhost ~]# find -name anaconda-ks.cfg | ls -al總用量44dr-xr-x---.7 root root 409642808:07.dr-xr-xr-x.17 root root 40964322:45..-rw-------.1 root root 16564322:45 anaconda-ks.cfg-rw-------.1 root root
34842808:31.bash_history
-rw-r--r--.1 root root 1812292013.bash_logout-rw-r--r--.1 root root 17612292013.bash_profile-rw-r--r--.1 root root 17612292013.bashrcdrwx------.4 root root 2942619:09.cachedrwxr-xr-x.3 root root 1742619:09.config-rw-r--r--.1 root root 10012292013.cshrcdrwx------.3 root root
244322:48.dbus
-rw-r--r--.1 root root 17044322:49 initial-setup-ks.cfgdrwxr-xr-x.2 root root 642619:09 perl5drwxr-xr-x.3 root root 614322:52.subversion-rw-r--r--.1 root root 12912292013.tcshrc-rw-------.1 root root 6642619:09.xauthLT2NdF [root@localhost ~]# cat anaconda-ks.cfg | less#version=RHEL7
# System authorization informationauth --enableshadow --passalgo=sha512# Use CDROM installation mediacdrom# Use graphical installgraphical# Run the Setup Agent on first bootfirstboot --enableignoredisk --only-use=sda# Keyboard layoutskeyboard --vckeymap=cn --xlayouts='cn'# System languagelang zh_CN.UTF-8# Network informationnetwork --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=autonetwork --hostname=localhost.localdomain# Root passwordrootpw --iscrypted $6$IuiLG5eDPq.dOrjL$mzQSQVgGMuN8xXQFlp4dhgGdRca767dDviMhNkY6TGYkza.O7LPE1I0D5XrjzcGp3trNfruSih3jvmQ/qQTfA0# System timezone 從上面的兩個命令結果可以看出,ls命令沒有把前面命令的標準輸出作為自己的標準輸入,而是直接執行ls命令;而less命令把前面命令的標準輸出作為自己的標準輸入。這是因為每個管道後面接的命令 必須能夠接收標準輸入的資料,而ls,cp,mv命令不能接收標準輸入的資料。把管道的用法總結兩條規則如下: 管道命令僅會處理標準輸出的資料,而對於標準錯誤輸出則會忽略 管道後名所接的命令必須能夠接受標準輸入的資料才行