在 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→,请确保启用了这些键盘设置终端应用程序的偏好设置 » 键盘: