B S*_*ven 285 command-line shell bash command-history
我在 Mac OSX 上工作,所以我想我在使用 bash...?
有时我会输入一些我不想被历史记住的东西。如何删除它?
jw0*_*013 485
如果要运行命令而不将其保存在历史记录中,请在其前面加上一个额外的空格
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
Run Code Online (Sandbox Code Playgroud)
为此,您需要ignorespace或ignoreboth在HISTCONTROL. 例如,运行
HISTCONTROL=ignorespace
Run Code Online (Sandbox Code Playgroud)
要使此设置持久化,请将其放入您的.bashrc.
如果您已经运行该命令,并希望将其从历史记录中删除,请首先使用
history
Run Code Online (Sandbox Code Playgroud)
显示历史记录中的命令列表。找到要删除的数字旁边的数字(例如 1234)并运行
history -d 1234
Run Code Online (Sandbox Code Playgroud)
此外,如果您要删除的行已经写入您的 $HISTFILE(默认情况下通常会在您结束会话时发生),您将需要写回 $HISTFILE,否则该行将在您打开新文件时重新出现会议:
history -w
Run Code Online (Sandbox Code Playgroud)
小智 68
要清除所有历史记录,请使用
history -c
Run Code Online (Sandbox Code Playgroud)要删除单行,请使用
history -d linenumber
Run Code Online (Sandbox Code Playgroud)小智 17
如果您使用 Zsh,则history -d linenumber无法删除命令行历史记录中的特定行号。但是您可以编辑历史文件。关闭并重新打开终端并编辑历史记录,如下所示:
nano ~/.zsh_history
Run Code Online (Sandbox Code Playgroud)
请参阅此了解更多详细信息。
小智 12
我在我的 中有这个~/.bashrc,这使得$ forget命令从历史记录中删除上一个命令
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
Run Code Online (Sandbox Code Playgroud)
如果你想忘记整个 bash 会话,你可以kill当前的 bash 进程。由于变量$$保存pid当前 shell的变量,您可以执行以下操作:
kill -9 $$
Run Code Online (Sandbox Code Playgroud)
小智 5
要从历史文件中删除一行,请使用 -d 选项。例如,如果您想要清除上面场景中输入明文密码的命令,请在历史文件中找到行号并运行此命令。
$ history -d 2038
要删除或清除 bash 历史记录中的所有条目,请使用下面的带有 -c 选项的历史命令。
$ history -c
或者,您可以使用以下命令永久删除文件中所有上次执行命令的历史记录。
$ cat /dev/null > ~/.bash_history
另外,在 Bash 5 中,您还可以删除范围
history -d 511-520
| 归档时间: |
|
| 查看次数: |
296990 次 |
| 最近记录: |