【鳥哥 Linux 10.5】數據流重導向
【鳥哥 Linux 10.5】數據流重導向
什么是數據流重導向?
-
執行命令的時候會用標準輸入讀取必需數據,如果程序運行正確,使用標準輸出輸出結果,如果程序運行錯誤,使用標準錯誤輸出輸出錯誤。
-
使用數據流重導向去分流不同的數據。
使用數據流重導向來分流不同輸出
- 必須使用特殊字符來標識不同的流。
-
標準輸入(stdin),代碼為0,使用<或者<<
-
標準輸出(stdout),代碼為1,使用>或者>>(實際上是1>或者1>>,這里的1可以省略)
-
標準錯誤輸出(stderrout),代碼為2,使用2>或者2>>
輸出重定向的例子
ll / 1>> ~/rootfile # 將ll / 標準輸出追加到~/rootfile中
ll / >> ~/rootfile # 將ll / 標準輸出追加到~/rootfile中
ll / 2> ~/rootfile # 將ll / 標準錯誤輸出覆蓋到~/rootfile中
# 將find /home -name .bashrc 標準輸出覆蓋到list_right中
# 將find /home -name .bashrc 標準錯誤輸出覆蓋到list_error中
find /home -name .bashrc > list_right 2> list_error
# 將多個輸出重定向到同一個文件
# 將find / -name .bashrc 標準輸出覆蓋到list文件中
# 將find / -name .bashrc 標準錯誤輸出重定向到標準輸出(1號)中,由于標準輸出已經重定向到list中了,所以標準錯誤輸出也會輸出到list文件中
find / -name .bashrc 1> list 2>&1
- 上例中2>&1是指將標準錯誤輸出重定向到標準輸出,那么當然也可以反過來使用1>&2將標準輸出重定向到標準錯誤輸出
/dev/null黑洞文件
- 吃掉所有重定向到該文件的數據流
輸入的重定向
- 來看一個cat快速創建文件的例子:
# 使用cat來快速建立文件
cat > catfile # 執行之后輸入需要寫入文件的內容,^d結束
- 以下內容截取自cat命令的manpage
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
- 當cat不接收文件的時候,會接收stdin作為輸出,將這些輸出重定向到catfile中,相當于通過鍵盤輸入快速創建了一個文本文件。
- 再來看一個例子:
#使用文件來快速創建相同內容的文件
cat > catfile < ~/.bashrc
- 以上腳本表達了以下意思:
- cat的標準輸出被重定向到catfile中
- cat的標準輸入被重定向到~/.bashrc中
- 綜合來說,cat接收~/.bashrc的文件內容作為輸入,并將內容輸出到catfile中。
- 最后一個例子:
# 通過<<指定文件結束符
cat > catfile << "eof" # 這下不需要^d了,輸完所有內容,輸入一個eof即可結束
命令執行的邏輯分隔符
| 指令 | 說明 |
|---|---|
| cmd1 && cmd2 | cmd1執行正確,才執行cmd2 |
| cmd1 | | cmd2 |
| cmd1;cmd2 | cmd1和cmd2無關聯的執行 |
- 需要注意的是,上述指令執行正確與否的判斷都是根據$?這個回傳值來的

浙公網安備 33010602011771號