Bash履歴から長いコマンドを削除する方法

Bash履歴から長いコマンドを削除する方法

bash履歴から長すぎるコマンドを削除する簡単な方法(bashコマンドなど)はありますか?一部の長いコマンドはデフォルトでレンダリングされるため、CTRL使用Rできません。 (理想的には、今後も長すぎるコマンドを履歴に保存しないことをお勧めします。)

答え1

次のように bash 関数を作成できます。

myhistory(){
   history -w
   gawk -i inplace '{if(length($0)<60)print}' "$HISTFILE"
   history -c
   history -r
}

メモリ内の履歴をファイルに保存したいときに実行し、 history -wgnuを使用してファイルをawk編集し、制限(ここでは60)より短い行だけを書き換えます。メモリの記録を消去し、-cファイルからメモリに戻ります-r

入力されたすべてのコマンドに対してこれを行うには、すべてのプロンプトの前に呼び出されるように設定できますPROMPT_COMMAND='myhistory'

答え2

次のコマンドで Bash 履歴を表示できます。

history

ここから履歴から不要なコマンド番号を削除できます。Nコマンド経由

history -d <n>

一度に複数のコマンド番号を指定(したがって削除)できます。


また、コマンドの実行が履歴に保存されないようにするには、コマンドを実行する前にコマンドの前にスペースを追加します。

[root@mylinuxbox ~]# cat /etc/hostname

履歴に保存されます。

[root@mylinuxbox ~]#  cat /etc/hostname

いいえ。

@phuclvがコメントで指摘したように、HISTCONTROL変数(yoursなど)を設定して~/.bashrcこの動作を有効にします。

export HISTCONTROL=ignorespace

答え3

~/.bash_historyエディタを使用してこれらの行を編集および削除できます。

関連情報