shell指令碼中/dev/null 2>&1詳解
1,可以將/dev/null看作"黑洞". 它非常等價於一個只寫檔案. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什麼也讀不到. 然而, /dev/null對命令列和指令碼都非常的有用.
首先shell中0代表標準輸入 ;1代表標準輸出;2代表標準錯誤輸出
用處:
禁止標準輸出. 1 cat $filename >/dev/null # 檔案內容丟失,而不會輸出到標準輸出.
禁止標準錯誤. 2>/dev/null 這樣錯誤資訊[標準錯誤]就被丟掉了.
2, 1>/dev/null 2>&1的含義
> 代表重定向到哪裡,例如:echo "123" > /home/123.txt
& 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
分二步解析:第一步 1>/dev/null 的意思就是禁止標準輸出,系統預設就是1標準輸出,所以可以這樣寫>/dev/null ;
第二步 2>&1 的意思就是把標準錯誤輸出重定向到標準輸出,由於禁止了標準輸出,所以也就不會輸出標準錯誤輸出。
那麼/dev/null 2>&1語句含義:
1>/dev/null 首先表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。
2>&1 接著,標準錯誤輸出重定向等同於 標準輸出,因為之前標準輸出已經重定向到了空裝置檔案,所以標準錯誤輸出也重定向到空裝置檔案。
command > file 2>file語義;
command > filecommand表示把標準輸出傳送到file中
2>file 表示把標準錯誤輸出也傳送給file
這樣就出現了file檔案通過管道訪問了2次,存在io效率
從IO效率上,command > file 2>file的效率要比/dev/null 2>&1的命令效率要低,所以在編寫shell指令碼的時候,較多的時候我們會用command > file 2>&1 這樣的寫法
相關文章
- Shell指令碼中的 /Dev/Null 用途指令碼devNull
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- ">/dev/null 2>&1 "是什麼意思devNull
- 理解 shell 指令碼中的常見用法: 2>&1指令碼
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- 詳解shell中source、sh、bash、./執行指令碼的區別指令碼
- Linux下" >/dev/null 2>&1 "相關知識說明LinuxdevNull
- 批次解壓shell指令碼指令碼
- Shell 指令碼中的exit狀態解釋指令碼
- shell指令碼學習筆記-1指令碼筆記
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- 主題 2 Shell工具和指令碼指令碼
- linux shell指令碼中 =~ 的作用Linux指令碼
- shell指令碼指令碼
- linux shell 指令碼語言教程(超詳細!)Linux指令碼
- nmap指令碼詳解指令碼
- shell指令碼中cd命令無效指令碼
- 如何呼叫python中的shell指令碼?Python指令碼
- 什麼是Shell指令碼?Shell指令碼在Linux運維工作中的地位!指令碼Linux運維
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- Linux Shell指令碼Linux指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- shell指令碼中不識別source命令指令碼
- /dev/null和標準*使用devNull
- shell 指令碼加密 | shc指令碼加密
- 執行shell指令碼指令碼
- Shell 指令碼語句指令碼
- 初識shell指令碼指令碼
- 【指令碼】shell語法指令碼
- shell 指令碼寫法:指令碼
- 如何加密shell指令碼加密指令碼
- shell指令碼總結指令碼
- 解決shell指令碼錯誤$’r’ command not found指令碼
- 執行 shell 指令碼 \r 問題解決指令碼
- RestCloud ETL解決shell指令碼引數化RESTCloud指令碼
- Linux shell中2>&1的含義Linux