理解輸入和輸出 重新導向錯誤訊息
ls -al badfile 2> test4 重新導向錯誤和資料
ls -al test test2 test3 badtest 2> test6 1> test7 #錯誤輸入到test6,正常資料顯示到test7 ls -al test test2 &> test8 #將標準錯誤和標準輸入都重新導向到test8
在指令碼中重新導向輸出 將文本輸出到標準錯誤中 echo "This is an error message" >&2 可以使用 exec 命令告訴shell指令碼在執行期間重新導向某個特定檔案描述符
echo "This is the start of the script";echo "now redirecting all output to another location";exec 1> testoutexec 2> testerrorecho "This output should go to the testout file";echo "This output should go to the testerror file" >&2;
在指令碼中重新導向輸入 exec命令允許將STDIN重新導向到Linux系統上的檔案中
file="/Users/chenhong/Desktop/shell_workspace/STD.sh";exec 0< $filecount=1while read linedo echo "Line $count:$line"; count=$[ $count + 1 ];done
建立自己的重新導向 可以使用exec命令來輸出分配檔案描述符
exec 3>testout # 也可以使用 exec 3>>testout 進行追加echo "This shoud output the STDOUT";echo "This shoud output the &3" >&3;
要關閉檔案描述符,將它重新導向到特殊符號&- exec 3>&-
列出開啟的檔案描述符 顯示當前進程的預設檔案描述符 lsof -a -p $$ -d 0,1,2
阻止命令輸出 shell輸出到null檔案的任何資料都不會儲存,這樣它們就都被丟掉了 ls -al > /dev/null 可以用它快速移除現有檔案中的資料而不用先刪除檔案再建立 cat /dev/null > testfile
記錄訊息 tee命令相當於管道的一個T型接頭。它將從STDIN過來的資料同時發給兩個目的地。一個目的地是STDOUT,另一個目的地是tee命令列所指定的檔案名稱 date | tee testout 預設情況下,tee每次都會覆蓋檔案,追加檔案,可以使用-a date | tee -a testout