2021-05-12 14:32:11
管道及I/O重定向
管道符"|"
管道符"|":前一個命令的輸出,作為後一個命令的輸入
命令1 | 命令2 | 命令3 | ...
# 輸出"hello,world."並將小寫轉換為大寫
[root@localhost ~]# echo "hello,world." | tr 'a-z' 'A-Z'
HELLO,WORLD.
# 顯示passwd檔案中按:分割的每行第一個部分並排序並將小寫轉換為大寫
[root@localhost ~]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
ADM
APACHE
BIN
DAEMON
DBUS
Fedora
I/O重定向
簡單的解釋就是捕捉一個檔案, 命令, 程式, 指令碼, 或者甚至是指令碼中的程式碼塊的輸出, 然後將這些輸出作為輸入傳送到另一個檔案, 命令, 程式, 或指令碼中。
標準輸入輸出
執行一個shell命令列時通常會自動開啟三個標準檔案,即標準輸入檔案(stdin),通常對應終端的鍵盤;標準輸出檔案(stdout)和標準錯誤輸出檔案(stderr),這兩個檔案都對應終端的螢幕。
進程將從標準輸入檔案中得到輸入資料,將正常輸出資料輸出到標準輸出檔案,而將錯誤資訊送到標準錯誤檔案中。
習慣上,標準輸入(standard input)的檔案描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。
I/O重定向符號
- cmd 1 | cmd 2 把 stdout 重定向到 cmd 2 的 shdin;
- cmd > file 把 stdout 或者 stderr 重定向到 file 檔案中;
- cmd >> file 把 stdout 或者 stderr 重定向到 file 檔案中(追加);
- cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中;
- cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中(追加);
- cmd < file >file2 cmd 命令以 file 檔案作為 stdin,以 file2 檔案作為 stdout;
- cat <>file 以讀寫的方式開啟 file;
- cmd < file cmd 命令以 file 檔案作為 stdin;
- cmd << delimiter Here document,從 stdin 中讀入,直至遇到 delimiter 分界符;
- cmd 1 | cmd 2 > file 把多個 stdout 重定向到 file 檔案中。
其中2>&1中的數位代表重定向檔案描述符,表示重定向 stderr 到 stdout 。
關閉檔案描述符
n<&-
#關閉輸入檔案描述符n.
0<&-
<&-
#關閉stdin.
n>&-
#關閉輸出檔案描述符n.
1>&-
>&-
#關閉stdout.
set
set -C:禁止對已經存在檔案使用覆蓋重定向:
強制覆蓋輸出,則使用 >|
set +C:關閉上述功能
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-07/153193.htm
相關文章