如何编辑Mac OS X终端历史记录?


12

如何在Mac OS X中编辑我的bash历史记录?我在该窗口中错误输入了密码,并且不想删除我的整个历史记录。

Answers:


14

编辑.bash_history只是使用编辑器打开文件的问题。有两种方法可以实现此目的。

  1. 终端中,键入vi ~/.bash_history,然后根据需要编辑文件并保存。如果您不习惯使用vi,那么此选项可能会很棘手。
  2. 按照以下说明使文件可见,例如,将其打开为其他文件,进行修改并保存。
  3. 终端中输入open ~/.bash_history -a /Applications/TextEdit.app。该命令将使用TextEdit打开文件,您当然可以选择任何其他文本编辑器。修改文件并保存。

为了使更改显而易见,只需重新启动bash。


我正在“权限被拒绝”。执行sudo时,看不到所有输入的命令。
Karthick S 2013年

1
@KarthickS您正在做什么呢?
Thecafremo

如果我查看.bash_history的内容,则其内容与历史命令的输出不同。我都知道,文件的内容较旧。如果打开多个命令窗口会怎样?他们似乎没有共享相同的命令历史记录。PS我确实确认我正在使用bash。
维克多·恩格尔

1
我想我找到了答案。ECHO $ HISTFILE显示要编辑的一个。
维克多·恩格尔

10

在终端输入history并记下行号。下次通话history -d noted-line-number。您可以history再次使用检查该行是否已删除。


2
这不适用于带有ZSH的优胜美地。
Paulo Oliveira 2015年

问题是关于bash,而不是zsh。仔细读!
Unname_1 2016年

1
@DmitryDupelov你说的对,很抱歉打扰。无论如何,这提醒了以后的读者(也可能会漏掉这些细节)。感谢您纠正我的评论。
Paulo Oliveira

2
nano ~/.bash_history

完成后, ctrl+x 再回来接受正确的答案


0

我认为,如果在保存历史记录之前完成Dmitry的答案是理想的-默认情况下,保存发生在shell /终端出口。

如果您可能已经将历史记录保存到〜/ .bash_history中,那么我更喜欢Thecafremo的答案,但是我建议添加一个退出Terminal的步骤,以确保没有任何bash实例加载历史记录并将其重新保存。如果您有多个终端并启用了任何类型的逐命令历史记录更新,则这特别棘手。

背景:

  • bash将历史记录保存在shell实例中
  • bash可以将此历史记录写入文件,这通常在退出外壳程序/终端时发生
  • bash可以从文件读取历史记录,这通常在您打开外壳程序/终端时发生
  • 可以更改默认行为,以便历史记录更快地传播,这可以将BAD_TEXT迁移到文件和其他窗口

无论使用哪种方法,我都将添加一个步骤:验证成功!

  1. 退出Terminal.app
  2. 重新打开Terminal.app
  3. 确认有问题的文本不在历史记录中-最好采用不会创建其他历史记录的方式。也就是说,不要grep BAD_TEXT .bash_history!这个新命令将成为历史。我只要在您喜欢的编辑器中打开.bash_history,然后在其中搜索BAD_TEXT。

这使您可以放心,无论您遇到哪种疯狂的bash设置,都已经消除了BAD_TEXT。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.