web-dev-qa-db-ja.com

現在の日に限りbash_historyを削除するにはどうすればよいですか?

私はubuntuサーバー上のデジタルオーシャンでホストされているクライアントプロジェクトに取り組んでいます。他の数人の開発者と一緒に取り組んでいます。特定の時点までコマンド履歴を削除するにはどうすればよいですか?

たとえば、今日入力したすべてのコマンドを削除し、その前のコマンドをすべて残したいのですが、これは可能ですか?

他の開発者は、私のすべてを経験することなく以前のコマンドを見つけるのが簡単です。今日の履歴など、特定の時点までbash_historyをクリアすることは可能ですか?もしそうなら、どのように?

お知らせ下さい!

ありがとう!

1
Anthony Pinto

Bash履歴の行は、呼び出しタイムスタンプなどのメタ情報なしでテキストのプレーン行として保存されます。そのため、どのコマンドがいつ実行されたのかが分からなくなるため、1日のすべてのコマンド履歴を自動的に消去することはできません。


現在のBashセッションのコマンド履歴全体(つまり、まだメモリにのみ存在し、まだディスクに書き込まれていないものすべて)を単に削除する場合は、メモリ内履歴バッファをクリアするか、古い履歴に置き換えることができます。ディスクのファイルの内容。

  • 履歴バッファをクリアすると、現在のセッションのメモリ内履歴が空になります。つまり、を押してもコマンドは表示されません。 Bashセッションを終了すると、クリア後に入力されたすべての新しいコマンドが履歴ファイルに追加され、次のセッションで、最後のセッションの開始から開始までの範囲のみで、完全な履歴が再度表示されます。およびclearコマンドが欠落しています。

    history -c
    
  • 現在のメモリ内履歴バッファーをディスクの履歴ファイルのコンテンツに置き換えると、現在のセッションで空のリストの代わりに古いコマンド履歴にアクセスできることを除いて、履歴バッファーをクリアするのと同じ最終結果が得られます。

    history -r
    

前のセッションまたは部分的なセッションからのエントリを整理するためにそれが役に立たない場合は、外科的方法が必要です:

現在のメモリ内履歴バッファをディスク上の履歴ファイルに同期してから、そのファイルをテキストエディタで開き、問題のあるエントリをすべて手動で削除します。

現在のセッションの履歴を手動で履歴ファイルに追加するには(セッションを終了したときにのみ自動的に行われるため)、最初にこれを実行します:

history -a

その後、Bash履歴ファイル~/.bash_historyをお気に入りのテキストエディターで開き(サーバーを使用している場合は、nanoなどをお勧めします)、コマンドリストを好きなように編集します。ファイルには、記録されたすべてのコマンドが時系列でリストされ、最新のコマンドが最後に表示されます。問題のある行を削除して、作業を保存してください。

その後、セッションを終了するときにメモリから古いエントリが整理された履歴ファイルに追加されるのを防ぐために、以下のコマンドを使用して、変更した履歴をメモリ内の履歴バッファにリロードする必要があります。

history -r
2
Byte Commander

履歴の行を削除するには

 history -d NNN

ここで、nnnは3桁の行番号です。 man historyもご覧ください。現在のシェルセッションの履歴は、次の方法で削除できます。

 history -c 
0
0x0C4