像在Ubuntu中一样,如何在键入命令时获取fink并macports自动完成程序名称apt-get?
例如当我输入
sudo port install ca
然后按tab,我希望终端自动完成或显示可用的命令。
sudo!之后,OS X甚至不会自动完成命令!
像在Ubuntu中一样,如何在键入命令时获取fink并macports自动完成程序名称apt-get?
例如当我输入
sudo port install ca
然后按tab,我希望终端自动完成或显示可用的命令。
sudo!之后,OS X甚至不会自动完成命令!
Answers:
bash-completion添加以下内容的完成:
sudo和之后的命令名称whichknown_hosts以下命令的主机名sshCDPATH等等。您可以使用来打印完成命令列表,complete -p并使用查看功能的来源declare -f。
首先,您必须按照说明安装Homebrew或MacPorts。注意:请勿同时安装两者,因为它们会冲突。
然后,安装较新版本的Bash。OS X中内置的Bash有点旧,使用Bash> 4.1您将获得更多的完成选项,您可以通过
brew install bash
要么
sudo port install bash
取决于您使用Homebrew还是MacPorts。
要安装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:
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。
variants.conf没有完成对MacPorts的本身; variants.conf定义了为所有端口自动设置的变体,如您链接的Wiki页面上所述。添加该行会在可能的情况下为您安装的端口启用bash完成支持。
make自动完成功能,正是我想要的。
bash-completion软件包提供了对软件包名称完成的支持,作为后面的附加参数port <verb>。参见此处,第48-58行。此行为在MacPorts Wiki中得到了暗示,该维基百科指出:“ 这不仅用于文件和目录,而且还用于的命令port。因此,您键入port <Tab>并获得所有可能的命令的列表。 ”,尽管它仅明确提及动词的完成(要简单得多)。