Macos shell:我可以在mac中使用类似linux的命令样式`rm tmp/-fr`吗

Macos shell:我可以在mac中使用类似linux的命令样式`rm tmp/-fr`吗,macos,shell,command-line,Macos,Shell,Command Line,比如说,我想在shell中删除一个tmp/dir 在linux(如ubuntu)中,我可以rm-tmp/-fr或rm-fr-tmp/。但是在mac中,我只能rm-frtmp/ 有没有办法配置macshell(bash/zsh/…),这样我就可以使用类似linux的命令样式:rmtmp/-fr 这取决于您执行的命令的实现。然而,对于rm(给定您的意思),由于您将其作为示例,所以您不能。至少它不会像你想的那样 rm-fr tmp/:将使用选项-r和-f删除目录tmp/,因此递归(此处强制)和强制

比如说,我想在shell中删除一个tmp/dir

在linux(如ubuntu)中,我可以
rm-tmp/-fr
rm-fr-tmp/
。但是在mac中,我只能
rm-frtmp/


有没有办法配置macshell(bash/zsh/…),这样我就可以使用类似linux的命令样式:
rmtmp/-fr

这取决于您执行的命令的实现。然而,对于
rm
(给定您的意思),由于您将其作为示例,所以您不能。至少它不会像你想的那样

  • rm-fr tmp/
    :将使用选项
    -r
    -f
    删除目录
    tmp/
    ,因此递归(此处强制)和强制
  • rm tmp/-fr
    :将(尝试)删除目录
    tmp/
    和/或文件/目录 命名为
    -fr
    ,但会产生错误:
    rm:tmp/directory

注意:删除名为
-rf
的文件的唯一其他方法是使用
rm--rf

它取决于您使用的命令。OSX来自BSD系列(通过NeXTSTEP),因此它们的标准实用程序大多来自BSD。BSD和Linux风格的命令之间有很大程度的兼容性,但偶尔您会遇到类似这样的特定于实现的事情。如果您确实想使用Linux版本的命令,可以安装GNU coreutils包。可从(推荐)和获得。但是,一般来说,在内置BSD工具链上安装GNU coreutils是一件痛苦的事情,因为命名冲突等等。

在操作数后面有选项,如
rm tmp/-fr
是非标准的。IEEE标准1003.1-2001在本节中有:

准则9: 所有选项都应位于命令行上的操作数之前

GNU实用程序(大多数Linux发行版都使用)的实现者选择添加许多非标准扩展。虽然有时很方便,但使用这些外文本身是不可移植的。MacOSX有一个从BSD派生的用户区,BSD没有大多数非标准GNU扩展。如果您希望将来使用非GNU系统,如BSD、Solaris或任何其他商业UNIX,那么坚持实用程序的标准语法而不习惯任何GNU扩展确实是值得的。在使用所有不同的UNIX操作系统时,它节省了很多麻烦。在编写脚本时,这一点尤其正确和重要。在脚本中依赖GNU语法将使它们不可移植


因此,与在MacOS X上安装GNU coreutils不同,我的建议是利用它来习惯标准语法(IEEE Std 1003.1、POSIX.2等)。

你说的其他“UNIX”是什么意思。UNIX是一个品牌,而不是一个操作系统(Solaris、AIX、HP/UX等)。我向“linux”(ubuntu、red hat等)澄清了这一点,也许不是。我没有类似BSD或Linux的操作系统。然而,他们各自的手册页只能找到,这表明在那里甚至是不可能的。YMMV。