シェルで最後の10個のコマンドの履歴を削除するには?

コマンドは以下の通りです。

  511  clear
  512  history
  513  history -d 505
  514  history
  515  history -d 507 510 513
  516  history
  517  history -d 509
  518  history
  519  history -d 511
  520  history

history -d 511`で1つのコマンドを削除することはできますが、シェルで1つのコマンドを使って、最後の10個のコマンドとその間のコマンドの履歴を削除するにはどうしたらよいでしょうか?

bashスクリプトを書いて、履歴削除のために実行することはできますか?

ヒストリーファイルを直接編集してみましたか?

~/.bash_history
解説 (9)
for x in `seq $1 $2`
do
  history -d $1
done
解説 (4)

edit:

中括弧付きのイテレータを変更、いい感じ。また、この関数を逆イテレータで呼び出す。

おそらくこんな感じでできると思います。

#!/bin/bash
HISTFILE=~/.bash_history   # if you are running it in a 
                           # non interactive shell history would not work else
set -o history
for i in `seq $1 $2`;
do
    history -d $i
done
history -w

このように喚起するところ。

./nameOfYourScript 563 514

境界線のエラーチェックをしていないことに注意してください。これは読者の練習問題としておいてください。

この質問]1も参照してください。

解説 (3)