1

私は仕事で tcsh を使用しています。私がよく使用する機能の 1 つは、シェル プロンプトでのコマンドライン履歴の補完です。現在、履歴ファイルのサイズを 2000 に制限しています (シェルをあまり遅くしたくないため)。ただし、1、2 か月前に使用したことがわかっているコマンドが必要な場合もありますが、今では消去されています。だから私はシステムが欲しい:

  1. 私の履歴バッファには 2000 行しか保存されません

  2. 古いコマンドが消去される代わりに、それらは「マスター」履歴ファイルに保存され、時系列順に並べられる必要があります。つまり、2 つのシェルが開かれた場合、履歴に入力されたコマンドは、日付スタンプに従って並べ替えられる必要があります (シェルが開かれた順序ではありません)。閉鎖されました)!

  3. このマスター履歴ファイルを、たとえば 1 週間ごとに自動バックアップできれば完璧です。

熱心なシェル ユーザーの多くは、このような状況に直面していると思います。そのようなユーザーの 1 人から回答を得たいと思っています !!

4

2 に答える 2

1

これを行うことはまったく考えていませんでしたが、最も簡単な方法は、履歴ファイルを別のファイルに追加する cron ジョブを書き込むことです。これに関する問題は、ダンプを行った後に履歴ファイルをクリアするために cron を作成しない限り、重複が発生することです。

履歴は(私が知る限り)行番号のみで保存されるため、ダンプごとに番号が繰り返されます。ただし、ダンプの日付でマーカー行をコールド追加します。

于 2009-12-23T12:37:11.657 に答える
1

2000年はかなり低いです。あまり苦しむことなく、かなりの金額を上げることができます。

次に、ログアウト時に履歴を保存することをお勧めします。これは、新しいコマンドが .history ファイルに追加されるときだからです。

$HOME に .logout というファイルを作成します (bash ユーザーの場合、このファイルは .bash_logout です)。これで、履歴の内容を永続ストアにコピーします。例えば:

cat $HOME/.history >> $HOME/.ancient_history

これにより、履歴がファイル「.ancient_history」に追加されます。bash ユーザーの場合、コピーするファイルは .bash_history と呼ばれます。

次に、これのバックアップを時々作成する cron ジョブを作成します。手始めに、毎日午前 0 時 5 分に日付スタンプを付けたファイル名にファイルを移動するものを次に示します。

 5 0 * * *       mv $HOME/.ancient_history $HOME/.ancient_history_`date +%s`

これでできることは他にもあると思いますが、始めるにはこれで十分です。私も前にやろうとは考えていなかったのはかなり良いアイデアです:-)

于 2009-12-23T13:00:40.103 に答える