Bash レコードに行を挿入する

Bash レコードに行を挿入する

デフォルトでは、bashは~/.bash_history履歴から行をロードします。ロードするカスタムファイルを追加できますか?よく使うコマンドを含むファイルを挿入し、組み込み検索でアクセスしたいと思います。

答え1

私はalias h='history|grep'それを私のBashプロファイルにロードするだけです。

私のワークフローは、h command例えば次のようになります。h hpssa

#  h hpssa
  202  05-28-2015 11:54:33  hpssacli
  217  05-28-2015 11:54:33  hpssa -start
  225  05-28-2015 11:54:33  hpssacli -stop
  226  05-28-2015 11:54:33  hpssa -stop
  228  05-28-2015 11:54:33  hpssa -start

" "を実行するには、hpssa -stopただ入力してください。!226


これは私のアプローチにすぎませんが、歴史的な項目を覚えている方法を変更することもできます。実際、履歴ファイルにデータを注入することは意味がないと思います。

答え2

私は以前に入力した長いコマンドを検索するために履歴を逆に検索するCtrl-R(Readlineコマンド)に大きく依存していましたが、今はエイリアスとシェルスクリプト/関数を使用することを好みます。reverse-search-historyとにかくBashのhistory組み込み機能を使用して、カスタムコマンドのリストを現在の履歴にロードできます。

history -r [filename]

Bashのマニュアルページから:

履歴ファイルの内容を読み、それを現在の履歴リストに追加します。

自動化の開始

今私に追加してみました.bashrc。ただし、新しいシェルを起動すると、カスタム履歴ファイルのコマンドは使用できません。シェル履歴は.bash_history基本ファイルからのみロードされるようです。後ろに起動ファイルが処理されました。今後プロンプトがインタラクティブシェルに表示されます。残念ながら、これを自動的に実行する簡単な方法はないようです。

答え3

@AnthonyGeogheganが観察したように、スタートアップファイルが処理された後に履歴がロードされます。これは、スタートアップファイルに必要な履歴を事前にロードする別の方法を提供します。

mv .bash_history .bash_history.tmp
cat .extra_hist .bash_history.tmp > .bash_history
# or swap them, to put the extra stuff at the end of the history, for
# quicker ^R access.

このアプローチを使用すると、時間の経過とともに特殊コマンドの複数のコピーを.bash_historyに追加できます。 .bash_historyファイルを埋めるとき(sedなど)、簡単に見つけて削除できるように、特別なコマンドをコメント行で囲むことができます。それは次のとおりです。

cp .extra_hist .bash_history
sed '/: remove from here/,/:remove to here/d' .bash_history >> .bash_history

関連情報