私はubuntuサーバーのデジタルオーシャンでホストされているクライアントプロジェクトに取り組んでいます。他の数人の開発者と一緒に取り組んでいます。私は一種の新人で、たくさんのコマンドを作成しましたが、本当に面倒です。特定の時点までのコマンド履歴を削除するにはどうすればよいですか?
たとえば、今日入力したすべてのコマンドを削除し、それ以前のすべてのコマンドをその前に残したいのですが、これは可能ですか?
他の開発者は、私のすべてを調べなくても、以前のコマンドを見つけるのが簡単です。たとえば今日の履歴だけなど、特定の時点までのbash_historyをクリアすることは可能ですか?もしそうなら、どのように?
アドバイスしてください!
ありがとう!
承認された回答:
Bash履歴の行は、呼び出しタイムスタンプなどのメタ情報を含まないプレーンなテキスト行として保存されます。そのため、どのコマンドがいつ実行されたかがわからなくなるため、1日からすべてのコマンド履歴を自動的に消去することはできません。
現在のBashセッションのコマンド履歴全体(つまり、まだメモリ内にあり、まだディスクに書き込まれていないものすべて)を削除したいだけの場合は、メモリ内の履歴バッファをクリアするか、古い履歴に置き換えることができますディスクからのファイルの内容。
-
履歴バッファをクリアすると、現在のセッションのメモリ内履歴が空になります。つまり、↑を押してもコマンドは表示されません。 、など。Bashセッションを終了すると、クリア後に入力されたすべての新しいコマンドが履歴ファイルに追加され、次のセッションで、最後のセッションの開始から開始までの範囲のみで、完全な履歴が再び表示されます。クリアコマンドがありません。
history -c
-
現在のメモリ内の履歴バッファをディスクの履歴ファイルの内容に置き換えると、現在のセッションで空のリストではなく古いコマンド履歴にアクセスできることを除いて、履歴バッファをクリアした場合と同じ最終結果になります。
history -r
以前のセッションまたは部分的なセッションからのエントリを整理したいためにそれが役に立たない場合は、外科的方法が必要です:
現在のメモリ内の履歴バッファをディスク上の履歴ファイルに同期してから、そのファイルをテキストエディタで開き、問題のあるエントリをすべて手動で削除します。
関連:バックアップに含めるフォルダはどれですか?現在のセッションの履歴を手動で履歴ファイルに追加するには(セッションを終了したときにのみ自動的に行われるため)、最初に次のコマンドを実行します。
history -a
その後、Bash履歴ファイル~/.bash_history
を開きます お気に入りのテキストエディタで(サーバーを使用している場合は、nano
などをお勧めします )そしてコマンドリストを好きなように編集します。このファイルには、記録されたすべてのコマンドが時系列で一覧表示され、最新のコマンドが最後に表示されます。問題のある行を削除して、作業を保存するだけです。
その後、セッションを終了するときにメモリからの古いエントリが整理された履歴ファイルに追加されないようにするために、以下のコマンドを使用して、変更された履歴をメモリ内の履歴バッファに再ロードする必要があります。
history -r