シェル履歴の固定項目

シェル履歴の固定項目

シェル履歴に特定のコマンドを「固定」する方法はありますか?

残りの履歴と同様に、Ctrl + Rを使用して検索できるお気に入りのコマンドを保存したいのですが、期限切れにしてはいけません。

答え1

簡単なアプローチは、シェルのスタートアップファイルにコードを入れて追加の履歴ファイルを読み込み、粘着性のある行を忘れないように十分な履歴行をメモリに保存することです。

強く打つ

存在する~/.bashrc

history -r ~/.bash_history.sticky

HISTSIZEまた、少なくともHISTFILESIZE行数~/.bash_history.stickyと長いセッションで実行されるコマンドの数を追加する必要があります。

HISTFILESIZE=1000
HISTSIZE=10000

固定記録項目がメモリーに保持され、値が大きすぎないようにするには、HISTSIZE記録を手動でクリーンアップして実行できますPROMPT_COMMANDhistory -derasedupsHISTCONTROL

扱いにくい

存在する~/.zshrc

fc -RI ~/.zsh_history.sticky

HISTSIZEまた、少なくともSAVEHIST行数~/.zsh_history.stickyと長いセッションで実行されるコマンドの数を追加する必要があります。

SAVEHIST=1000
HISTSIZE=10000

大きな問題なしに固定履歴エントリをメモリに保存するには、一時ファイルに書き込んで編集したバージョンを再読み込みする必要があるため、手動で履歴をトリミングすることでこれを行うHISTSIZEことができます。またはオプションを設定します。precmdfc -Whist_ignore_dupshist_ignore_all_dups

答え2

私の解決策は、cronジョブと.*sh_historyファイルの複数行でした。

一日の終わりに、このクローンエントリが実行されます(私のエントリは午後11時に設定されます)。

0 23 * * * cat /home/username/.bash_history >> /home/username/BIGHISTORY

固定コマンドが通常の履歴スクロールバッファから外れている場合は、単純なgrepコマンドを使用してBIGHISTORYファイル内のそのコマンドを見つけて、折りたたんだ部分にインポートできます。私はこれがあなたが望むものではないことを知っていますが、最低限の努力で最も近い貧しい人々のバージョンです。

答え3

bash(モル)でzsh設定できます

export HISTFILESIZE=-1
export HISTSIZE=-1

あなたの中で.bashrcあなたの歴史が永遠に生きているようにしてください。私も知っています、これはまさにあなたが探しているものではありません。ただし、お気に入りのコマンドの場合は、エイリアスまたは関数を作成することをお勧めします。

答え4

Zshでは記録を保持します長い時間。はい。HISTSIZE20000さまざまな設定が含まれているため、ここにリストしません。)この作業には約10ヶ月かかりました。私の履歴ファイル(~/.zhistory)はサイズが1.1MiBで、起動速度が著しく遅くなりません。

私は通常、他の端末から作業履歴を取得しますfc -R(複数の端末が開いている場合は常に)。

しかし、あなたの質問に答えるために実際に保存したいコマンドを「表示」し、最後に説明# GOODを追加しました。これは、広範な実験を経て長い時間がかかりにくく得られたことが多い。そのうちのいくつかは再利用がほとんど不可能なスクリプトになりますが、タグ付けすることがそれを保存する最速の方法です。あまりにも長い歴史を持っているので歴史的検索をすれば通常# GOOD私が望むものをかなり早く見つけることができます。

関連情報