GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリを認識したbash履歴を持つことは可能ですか

まず、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 を変更します 配列を、独自の履歴ファイルを作成するディレクトリのリストに追加します。


Linux
  1. Bash履歴コマンドの使用方法

  2. LinuxでBashの履歴をクリアする方法

  3. LinuxでのBash履歴の解析

  1. ディレクトリに入るときにBashスクリプトを実行しますか?

  2. 古いバージョンのBashをエミュレートすることは可能ですか?

  3. BashスクリプトでCdを使用できないのはなぜですか?

  1. タイプアヘッドをBash履歴検索(ctrl-r)に適用するにはどうすればよいですか?

  2. 特定のディレクトリにSSHで接続する方法は?

  3. bash スクリプトを実行するには?