在shell編寫了乙個定期備份最近半年資料的shell指令碼,結果之前備份的目錄沒刪掉
我就在想 問題應該出在rm -rf上,因為rm 預設開啟了alias保護,等同於rm -i,所以在刪除之前會提示是否刪除,因為是**自動的,所以會跳過刪除這個步驟
現在想要自動刪除,必須想辦法把rm -rf 自動刪除開啟也就是通過
unalias rm,但是現在問題出現了,如果alias表裡頭沒有rm,那麼會提示-bash: unalias: rm: not found,反倒影響程式執行。
如果現在要想辦法,把錯誤輸出抑制,想到輸出重定向到/dev/null
unalias rm > /dev/null 2>&1
搞定原文解釋如下:
shell中可能經常能看到:>/dev/null 2>&1
命令的結果可以通過%>的形式來定義輸出
/dev/null 代表空裝置檔案
> 代表重定向到**,例如:echo "123" > /home/123.txt
1 表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於"1>/dev/null"
2 表示stderr標準錯誤
& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
那麼本文標題的語句:
1>/dev/null 首先表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。
2>&1 接著,標準錯誤輸出重定向等同於 標準輸出,因為之前標準輸出已經重定向到了空裝置檔案,所以標準錯誤輸出也重定向到空裝置檔案。
Linux的標準輸出 標準錯誤輸出 nohup
1 在bash中標準輸出可以用1來表示 通常來說這個1可以省略 如.dev null 和 1 dev null 是乙個意思 2 在bash中標準錯誤輸出可以用2來表示。例子 test.py 內容如下 bin env python3.5 import sysif name main sys.stdou...
linux中的標準輸入 標準輸出 標準錯誤
在shell中執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。輸入檔案 標準輸入 0 預設是鍵盤輸入,也可以是檔案或其他命令的輸出 輸出檔案 標準輸出 1 預設是螢幕,也可以是檔案 錯誤輸出檔案 標準錯誤 2 預設是螢幕,也可以是檔案 linux系統中實際上有12個檔案...
linux標準輸入輸出錯誤輸出
linux shell 環境中支援輸入輸出重定向,用符號 和 來表示。0 1和2分別表示標準輸入 標準輸出和標準錯誤資訊輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2 a.txt 表示將錯誤資訊輸出到檔案a.txt中。同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準...