Mac OS X 中命令的 Bash 补全

Osa*_*mal 46 bash macports command-line fink macos

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

例如,当我输入

sudo port install ca
Run Code Online (Sandbox Code Playgroud)

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

OS X 甚至不会在sudo!

slh*_*hck 77

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
Run Code Online (Sandbox Code Playgroud)

或者

sudo port install bash
Run Code Online (Sandbox Code Playgroud)

取决于您是使用 Homebrew 还是 MacPorts。

使用 Homebrew 安装 bash-completion

要安装bash-completion,您必须:

brew install bash-completion
Run Code Online (Sandbox Code Playgroud)

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

brew install bash
Run Code Online (Sandbox Code Playgroud)

Homebrew 当前安装了旧版本的 bash-completion (1.3),该版本仍然适用于 Bash 3.x,但仍然建议使用 Bash 4.x。

使用 MacPorts 安装 bash-completion

使用 MacPorts:

sudo port install bash-completion
Run Code Online (Sandbox Code Playgroud)

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

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi
Run Code Online (Sandbox Code Playgroud)

有关如何启用端口名称补全的说明,请参阅trac.macports.org/wiki/howto/bash-completion