正確輸出如下,其他輸出為錯誤輸出
以非root用戶執行以下操作:
find /etc -name passwd > file
“ > ”符號會覆蓋掉file文件原有的內容, 要想向file文件追加內容,使用“ >> ”符號
find /etc -name passwd >> file
find /etc -name passwd 2> file
find /etc -name passwd 2>> file
find /etc -name passwd &> file
find /etc -name passwd &>> file
所謂”改邪歸正”,即,2>&1,將標准錯誤輸出2重定向到標准輸出中,”2>”就是標准錯誤輸出,”&”是為了讓bash將1解釋成標准輸出而不是文件名字為1的文件。
管道符號“ | ”,其作用是,在前一個命令的基礎上,在交給下一個命令進一步處理(前面的命令的輸出當作後面的命令輸入)
注:管道只允許正確的輸出通過
> /dev/null 2>&1含義:
首先表示標准輸出重定向到空設備文件,接著,標准錯誤輸出重定向標准輸出,因為之前標准輸出已經重定向到空設備文件,所以標准錯誤輸出也重定向到空設備文件,於是,管道什麼也沒有通過
2>&1 > /dev/null 含義:
首先,標准錯誤輸出重定向標准輸出,再次之前標准輸出並沒有重定向,所以標准錯誤重定向為的標准輸出被“忽略”,然後,標准輸出重定向到空設備文件,於是,通過管道的就是之前被剩下的輸出