Mac OS X中命令的重击完成


38

像在Ubuntu中一样,如何在键入命令时获取finkmacports自动完成程序名称apt-get

例如当我输入

sudo port install ca

然后按tab,我希望终端自动完成或显示可用的命令。

sudo!之后,OS X甚至不会自动完成命令!

Answers:


69

bash-completion添加以下内容的完成:

  • sudo和之后的命令名称which
  • Macports和Homebrew软件包名称(可选)
  • 输入known_hosts以下命令的主机名ssh
  • 上的文件夹 CDPATH

等等。您可以使用来打印完成命令列表,complete -p并使用查看功能的来源declare -f

安装Homebrew或MacPorts和Bash

首先,您必须按照说明安装HomebrewMacPorts注意:请勿同时安装两者,因为它们会冲突。

然后,安装较新版本的Bash。OS X中内置的Bash有点旧,使用Bash> 4.1您将获得更多的完成选项,您可以通过

brew install bash

要么

sudo port install bash

取决于您使用Homebrew还是MacPorts。

使用Homebrew安装bash-completion

要安装bash-completion,您必须:

brew install bash-completion

并将以下内容添加到您的~/.bash_profile

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

Homebrew当前安装了bash-completion(1.3)的旧版本,该版本仍可与Bash 3.x一起使用,但仍建议使用Bash4.x。

使用MacPorts安装bash-completion

使用MacPorts:

sudo port install bash-completion

然后,添加到您的~/.bash_profile

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

有关如何启用端口名完成的说明,请参见trac.macports.org/wiki/howto/bash-completion


MacPorts的bash-completion软件包提供了对软件包名称完成的支持,作为后面的附加参数port <verb>。参见此处,第48-58行。此行为在MacPorts Wiki中得到了暗示,该维基百科指出:“ 这不仅用于文件和目录,而且还用于的命令port。因此,您键入port <Tab>并获得所有可能的命令的列表。 ”,尽管它仅明确提及动词的完成(要简单得多)。
丹尼尔·贝克

程序包名称自动完成的,维基只字未提。请参阅链接的脚本代码。
丹尼尔·贝克

variants.conf没有完成对MacPorts的本身; variants.conf定义了为所有端口自动设置的变体,如您链接的Wiki页面上所述。添加该行会在可能的情况下为您安装的端口启用bash完成支持。
凯文·里德

感谢您提供有关自制中自动完成的提示。仅此一项就赢得了这个答案。
Paul Wagland

太好了,这启用了make自动完成功能,正是我想要的。
МатиТернер
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.