2016-07-06 132 views
2

我在shell腳本文件中遇到了代碼行。cd「some path」>& - 是什麼意思?

cd "some path" >&- 

任何人都可以幫助找到它的含義嗎?

+0

'man bash'搜索重複文件描述符和移動文件描述符 – xxfelixxx

+0

有趣的是,bash手冊頁(至少在我的版本中)似乎沒有定義此構造的含義,但AFIK表示stdout已關閉爲這個命令。你可以用'echo xxxx> &-';來試試它,因爲'echo'想要寫入標準輸出並且這個文件描述符是關閉的,bash會抱怨一個錯誤信息。然而,'cd'不會寫入標準輸出,如果它會,你會得到一個錯誤信息,所以我不太明白這個結構的原因。 – user1934428

+1

(僅供參考):** cd'不寫入'stdout' **這是** NOT ** true。試試這個:'cd〜; CDPATH = /; cd usr>& - '如果'cd'通過'CDPATH'路徑,目標目錄將寫入'stdout'。這種CDPATH機制並不常用,但值得注意。 – anishsane

回答

2

標準輸出已關閉。請參閱Redirections(複製文件描述符)。這在您的示例中沒有任何意義,因爲cd無論如何都不會寫入標準輸出

+2

另外,我不會建議關閉'stdout' /'stderr'。如果進程試圖寫入這些文件描述符(例如'ls>& - '),它會給你錯誤,如'ls:write error:Bad file descriptor'。我寧願建議將這兩個FD重定向到'/ dev/null' – anishsane

+3

** cd'不會寫入'stdout' **這是** NOT ** true。試試這個:'cd〜; CDPATH = /; cd usr>& - '如果'cd'通過'CDPATH'路徑,那麼目標目錄被寫入'stdout'。這種CDPATH機制並不常用,但值得注意。 – anishsane