web-dev-qa-db-ja.com

Mac OS XでのコマンドのBash補完

Ubuntuのapt-getのように、コマンドを入力するときにfinkmacportsでプログラム名をオートコンプリートするにはどうすればよいですか?

たとえば、

Sudo port install ca

そして押す tab、ターミナルでオートコンプリートを実行するか、使用可能なコマンドを表示します。

OS XはSudo!の後にコマンドをオートコンプリートすらしません。

40
Osama Gamal

bash-completion は以下の補完を追加します:

  • Sudoおよびwhichの後のコマンド名
  • MacportsとHomebrewのパッケージ名(オプション)
  • sshのようなコマンドのknown_hostsのホスト名
  • CDPATH上のフォルダ

等々。 complete -pを使用して補完コマンドのリストを出力し、declare -fを使用して関数のソースを確認できます。

HomebrewまたはMacPortsおよびBashのインストール

まず、指示に従って Homebrew または MacPorts をインストールする必要があります。 注:競合するため、両方をインストールしないでください。

次に、新しいバージョンの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でも動作しますが、Bash 4.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 を参照してください。

72
slhck