我正在尝试为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分钟的时间。下面我展示了如何防止它们在未来发生。
-
使用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
-
任何以一个空格开头的命令都不会包含在bash历史记录中。
-
HISTIGNORE
是一个以冒号分隔的模式列表,用于决定哪些命令行应保存在历史列表中。通过将bash历史添加到.bashrc
或.bash_profile
:,修改bash历史以忽略未来名为xyz的命令export HISTIGNORE=' :xyz'
-
禁用当前外壳程序的历史记录。
$ set +o history
-
完全清除命令历史记录。
$ 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
。删除任何要删除的命令。打开新的终端,你会发现,你原本希望消失的命令确实消失了!