如何从ZSH的历史logging中删除条目
比方说,我使用zsh运行了一个命令
echo "mysecret" > file
我可以使用命令fc -l
轻松打印历史logging,包括条目号:
1 echo "mysecret" >| file
但是,我怎样才能轻松地从历史logging中删除一个条目?
我在man zshbuiltins中找不到相应的段落。
* BSD /达尔文:
LC_ALL=C sed -i '' '/porn/d' $HISTFILE
Linux(GNU sed):
LC_ALL=C sed -i '/porn/d' $HISTFILE
这将删除$ HISTFILE中与“porn”匹配的所有行。
通过setopt HIST_IGNORE_SPACE
,你可以在空间字符前加上上面的命令来防止写入$ HISTFILE。
正如Tim在他的评论中指出的那样 ,LC_ALL = C的前缀可以防止“非法字节序列”失败。
我不知道是否有一些优雅的方法来做到这一点,但在类似的情况下,我已经注销(允许zsh清空缓冲区,并将我的历史logging写入文件),然后login,最后手动编辑 ~/.zsh_history
,删除“危险”的路线。
如果您在zsh中使用HIST_IGNORE_SPACE选项,则可以用空格“”来预加命令,并且不会在历史logging文件中记住它们。 如果你有秘密的命令你通常使用,你可以做这样的事情:
http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/