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

ldxq2e6h  于 2023-05-01  发布在  Shell
关注(0)|答案(2)|浏览(171)

我正在尝试为mac os创建一个别名,以删除一些以前敏感的历史命令
我试过了
对于$中的h(历史|grep“msql”|awk '{print $1-N}');return $h ;完成;

作品

$中的h(历史|grep“msql”|wk '{print $1-N}');do历史-d $h ;完成;

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

编辑

此命令在Ubuntu上100%工作

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

我只是好奇为什么它不能在OSX上运行

klh5stk1

klh5stk11#

我不会自动处理一次性问题。据推测,手动删除敏感的历史记录条目所需的时间不到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

1.任何以一个空格开头的命令都不会包含在bash历史中。

  1. HISTIGNORE是一个以冒号分隔的模式列表,用于决定哪些命令行应保存在历史记录列表中。修改bash历史记录以忽略未来的xyz命令,方法是将其添加到.bashrc.bash_profile中:
export HISTIGNORE=' :xyz'

1.禁用当前shell的历史记录。

$ set +o history

1.完全清除指挥历史。

$ history -c
ijxebb2r

ijxebb2r2#

  • 确定您正在使用的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。删除要删除的所有命令。
  • 打开新的终端,你会看到,你希望消失的命令真的消失了!

相关问题