比如说,我想在 shell 中删除一个 tmp/ 目录。
在 linux(如 ubuntu)中,我可以 rm tmp/-fr
或 rm -fr tmp/
。但是在mac中,我只能rm -fr tmp/
。
有什么方法可以配置 mac shell (bash/zsh/...),这样我就可以使用类似 linux 的命令风格:rm tmp/-fr
?
最佳答案
rm tmp/-fr
中的操作数后有选项是非标准的。 IEEE Std 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 等)的机会。
关于macos - shell :我可以在 mac 中使用类似 linux 的命令样式 `rm tmp/-fr`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443271/