管道命令符「|」的作用是將前乙個命令的標準輸出當作後後乙個命令的標準輸入,格式為「命令a|命令b」。
舉個例子:
理清思路:
找出被限制登陸使用者的命令是:grep 「/sbin/nologin」 /etc/passwd
統計文字行數的命令則是:wc -l
現在要做的是就是將搜尋命令的輸出值傳遞給統計命令,其實只要把管道符夾在中間就可以了。
[root@linux ~]# grep "/sbin/nologin" /etc/passwd | wc -l
用翻頁的形式檢視/etc目錄中有那些檔案:
[root@linuxprobe ~]# ls -l /etc/ | more
注意:管道命令符不只可以使用一次,還可以:命令1|命令2|命令3
在學習標準輸入輸出重定向前,我們先看乙個簡單的演示吧:
檢視linuxprobe目錄的資訊:
[root@linux ~]# ls linuxprobe/
檢視******目錄的資訊:
[root@linux ~]# ls ******/
ls: cannot access ******: no such file or directory
剛剛我們先檢視了乙個名為linuxprobe目錄內的檔案,後又嘗試檢視名為」******」目錄內的檔案,顯示該目錄並不存在。
雖然好像命令都執行成功了,但其實有所差異,前者執行後返回的是標準輸出,而後者執行失敗返回的是錯誤輸出。
標準輸入(stdin,檔案描述符為0):預設從鍵盤輸入,為0時表示是從其他檔案或命令的輸出。
標準輸出(stdout,檔案描述符為1):預設輸出到螢幕,為1時表示是檔案。
錯誤輸出(stderr,檔案描述符為2):預設輸出到螢幕,為2時表示是檔案。
對於輸出重定向符有這些情況:
符號 作用
命令 > 檔案 將標準輸出重定向到乙個檔案中(清空原有檔案的資料)
命令 2> 檔案 將錯誤輸出重定向到乙個檔案中(清空原有檔案的資料)
命令 >> 檔案 將標準輸出重定向到乙個檔案中(追加到原有內容的後面)
命令 2>> 檔案 將錯誤準輸出重定向到乙個檔案中(追加到原有內容的後面)
命令 >> 檔案 2>$1 將標準輸出與錯誤輸出共同寫入到檔案中(追加到原有內容的後面)
對於輸入重定向有這些情況:
符號 作用
命令 < 檔案 將檔案作為命令的標準輸入
命令 << 分界符 從標準輸入中讀入,直到遇見「分界符」才停止
命令 < 檔案1 > 檔案2 將檔案1作為命令的標準輸入並將標準輸出到檔案2
幾個例子:
將man命令的幫助文件寫入到/root/man.txt中:
[root@linux ~]# man bash > /root/man.txt
向readme.txt檔案中寫入一行文字:
[root@linux ~]# echo "welcome to linuxprobe.com" > readme.txt
向readme.txt中追加一行文字:
[root@linux ~]# echo "quality linux learning materials" >> readme.txt
檢視readme.txt中的內容:
[root@linux ~]# cat readme.txt
welcome to linuxprobe.com
quality linux learning materials
把readme.txt檔案作為輸入重定向給wc -l命令來計算行數,命令等同於「cat readme.txt | wc -l」。
[root@linux ~]# wc -l < readme.txt
用」ls」命令檢視檔案資訊,若檔案不存在則將報錯資訊輸出到/root/stderr.txt中:
[root@linux ~]# ls linuxprobe 2> /root/stderr.txt
-rw-r--r--. 1 root root 0 mar 1
13:30 linuxprobe
檔案為空,代表上面命令並沒有報錯:
[root@linux ~]# cat /root/stderr.txt
將檢視******目錄命令的錯誤資訊輸出到/root/stderr.txt檔案中:
[root@linux ~]# ls ****** 2> /root/stderr.txt
檢視到stderr.txt檔案中儲存的ls命令報錯資訊:
[root@linux~]# cat /root/stderr.txt
ls: cannot access ******: no such file or directory
因為」linuxprobe」的檔案確實存在,所有沒有報錯資訊,但」******」檔案是不存在的,所以則將報錯資訊輸出到了指定的檔案。
Linux重定向 管道符
輸出重定向 file 重新定向正確輸出到file中 會覆蓋原檔案 2 file 重新定向錯誤輸出到file中 會覆蓋原檔案 file 重新定向所有輸出到file中 會覆蓋原檔案 file 清空file 重新定向會覆蓋原檔案內容 示例 find etc name passwd file 定向正確輸出到...
linux 管道符 輸出重定向
1 輸出重定向 ll a.txt 將 ll的結果寫入到a.txt 2 管道符 ls la grep h 這條命令的理解為 ls la 的結果作為gerp h 的結果 gerp 是強大的文字搜尋工具 他能使用正規表示式搜尋,grep 格式 主要引數 grep c 只輸出匹配的計數 grep i 不區分...
重定向和管道符
重定向和管道符 1.重定向 程式 指令 資料 命令 變數 在程式中,資料如何輸入?如何輸出?資料輸入 鍵盤 標準輸入,但並不是唯一輸入方式 stdin echo 123456 passwd stdin username 例如 功能新增使用者 useradd.sh txt文字文件1000個使用者 us...