像在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
和之后的命令名称which
known_hosts
以下命令的主机名ssh
CDPATH
等等。您可以使用来打印完成命令列表,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>
并获得所有可能的命令的列表。 ”,尽管它仅明确提及动词的完成(要简单得多)。