履歴をbashに挿入する


9

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


2
通常、人々は頻繁に使用されるコマンドのエイリアスを追加します...
HBruijn

それは素晴らしいことです。しかし、そうではありません。私は常に使用するコマンドにエイリアスを使用していますが、状況に応じて変更したい引数の数が多いコマンドがたくさんあります。
rgtk

4
なんらかのファイルの変更をcronで実行する必要がありますが、これはかなりおかしく聞こえ、機能しない場合があります。ちょうどあなたの長いコマンドの引数を受け入れるシェルスクリプトを作成し、それをドロップする/usr/local/binか何か
ウェズリー

それらを頻繁に使用するなら、とにかくそれらはあなたの歴史の中にありませんか?

で関数を宣言し.bashrcますか?
Mark K Cowan

回答:


13

私は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


これは私のアプローチですが、履歴アイテムの呼び出し方法を変更できます。実際に履歴ファイルにデータを挿入することは意味がないと思います。


盗み素敵なトリック、その1
WIM

履歴をさかのぼって検索する場合のCtrl-Rの機能を確認することをお勧めします。あなたの心を吹き飛ばす準備をしてください...

2
@CameronKerrしているだけで、この1(以下の答えを見serverfault.com/a/695115/120438)この特定のケースでCtrl + Rを使用する【選択欠点は、ewwhiteの一方で、あなたの関連するコマンド一度に1を与えるということですアプローチは、関連するすべてのコマンドのリストを返します。
ジェニーD

これは素晴らしいトリックですが、質問にはまったく答えません。これが最高の投票結果であるかについては理解できません。私のユースケースは、終了時に履歴を失い続けるDockerイメージがあることです。コマンドラインを介して履歴ファイルを渡すことができるといいと思いましたdocker run ...
kumarharsh

@kumar_harsh難しい。
ewwhite 2017年

7

以前は履歴を後方検索して以前に入力された長いコマンドを取得するCtrl-Rreverse-search-historyReadlineコマンド)に非常に依存していましたが、現在はエイリアスとシェルスクリプト/関数を使用することを好みます。とにかく、Bash history組み込みコマンドを使用して、カスタムコマンドのリストを現在の履歴に読み込むことができます。

history -r [filename]

bashのmanページから:

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

スタートアップの自動化

このコマンドをmyの最後の行として追加して、このコマンドを自動的に起動しようとしました.bashrc。しかし、新しいシェルを起動したときに、カスタム履歴ファイルのコマンドを使用できませんでした。シェルの履歴のみデフォルトからロードされているようです.bash_historyファイル:の後に起動ファイルが処理されていると、ちょうど前にプロンプトが対話型シェルのために提示されます。残念ながら、これを自動化する簡単な方法はないようです。


2

@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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.