回答:
history -d offsetbuiltinを使用して、現在のシェルの履歴から特定の行を削除したりhistory -c、履歴全体をクリアしたりできます。
ある範囲の行を削除したい場合、実際には実用的ではありません。引数として1つのオフセットしか取らないので、ループを使用して関数にラップすることができます。
rmhist() {
start=$1
end=$2
count=$(( end - start ))
while [ $count -ge 0 ] ; do
history -d $start
((count--))
done
}
で呼び出しrmhist first_line_to_delete last_line_to_deleteます。(の出力に応じた行番号history。)
(history -w履歴ファイルへの書き込みを強制するために使用します。)
$(history | wc -l)、$HISTCMD使用できる変数があります。
コマンドプロンプトでこの1つのライナーだけが役立ちます。
for i in {1..N}; do history -d START_NUM; done
START_NUMは、履歴のエントリの開始位置です。Nは、削除するエントリの数です。
例: for i in {1..50}; do history -d 1030; done
tot_lines=$(history | wc -l)し、その後繰り返しhistory -d $(( tot_lines - $1 ))。