履歴から特定のコマンドのすべての発生を削除します。

履歴から特定のコマンドのすべての発生を削除します。

履歴から特定のアイテムを削除しようとしています。説明 - 指定されたコマンド/またはテキストを含むすべてのイベントを削除することを意味します。 Aliteralmindのhxfスクリプトを使用しました。

:<

Examples
    hxf "rm -rf"


#The unalias prevents odd errors when calling". ~/.bashrc" (May result in
#"not found" errors. That's okay).
unalias hxf

hxf()  {
read -r -p "About to delete all items from history that match \"$1\".      
Are you sure? [y/N] " response
response=${response,,}    # tolower
if [[ $response =~ ^(yes|y)$ ]]
then
    #Delete all matched items from the file, and duplicate it to a temp
    #location.
    echo -e "grep -v \"$1\" \"$HISTFILE\" > /tmp/history"
    grep -v "$1" "$HISTFILE" > /tmp/history

    #Clear all items in the current sessions history (in memory). This
    #empties out $HISTFILE.
    echo "history -c"
    history -c

    #Overwrite the actual history file with the temp one.
    echo -e "mv /tmp/history \"$HISTFILE\""
    mv /tmp/history "$HISTFILE"

    #Now reload it.
    echo -e "history -r \"$HISTFILE\""
    history -r "$HISTFILE"     #Alternative: exec bash
else
    echo "Cancelled."
fi
}

(からhttps://unix.stackexchange.com/a/178956/115826)

ただし、hxfスクリプトを実行すると、履歴に次のように表示されます。 (例:)

401 254: 263: 287: 288: 293: cd ~
402 203: 243: 290: 309: 315: 332: 370: 377: 389: 400: ls
403 200: 207: 255: 263: 302: 325: 359: 378: 385: 393: 397: 399: nedit

コマンドが発生するたびにインデックスリスト表示履歴を削除するには、hxf()スクリプトをどのように変更する必要がありますか? hxf() を実行した後、上記の結果が得られました。実行する前の履歴は次のとおりです。

401 cd ~
402 ls
403 nedit

アイテムのリストがすぐに長くなり、読みにくい場合があります。 hxfを実行する前に、履歴出力を表示する必要があります。唯一の違いは、hxf()で削除したコマンドが削除されることです。

答え1

履歴からコマンドを削除する方法を尋ねられた場合:

記録-d(数字)

「歴史」を実行して数値を取得する

関連情報