Ant*_*nto 3 command-line bash 14.04
我正在处理一个托管在 ubuntu 服务器上的数字海洋上的客户端项目,我正在与其他一些开发人员一起工作,我是一个新人,并且编写了一堆命令,它真的很混乱。如何删除特定点的命令历史记录?
例如,我想删除我今天输入的所有命令,并保留之前所有以前的命令,这可能吗?
其他开发人员更容易找到以前的命令,而无需遍历我的所有命令。是否可以将 bash_history 清除到某个点,例如只有今天的历史?如果是这样,如何?
请指教!
谢谢!
Bash 历史记录中的行保存为纯文本行,没有任何元信息,如调用时间戳。因此,不可能从一天自动清除所有命令历史记录,因为您根本无法再知道哪个命令何时运行。
如果您只是想删除当前 Bash 会话的整个命令历史记录(即所有仍在内存中且尚未写入磁盘的内容),您可以清除内存中的历史记录缓冲区或将其替换为旧的历史记录磁盘中的文件内容。
清除历史缓冲区将导致您当前会话的内存中历史记录为空,这意味着如果您按?等,则不会显示任何命令。一旦您退出 Bash 会话,清除后输入的所有新命令都将被附加到历史文件,在您的下一个会话中,您将再次看到完整的历史记录,只有上次会话的开始和 clear 命令之间的范围丢失。
history -c
Run Code Online (Sandbox Code Playgroud)用磁盘中的历史文件的内容替换当前内存中的历史缓冲区将与清除历史缓冲区具有相同的最终结果,除了在当前会话中您将可以访问旧的命令历史记录而不是空列表。
history -r
Run Code Online (Sandbox Code Playgroud)如果这对您没有帮助,因为您想整理以前会话或仅部分会话的条目,则需要手术方法:
将当前内存中的历史缓冲区同步到磁盘上的历史文件,然后在文本编辑器中打开该文件并手动删除所有有问题的条目。
要将当前会话的历史记录手动附加到历史文件中(因为它只会在您退出会话时自动发生),请先运行:
history -a
Run Code Online (Sandbox Code Playgroud)
之后,~/.bash_history在您喜欢的文本编辑器中打开 Bash 历史文件(因为您在服务器上,我建议例如nano)并根据您的喜好编辑命令列表。该文件按时间顺序列出所有记录的命令,最新的命令排在最后。只需删除违规行并保存您的工作。
之后,您应该使用以下命令将修改后的历史记录重新加载到内存中的历史记录缓冲区中,以防止在退出会话时将内存中的旧条目附加到整理的历史记录文件中:
history -r
Run Code Online (Sandbox Code Playgroud)