履歴から「echo」で始まるコマンドを削除する方法

履歴から「echo」で始まるコマンドを削除する方法

私は以下を試しました:

history -d $(history | grep "echo.*" |awk '{print $1}')

ただし、履歴からすべてのコマンドを削除するわけではありません。echo

echo次のように始まるすべてのコマンドを削除したいと思います。

echo "mamam"
echoaaa
echo "hello"
echooooo

答え1

すべての関連項目を削除し$HISTFILEてから履歴を消去し、変更されたファイルから(再度)読み込むことができます。

sed -i '/^echo/d' "$HISTFILE"
history -c
history -r "$HISTFILE"

もちろん、これは$HISTFILE古い履歴をロードするために使用されたすべての新しいシェルインスタンスに影響を与えるため、現在のシェルの範囲外です。

答え2

どうですか?

history | cut -b8- | grep -v "^echo" > /tmp/TMP; history -c; history -r /tmp/TMP; rm /tmp/TMP

関連情報