試圖用google搜索這個,但命令被稱爲'which',這有點棘手!`which`忽略重定向的輸出
我的問題是這樣的:我試圖重定向的'哪個'命令的輸出,以便它沉默,但它似乎忽略我的重定向。示例:
#> which foo 2>&1 >/dev/null
/usr/bin/which: no foo in <my PATH>
任何想法?
編輯:在我的情況,我想成功和失敗的消息被抑制,我的腳本簡單地使用退出代碼(和失敗消息是混亂的)。
試圖用google搜索這個,但命令被稱爲'which',這有點棘手!`which`忽略重定向的輸出
我的問題是這樣的:我試圖重定向的'哪個'命令的輸出,以便它沉默,但它似乎忽略我的重定向。示例:
#> which foo 2>&1 >/dev/null
/usr/bin/which: no foo in <my PATH>
任何想法?
編輯:在我的情況,我想成功和失敗的消息被抑制,我的腳本簡單地使用退出代碼(和失敗消息是混亂的)。
你需要把2>&1
算賬:
which foo >/dev/null 2>&1
或擊4,更新,簡單地說:
which foo &>/dev/null
我猜這是因爲bash從右到左讀取管道/重定向? – shearn89
@shearn不,從左到右! –
有之間的差異:
$ command 2>&1 > file
和
$ command > file 2>&1
你想要的是第二個,即
$ which foo >/dev/null 2>&1
注意:不要依賴於它的退出狀態!它*不一定會告訴你命令是否存在! ''這種方式不便攜。特別是,你可能會想要這些替換:'case \'uname -s \'in SunOS)which(){ksh whence -p「$ @」; } ;; HP-UX)which(){command -v「$ @」; } ;; esac' –
謝謝!在這種情況下,該命令是隻能在Linux上運行的安裝腳本的一部分,但是我將在未來考慮到這一點! – shearn89