說的是,我想在shell中刪除一個tmp/ dir。shell:我可以在mac中使用類似linux的命令樣式`rm tmp/-fr`
在linux(如ubuntu)中,我可以rm tmp/ -fr
或rm -fr tmp/
。但在mac中,我只能rm -fr tmp/
。
有什麼辦法可以配置mac shell(bash/zsh/...),所以我可以使用類似linux的命令風格:rm tmp/ -fr
?
說的是,我想在shell中刪除一個tmp/ dir。shell:我可以在mac中使用類似linux的命令樣式`rm tmp/-fr`
在linux(如ubuntu)中,我可以rm tmp/ -fr
或rm -fr tmp/
。但在mac中,我只能rm -fr tmp/
。
有什麼辦法可以配置mac shell(bash/zsh/...),所以我可以使用類似linux的命令風格:rm tmp/ -fr
?
具有操作數之後的選項,如rm tmp/ -fr
是非標準的。 IEEE標準1003.1-2001具有在部分12.2 Utility Syntax Guidelines:
Guideline 9: All options should precede operands on the command line.
的GNU工具的實現者(如所使用的大多數Linux發行)都選擇添加許多非標準擴展。雖然有時很方便,但使用這些提示本質上是不可移植的。 MacOS X有一個派生自BSD的用戶級,它沒有大部分非標準的GNU擴展。如果您希望將來可以使用非GNU系統(如BSD,Solaris或任何其他商用UNIX),那麼堅持使用標準語法的實用程序並不習慣任何GNU擴展。在使用所有不同的UNIX操作系統時,它可以節省很多麻煩。編寫腳本時,這一點尤其重要。依靠腳本中的GNU語法將使它們不可移植。
因此,我的建議不是在MacOS X上安裝GNU coreutils,而是使用它作爲適應標準語法(IEEE Std 1003.1,POSIX.2等)的機會。
+1:如果沒有別的,爲您的最終建議。 –
很好的解釋:) – smilingpoplar
它通常取決於您執行的命令的執行情況。然而,至於rm
(因爲你的意思是rm),因爲你用它作爲例子,所以你不能。至少它不會做你的想法。
rm -fr tmp/
:將刪除目錄tmp/
與選項-r
和-f
,這樣循環(這裏強制)和強迫。rm tmp/ -fr
:將(嘗試)刪除目錄tmp/
和/或文件/目錄 ,命名爲-fr
,但會產生錯誤:。注:唯一的其他方式來刪除一個名爲-rf
文件是使用rm -- -rf
。
那麼,它受BSD的限制? – smilingpoplar
也許,也許不是。我沒有可用的BSD或Linux操作系統。然而,他們各自的手冊頁只能找到,這表明在那裏甚至是不可能的。因人而異。 –
你是什麼意思的其他「UNIX」。 UNIX是一個品牌,而不是操作系統(Solaris,AIX,HP/UX等)。 –
我把它解釋成'linux'(ubuntu,紅帽等) – smilingpoplar