放在>後面的&,表示重定向的目標不是一個文件,而是一個文件描述符,內置的文件描述符以下.net
1 => stdout 2 => stderr 0 => stdinblog
換言之 2>1 表明將stderr重定向到當前路徑下文件名爲1的regular file中,而2>&1表明將stderr重定向到文件描述符爲1的文件(即/dev/stdout)中,這個文件就是stdout在file system中的映射get
而&>file是一種特殊的用法,也能夠寫成>&file,兩者的意思徹底相同,都等價於it
file 2>&1file
此處&>或者>&視做總體,分開沒有單獨的含義command
若是但願執行某個命令,但又不但願在屏幕上顯示輸出結果,那麼能夠將輸出重定向到 /dev/null:文件讀取
$ command > /dev/nullqq
/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;若是嘗試從該文件讀取內容,那麼什麼也讀不到。可是 /dev/null 文件很是有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。重定向
若是但願屏蔽 stdout 和 stderr,能夠這樣寫:di
$ command > /dev/null 2>&1