Linux shell 輸入 輸出重定向

2021-09-25 12:26:38 字數 1870 閱讀 2676

在linux shell中,可以通過輸入/輸出重定向的方式將標準輸入stdin、標準輸出stdout、標準錯誤輸出stderr重定向到檔案。下表總結了常用符號:

符號釋義

0標準輸入

1標準輸出

2標準錯誤輸出

<

輸入重定向

>

輸出重定向

<<

輸入追加重定向

>>

輸出追加重定向

<<<

輸入重定向到字串(僅限bash)

>>>

輸出重定向到字串(僅限bash)&合併

介紹兩個常用的命令

command

> 1.log 2>

&1

該命令把command的標準輸出和標準錯誤輸出同時寫到檔案1.log中.

其中"2>&1"的"2"表示標準錯誤輸出,"&"表示合併,"1"表示標準輸出.

command

>> 1.log 2>

&1

該命令把command的標準輸出和標準錯誤輸出以追加方式同時寫到檔案1.log中.

注意仍然是"2>&1"而不是"2>>&1".

舉個例子,在shell中執行

echo da_kao_la

# da_kao_la

會直接在命令列輸出.

如果將輸出重定向到檔案1.log

echo da_kao_la > 1.log
則此時命令列沒有輸出,輸出的內容跑到了1.log中

cat 1.log

# da_kao_la

追加方式與非追加方式的區別是,再次執行非追加的重定向

echo da_kao_la > 1.log
新的輸出會覆蓋老的輸出,1.log中只有一行"da_kao_la",而如果再次執行的是追加的重定向

echo da_kao_la >> 1.log
則1.log中會有兩行"da_kao_la",新的內容不會覆蓋老的內容

cat 1.log

# da_kao_la

# da_kao_la

嘗試一下合併標準輸出和標準錯誤輸出到同乙個檔案

ls not_found.php > 1.log 2>

&1 # not_found.php檔案不存在

cat 1.log # 標準輸出為空,只有標準錯誤輸出

# ls: cannot access not_found.php: no such file or directory

最後看乙個輸入重定向到字串的例子,編寫bash指令碼"1.sh",從字串按行讀入,合併成一行輸出

while

read line

doecho

$line

done

<<<

"aaa\nbbb\nccc\n"

命令列執行

bash 1.sh
命令列輸出

aaanbbbncccn
輸入/輸出重定向可以重定向到變數,例如

multiline=

"aaa\nbbb\nccc\n"

while

read line

doecho

$line

done

<<<

$multiline

這個指令碼的功能與上面乙個指令碼相同。

Linux shell的輸入輸出

echo echo命令可以顯示文字行或變數,或者把字串輸入到檔案 echo option string e 解析轉義字元 例如 echo e nimenhao nasfdsaf 列印發生換行 read語句可以從鍵盤或檔案的某一行文字中讀取資訊,並將其賦值給乙個變數 read var1 var2.若只...

Linux shell的標準輸入 輸出和錯誤

原文 1.檔案描述符 在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名 檔案檔案描述符 輸入檔案 標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 輸出檔案 標準輸出 1 預設是螢...

Linux shell的標準輸入 輸出和錯誤

1.檔案描述符 在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名 檔案檔案描述符 輸入檔案 標準輸入 0 預設是鍵盤,為0時是檔案或者其他命令的輸出 輸出檔案 標準輸出 1 預設是螢幕,為...