删除OS X上的特定历史记录命令



我正在尝试为macos创建一个别名,以删除一些以前的敏感历史命令

我试过

对于$中的h(history|grep"msql"|awk'{print$1-N}'(;do echo$h;完成;

工作

对于$中的h(history|grep"msql"|awk'{print$1-N}'(;做历史-d$h;完成;

-bash:历史:468:历史位置超出范围

编辑

这个命令在Ubuntu 上100%有效

for h in $(history | grep "msql" | awk '{print $1-N}' | tac) ; do history -d $h ; done; history

我只是好奇为什么它不能在OS X 上工作

我不会自动处理一次性问题。手动删除敏感历史记录条目大概需要不到5分钟的时间。下面我展示了如何防止它们在未来发生。

  1. 使用grep查找历史中的特定行,并使用history -d:删除历史中的指定行

    $ history | grep password
    121  Sun 28 Aug 2016 03:33:11 AM PDT mysql -u root -p oops_this_is_my_password
    122  Sun 28 Aug 2016 03:33:19 AM PDT history | grep password
    $ history -d 121
    $ history | grep password
    121  Sun 28 Aug 2016 03:33:19 AM PDT history | grep password
    123  Sun 28 Aug 2016 03:33:29 AM PDT history | grep password
    
  2. 任何以一个空格开头的命令都不会包含在bash历史记录中。

  3. HISTIGNORE是一个以冒号分隔的模式列表,用于决定哪些命令行应保存在历史列表中。通过将bash历史添加到.bashrc.bash_profile:,修改bash历史以忽略未来名为xyz的命令

    export HISTIGNORE=' :xyz'
    
  4. 禁用当前外壳程序的历史记录。

    $ set +o history
    
  5. 完全清除命令历史记录。

    $ history -c
    
  • 识别您正在使用的shell。如果是zsh,那么您的历史文件就是~/.zsh_history。如果你使用bash,那么它应该是~/.bash_history

  • 在你做任何事情之前,备份相应的文件

$ cp -rfp ~/.zsh_history ~/.zsh_history-bkp
# in case we mess things up, otherwise we can remove it.
  • 然后可以在任何编辑器中打开文件~/.zsh_history。删除任何要删除的命令。

  • 打开新的终端,你会发现,你原本希望消失的命令确实消失了!

最新更新