管道符"|" 管道符"|":前一個命令的輸出,作為後一個命令的輸入 I/O重定向 簡單的解釋就是捕捉一個文件, 命令, 程式, 腳本, 或者甚至是腳本中的代碼塊的輸出, 然後將這些輸出作為輸入發送到另一個文件, 命令, 程式, 或腳本中。 標準輸入輸出 執行一個shell命令行時通常會自動打開三個標 ...
管道符"|"
管道符"|":前一個命令的輸出,作為後一個命令的輸入
命令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:關閉上述功能