2016-04-14 60 views
0

在Unix中,請告訴我是這 「 - 」 在此命令xargs命令

ls -t | tail -n +4 | xargs rm -- 

ls -t | tail -n +4 | xargs rm 

有什麼區別嗎?

+0

「 - 」表示選項標誌結束。我只知道我的問題在這裏:http://askubuntu.com/questions/419137/how-can-i-remove-a-file-that-looks-like-a-flag。可能是爲什麼它被用在你的示例 – dan08

+0

在包含名爲'-rf'和更多目錄的文件的目錄中,差異將變得最明顯。 – Jens

回答

3

--表明,在命令行上所有後續參數作爲操作數處理而不是選項(即使參數以---開頭)。

因此,ls -t | tail -n +4 | xargs rm --意味着由xargsrm提供的所有參數將被視爲文件名(即操作數)。

而在ls -t | tail -n +4 | xargs rm情況下,如果碰巧在當前目錄開始---rm文件名會嘗試將其解釋爲一個選項(和意想不到的結果更可能)。

0

這是什麼「 - 」在此命令xargs命令

--手段「這裏切換結束」

+0

......並且它與'xargs'無關,它從'xargs'傳遞給'rm'和'rm'(或者更好的是用於參數解析的'getopt'庫)將停止選項處理(並忽略它)。並非所有的「rm」實際上都可以這樣做,但這是一個posix建議。例如,請參閱文檔:http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html – eckes