说的是,我想在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