質問

私は私のものを書いています PROMPT_COMMAND="history -a;$PROMPT_COMMAND" しかし、私はまださまざまなターミナルセッションからいくつかの複製を取得しています。私はまだいくつかの複製を取得するようですが、コマンドの使用が少なくなります PROMPT_COMMAND="history -w;$PROMPT_COMMAND".

私はできることを知っています history -a;history -c; history -r しかし、私はそれらすべてを同期させたくありません。私は歴史-nと呼ぶときにそれが起こることを望んでいます。私は基本的に、歴史-Aまたは歴史-Wのいずれかを使用することにしていますが、2つの違いを見つけることができないようです。どちらができるだけ多くの複製を避ける必要がある方が良いでしょう。

役に立ちましたか?

解決

あなたは2つの質問を述べました:

違いは何ですか history -ahistory -w?

history -a 意思 追加 履歴ファイルのコンテンツに対する現在のセッション履歴。

history -w 意思 交換 現在のセッション履歴を含む履歴ファイルのコンテンツ。

どちらがより多くの複製を避けますか?

理論的にはどちらでもありません。ない -a または -w 重複をチェックします。特に -w 履歴ファイルのコンテンツを置き換えるため、さらに複製を回避します。ファイル内の潜在的な複製エントリは、ファイル内の他のものとともに削除されます。

の詳細を読んでください history 指図 バッシュマニュアルで。


重複を殺す他の可能性に関するいくつかの情報:

特別なバッシュ変数 HISTCONTROL=ignoredups ここではあまり役に立ちません。なぜなら、それはランニングシェルに入力されているときに重複を排除するからです。現在の歴史や履歴ファイルの既存の複製を防ぐことはできません。さらに ignoredups 以前のコマンドの複製であるコマンドを無視するだけでなく、歴史の以前のコマンドの複製である場合ではありません。

残念ながら、あまり有望でさえありません HISTCONTROL=erasedups ここで大いに役立ちます。 erasedups 現在入力されているコマンドに一致する履歴エントリを消去します。悲しいことに、それは現在のセッション履歴でのみそうしています。履歴ファイルで複製を検索しません。また、使用するときに複製がセッション履歴に入ることを妨げません history -n.

の詳細を読んでください 特別な変数 HISTCONTROL バッシュマニュアルで。

他のヒント

これを使用して複製を避けることができます

export HISTCONTROL=ignoredups

詳細については、これをご覧ください。

http://stefaanlippens.net/bashduplicates

BASH変数を使用します PROMPT_COMMANDhistory そして使用します sortuniq コマンド:

$> export PROMPT_COMMAND="history -a && history -c && sort ~/.bash_history | uniq > ~/.bash_history_new && rm ~/.bash_history && mv ~/.bash_history_new ~/.bash_history && history -r"

これにより、設定する必要はありません shopt -s histappend そして、やります export HISTCONTROL=erasedups.

これにより、歴史と歴史のファイルがフライで複製せずにファイルを保持します。順調なコマンドが入力された状態でプレイできます(ヒント:履歴で行数を使用し、特定の行の開始位置から並べ替え、重複を削除した後、ライン番号で再びソートします)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top