tim*_*thy 8 bash terminal command-line autocomplete windows-subsystem-for-linux
经过一些在线搜索后,我发现以下命令应该从 bash 历史记录中删除单个条目:
$ history -d <number>
Run Code Online (Sandbox Code Playgroud)
假设我想从我的历史记录中删除这一行,因为我拼错了 git :
10003 gti add . && git commit -m
Run Code Online (Sandbox Code Playgroud)
当我执行以下命令时:
$ history -d 10003
Run Code Online (Sandbox Code Playgroud)
即使我重新启动终端,它仍然显示在我的历史记录中
所以我知道如何解决这个问题,因为我使用自动完成功能,有时尤其是在使用 git 时,它可能会变得有点混乱。
Bash 中的命令历史记录既存储在内存中(通常用于当前 shell 会话),也存储在磁盘上(默认情况下以~/.bash_history
. 当会话终止时,默认历史记录配置可能会将内存中会话附加到磁盘上的文件,但有很多旋钮需要调整。
要从历史记录中永久删除命令,运行 后history -d <number>
,您可以运行history -w
。这会将内存中的会话和对旧历史记录的任何编辑写回文件~/.bash_history
。
您也可以~/.bash_history
直接编辑该文件。只要您在这种情况下不运行history -w
,当前 Bash 会话退出时就不会触及旧命令。
历史设置的一些参考:
\nHISTFILE
\xe2\x80\x93 保存历史记录的文件(默认为~/.bash_history
)HISTFILESIZE
\xe2\x80\x93 历史文件中存储的命令数(默认为HISTSIZE
)HISTSIZE
\xe2\x80\x93 存储在(内存中)历史列表中的命令数量(默认为 500)cmdhist
\xe2\x80\x93 shell 选项用于将多行命令保存在单个历史记录条目中histappend
\xe2\x80\x93 shell 选项,用于控制是否将历史列表附加到历史文件,或者是否覆盖历史文件lithist
\xe2\x80\x93 shell 选项使用换行符而不是分号来存储多行命令Unix & Linux Stack Exchange 站点上的这个答案-w
推荐了该选项。