回答:
history -d offset
builtinを使用して、現在のシェルの履歴から特定の行を削除したり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 ))
。