Mac OS Xのコマンドのbash補完


38

Ubuntuのように、コマンドを入力するときにプログラム名を取得finkmacportsて自動補完するにはどうすればよいapt-getですか?

たとえば、私が入力したとき

sudo port install ca

を押してtab、ターミナルで自動補完するか、使用可能なコマンドを表示します。

OS Xは、sudo

回答:


69

bash-completionは、次の補完を追加します。

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

等々。で補完コマンドのリストを印刷しcomplete -p、で関数のソースを見ることができますdeclare -f

HomebrewまたはMacPorts and 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 3.xで動作するbash-completion(1.3)の古いバージョンをインストールしますが、それでも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をご覧ください。


MacPortsのbash-completionパッケージは、の後の追加引数としてパッケージ名の補完をサポートしますport <verb>こちらの 48〜58行目をご覧ください。この動作はMacPorts wikiで示唆されておりこれはファイルとディレクトリだけでなく、たとえばのコマンドにも使用されますport。したがってport <Tab>、すべての可能なコマンドのリストを入力して取得します。」動詞の完成(はるかに簡単です)。
ダニエルベック

パッケージ名オートコンプリートされていますが、wikiではそれについて言及していません。リンクされたスクリプトコードを参照してください。
ダニエルベック

これvariants.confはMacPorts自体の完成版ではありません。variant.confは、リンクしたwikiページで説明されているように、すべてのポートに自動的に設定するバリアントを定義します。その行を追加すると、インストールするポートで可能な場合にbash補完サポートが有効になります。
ケビンリード

自作でのオートコンプリートに関するヒントをありがとう。それだけで、この回答に賛成票が集まりました。
ポールワグランド

すばらしい、これによりmakeオートコンプリートが有効になりました。
МатиТернер
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.