
シェル履歴に特定のコマンドを「固定」する方法はありますか?
残りの履歴と同様に、Ctrl + Rを使用して検索できるお気に入りのコマンドを保存したいのですが、期限切れにしてはいけません。
答え1
簡単なアプローチは、シェルのスタートアップファイルにコードを入れて追加の履歴ファイルを読み込み、粘着性のある行を忘れないように十分な履歴行をメモリに保存することです。
強く打つ
存在する~/.bashrc
:
history -r ~/.bash_history.sticky
HISTSIZE
また、少なくともHISTFILESIZE
行数~/.bash_history.sticky
と長いセッションで実行されるコマンドの数を追加する必要があります。
HISTFILESIZE=1000
HISTSIZE=10000
固定記録項目がメモリーに保持され、値が大きすぎないようにするには、HISTSIZE
記録を手動でクリーンアップして実行できますPROMPT_COMMAND
。history -d
erasedups
HISTCONTROL
扱いにくい
存在する~/.zshrc
:
fc -RI ~/.zsh_history.sticky
HISTSIZE
また、少なくともSAVEHIST
行数~/.zsh_history.sticky
と長いセッションで実行されるコマンドの数を追加する必要があります。
SAVEHIST=1000
HISTSIZE=10000
大きな問題なしに固定履歴エントリをメモリに保存するには、一時ファイルに書き込んで編集したバージョンを再読み込みする必要があるため、手動で履歴をトリミングすることでこれを行うHISTSIZE
ことができます。またはオプションを設定します。precmd
fc -W
hist_ignore_dups
hist_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では記録を保持します長い時間。はい。HISTSIZE
(20000
さまざまな設定が含まれているため、ここにリストしません。)この作業には約10ヶ月かかりました。私の履歴ファイル(~/.zhistory
)はサイズが1.1MiBで、起動速度が著しく遅くなりません。
私は通常、他の端末から作業履歴を取得しますfc -R
(複数の端末が開いている場合は常に)。
しかし、あなたの質問に答えるために実際に保存したいコマンドを「表示」し、最後に説明# GOOD
を追加しました。これは、広範な実験を経て長い時間がかかりにくく得られたことが多い。そのうちのいくつかは再利用がほとんど不可能なスクリプトになりますが、タグ付けすることがそれを保存する最速の方法です。あまりにも長い歴史を持っているので歴史的検索をすれば通常# GOOD
私が望むものをかなり早く見つけることができます。