OS X 终端 - 在命令末尾放置标志/选项?

jjt*_*jjt 5 linux terminal command-line macos

OS X 上有没有办法将标志放在命令的末尾而不是开头?在我的 Ubuntu 机器上,其中任何一个都可以工作,但 OS X-la在第二个示例中将其视为目录参数:

ls -la .
ls . -la
Run Code Online (Sandbox Code Playgroud)

对于这个简单的例子,这没什么大不了的,但是当你在一个带有很多选项/参数的长命令中错过一个标志并且不能只是点击并添加标志来重新运行命令时,它会令人沮丧。

我正在使用Matias 的 OS X defaults,但我看不到任何会改变这种行为的东西。

slh*_*hck 5

这一切都取决于程序的实现,或者更具体地说取决于它如何解析选项。OS X 不使用ls\xe2\x80\x94 的相同实现,而是使用其 BSD 版本,而 Ubuntu(和所有 Linux)使用GNU coreutils版本。

\n\n

您无法通过设置更改其行为,但您可以通过Homebrew安装 GNU coreutils :

\n\n
brew install coreutils\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样,您就可以在 OS X 上执行相同的操作。请注意,在默认的 coreutils 安装中,所有 GNU 实用程序都将以g. 因此,您应该使用gls而不是ls. 您可以通过将它们添加到您的路径来覆盖该行为。为此,请将其添加到您的~/.bash_profile

\n\n
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

综上所述\xe2\x80\x94,并且因为这一切都取决于程序实现\xe2\x80\x94,所以你不能指望这在任何地方都有效。有些程序对选项出现的位置有严格要求,而另一些程序则不然。这不是操作系统本身强制执行的。

\n\n

您还可以通过点击 , 来快速添加另一个选项CtrlAOption这将带您到命令名称本身后面的单词,您可以在其中添加您忘记的选项。

\n\n

如果它不起作用并在您按下 时打印一些奇怪的字符Option,请确保在Terminal.app的首选项中Settings \xc2\xbb Keyboard下启用了这些键盘设置:

\n\n

\n