2012-02-22 68 views
7

我想知道什麼的&意味着在聲明中:什麼2> 1>的/ dev/null,並且2>&1>/dev的差異/空

2>&1 > /dev/null 

其重定向錯誤輸出到標準輸出,然後到位桶,但什麼&在裏面?

我可以用它像:

2>1 >/dev/null 
+2

當然,如果你想輸出stderr到一個名爲「1」的文件。 – cHao 2012-02-22 06:33:18

+1

這是否有幫助http://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/ – KK99 2012-02-22 06:33:20

+0

@cHao:有你的觀點。 – kailash19 2012-02-22 06:49:01

回答

7

&意味着文件描述符。所以2>&1標準錯誤重定向到任何標準輸出當前指向的,而2>1 stderr重定向到一個名爲1

此外,重定向,以便發生文件。因此,如果您說2>&1 >/dev/null,它會重定向stderr以指向stdout當前指向哪個(可能是noop),然後將stdout重定向到/ dev/null。你可能想要>/dev/null 2>&1

+0

因此,&告訴FD。在我腦海中查詢:那麼爲什麼我們沒有在2(stderr)的情況下使用它? ow shell知道2(沒有&)是FD嗎? – kailash19 2012-02-22 06:46:19

+0

你是什麼意思?無論您用於「fd」插槽的編號是什麼,語法都是fd> file或fd>&fd。 – tripleee 2012-02-22 06:55:43

+1

kailash19:重新閱讀上述帖子。請注意,'... while 2> 1將stderr重定向到名爲1'的文件中。所以試試看:'printf'xxx \ n「2> 1; ls -l 1'。文件在那裏(但是空的),並且xxx出現在你的屏幕上。將stderr輸出重定向到一個文件,比如'myCmd 2> /tmp/myCmd.stderr.out.txt',是合法的,對嗎?但這與操縱標準輸出'&1'和標準錯誤'&2'不同。這不是一個完全直觀的語法。因爲我不需要經常使用它,即使年齡大於10歲,如果我想要做一些新的或不同的事情,我仍然需要查看它。祝你們好運。 – shellter 2012-02-22 16:40:26