在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 預設是螢幕,為...