linux中的管道符與重定向

2021-08-10 21:29:52 字數 2585 閱讀 2850

管道命令符「|」的作用是將前乙個命令的標準輸出當作後後乙個命令的標準輸入,格式為「命令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...