検索しましたが、これについては何も見つかりませんでした。ターミナルを使用して、bash の機能を探しています。
昔、私は Debian システムにユーザーを持っていましたが、友人が便利な履歴検索機能 (当時は tcsh を使用していたと思います) を設定してくれました。この機能では、前のコマンドの先頭を入力して上矢印を押すと、部分的な文字列に基づいて検索が行われます。
たとえば、私の履歴が次の場合:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
と入力して.
上矢印を押すと、 と表示されます。./script.pl arg1
もう一度押すと、./script.pl
などと表示されます。
.bash_history に対して実行するのとほぼ同じですgrep
。この機能を利用する方法はありますか?
答え1
次の行を作成し~/.inputrc
て追加します。
# Respect default shortcuts.
$include /etc/inputrc
## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward
ヒント:
$include /etc/inputrc
すでにファイルがある場合の説明や対処方法については、下部をお読みください~/.inputrc
。
で始まる行は#
コメントです。
何が後ろ向きで何が前向きか思い出せません。試してみてください。後ろ向きと前向きを切り替える必要があるかもしれません。
新しい動作を有効にするには、すべてのターミナルを閉じて再度開きます。
背景情報を少し紹介します:
Bashは使用しています読み込まれた行プロンプトを処理する。~/.inputrc
はreadlineの設定ファイルです。これはreadlineライブラリを使用する他のソフトウェアにも影響することに注意してください。たとえば、Python の。
読むbash マニュアルreadlineに関する詳細情報については、こちらをご覧ください。履歴関連のreadlineコマンド。
矢印キーのエスケープ コードを取得するには、次の手順を実行します。
cat
ターミナルで開始します( のみcat
、その他の引数はありません)。^[[A
キーボードのキーを入力すると、上矢印 や^[[B
下矢印などのキーが表示されます。^[
と置換する\e
。
詳細については^[
、\e
こちらをご覧ください:https://unix.stackexchange.com/a/89817/380515
ラインについて$include /etc/inputrc
:
Readline は設定を読み取ろうとします~/.inputrc
。そのファイルが存在しない場合は、 を読み取ろうとします/etc/inputrc
。つまり、~/.inputrc
が存在する場合は を読み取らないということです/etc/inputrc
。
一部のディストリビューションでは、 にいくつかの設定が用意されています。/etc/inputrc
を作成すると、~/.inputrc
用意された設定は失われます。これは、必要な場合とそうでない場合があります。 に用意された設定を保持するには、で の/etc/inputrc
行を使用します。$include /etc/inputrc
~/.inputrc
すでにファイルがある場合は、~/.inputrc
何をしているかをすでに知っているか、システムをセットアップした人からそれを継承したか、または以前にファイルを作成するように指示された別のガイドに従ったが、それを忘れていたかのいずれかです。いずれにしても、/etc/inputrc
行とともにそれを保持するかどうかを確認して決定する必要があります$include /etc/inputrc
。
答え2
/etc/profile.d/ に次の内容の setup_readline.sh という名前のファイルをモード 644 で作成し、ログインして、優先キーを確認します。
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
これが最善の方法だと思います。chef、puppetなどの構成管理システムを使用している場合がほとんどです。
システム構成はまだ変更されていません。
答え3
Ctrl + Rこの種の機能が提供されます。部分的なコマンドを入力し始めると、古いコマンドが表示され、上下の矢印で移動できます。
より詳しい情報ここ。
答え4
~/.inputrc
Trusty 14.04 で作成する必要があるというlesmana の回答を完了するには、次を確認/追加します~/.bashrc
(最初の行は既に存在します~/.bashrc
):
shopt -s histappend
PROMPT_COMMAND='history -a'
フランス語ではすでに説明されているここ。