我已经尝试过以下方法:
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