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

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

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

ls -la .
ls . -la

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

我在用着Matias 的 OS X 默认设置,但我看不到任何可以改变这种行为的东西。

答案1

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

它的行为不是你可以通过设置来改变的,但你可以通过以下方式安装 GNU coreutils自制

brew install coreutils

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

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"

尽管如此,由于这一切都取决于程序实现,因此您不能指望这在任何地方都有效。有些程序对选项出现的位置要求很严格,而有些则不然。这不是操作系统本身强制执行的。

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

如果它不起作用,并在按下时打印一些奇怪的字符Option,请确保启用了这些键盘设置终端应用程序的偏好设置 » 键盘

相关内容