如何从历史记录中删除以“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加载旧历史记录的所有新 shell 实例,从而超出当前 shell 范围。

答案2

怎么样

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

相关内容