web-dev-qa-db-ja.com

bash:履歴に基づくスマートなオートコンプリート?

私はかつて素晴らしいbashオプションを見つけましたが、今それを再び有効にする方法を思い出せません。

オートコンプリートを拡張して、最新の履歴を確認します。したがって、以前にopen index.htmlと入力してからopen map.htmlと入力した場合は、

$ op

そして押す Tab 一度open map.htmlにオートコンプリートします。押す Tab 再びopen index.htmlにオートコンプリートします。

これを再度有効にする方法を誰かが知っていますか?

9
flossfan

Ubuntuブログの このページ (「Bashスマートコンプリーションを有効にする」)によると、bash.bashrcファイルを編集するのと同じくらい簡単です。わかりやすくするために、以下の手順をより初心者にわかりやすい方法で書き直しました。

手順(Linux)

  1. ターミナルウィンドウから、システムのbash.bashrcファイルを編集します。 nano のようなコマンドラインテキストエディターでこれを行うには、Sudo nano /etc/bash.bashrcコマンドを実行します(必要に応じてパスワードを入力します)。
  2. 矢印キーを使用して、これらの行を見つけます。

    #if [ -f /etc/bash_completion ]; then
    #   . /etc/bash_completion
    #fi
    
  3. これらの各行のコメントを外します(各行の#接頭辞を削除することにより)。

  4. ファイルを保存します(これをナノで行うには、 Ctrl+o そして Enter、その後 Ctrl+x 終了します)、そして今それは動作するはずです。 注意:既存の端末で変更を有効にするには、/etc/bash.bashrcソース にする必要があります。または、ログアウトして再度ログインするか、単に再起動します。

これを無効にするには、上記の各行を再度コメント化する必要があります(各行の先頭に#を追加することにより)。

おそらく、上記の3行を#文字を除いて個人用.bashrcファイルに挿入すると、(ユーザーアカウントに対して)おそらく機能します。その場合、Sudoを使用する必要はありません。


このブログ投稿 (「Mac OS XのBash補完」)によると、Mac OS Xでは手順が異なります。次の手順に従ってください。

手順(Mac OS X)

  1. Homebrew がインストールされていることを確認し、それを使用してパッケージbash-completionをインストールします(コマンドbrew install bash-completionを入力します)。
  2. Homebrewは、インストールを完了するために何をする必要があるかを教えてくれるはずです。この場合、これらの3行を.bashrcファイルに追加する必要があります(上記で使用したnanoのようなコマンドラインテキストエディターか、グラフィックを使用)。

    if [ -f $(brew --prefix)/etc/bash_completion ]; then
       . $(brew --prefix)/etc/bash_completion
    fi
    
  3. これでb​​ashにオートコンプリートがあるはずです。 注:変更を既存のシェルで有効にするには、.bashrcsourced にする必要があります。または、ログアウトして再度ログインするか、再起動するだけです

これを無効にするには、上記で追加した行を削除し、brew uninstall bash-completion --forceコマンドを実行するだけです。

9
joeeey

Bashで実行します。

cat >> ~/.inputrc <<'EOF'
"\e[A": history-search-backward
"\e[B": history-search-forward
EOF

Sshセッションに再ログインするか、単にinputrcをリロードします。

bind -f  ~/.inputrc

今使う  そして  コマンドの先頭を入力した後-履歴から自動補完されます。

8
Noam Manos