まず、Up をマッピングする方が簡単かもしれません そしてダウン history-search-backward
へのボタン と history-search-forward
それぞれ。 man bash
から :
history-search-forward
Search forward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
history-search-backward
Search backward through the history for the string of characters
between the start of the current line and the point. This is a
non-incremental search.
これを有効にして、コマンドの名前を入力し始めてから Up を押します。 、入力したもので始まる履歴のコマンドのみが表示されます。そうすれば、関心のあるコマンドをすばやく見つけることができ、ディレクトリ固有の履歴ファイルをいじる必要がなくなります。 s
と入力するだけです 、次に上へ s
で始まるコマンドのみ が見つかります。 fooba
を使用 fooba
で始まるもののみ 表示されます。
これを有効にするには、次の行を ~/.inputrc
に追加します サーバー上のファイル (端末エミュレーターによっては、少し異なる形式が必要になる場合があります。これが機能しない場合は、こちらの回答をご覧ください):
"\e[A": history-search-backward
"\e[B": history-search-forward
そうは言っても、ディレクトリごとに履歴ファイルを設定することは可能です。この関数を ~/.profile
に追加します (あなたの ~/.bashrc
ではありません ssh
を使用する場合、このファイルはデフォルトで読み取られないため リモートマシンにログインします):
setHistFile(){
targetDirs=("/home/terdon/foo" "/home/terdon/bar")
for dir in "${targetDirs[@]}"; do
if [[ "$dir" = "$PWD" ]]; then
## Set the history file name
export HISTFILE="./.bash_history"
## clear current history
history -c
## read history from the $HISTFILE
history -r
## Exit the function
return
fi
done
## This will be run if the PWD is not in
## the targetDirs array
export HISTFILE="$HOME/.bash_history"
## Read the history (in case we are leaving
## one of the targetDirs)
history -r
}
PROMPT_COMMAND
を設定します 変数 (これは、シェル プロンプトが表示されるたびに実行されるコマンドです) に:
export PROMPT_COMMAND='setHistFile'
targetDirs
を変更します 配列を、独自の履歴ファイルを作成するディレクトリのリストに追加します。