Linux標準錯誤輸出

2021-07-05 15:28:03 字數 785 閱讀 8020

在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中。同時,還可以在這三個標準輸入輸出之間實現重定向,比如將錯誤資訊重定向到標準...