Naf*_*Kay 161 bash command-history
有没有办法在 bash 中暂时暂停历史跟踪,从而进入一种“隐身”模式?我正在我的终端中输入一些我不想记录的敏感财务信息。
Sie*_*geX 225
这应该是你要找的:
unset HISTFILE
Run Code Online (Sandbox Code Playgroud)
man bash如果未设置 HISTFILE,或者历史文件不可写,则不会保存历史。
或者,如果您想将其关闭然后重新打开,使用它可能更容易set:
set +o history
Run Code Online (Sandbox Code Playgroud)
set -o history
Run Code Online (Sandbox Code Playgroud)
for*_*sck 41
使用 bash,设置HISTCONTROL="ignorespace"您不希望记录在历史记录中的任何命令并在其前面加上空格。如果您忘记采取任何措施,还history -d <number>可以删除特定条目或history -c清除整个命令历史记录。
Gil*_*il' 27
确保HISTCONTROL包含ignorespace. 您可能想要将HISTCONTROL=ignorespace(或HISTCONTROL=ignoredups:ignorespace或其他)添加到您的~/.bashrc. 然后任何以空格开头的命令行都会从历史记录中省略。
另一种可能性是启动一个不保存其历史记录的新 bash 会话。
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Run Code Online (Sandbox Code Playgroud)
如果您需要避免存储多个命令,并且仍想使用向上箭头访问以前的命令,请使用:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Run Code Online (Sandbox Code Playgroud)
有四种方式(级别)来控制命令的存储方式。
第一个也是最简单的是使用ignorespace(或忽略两者):
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Run Code Online (Sandbox Code Playgroud)
这将允许在您想要避免被记录在history. 并且,因此,由于内存中没有记录可以发送到文件的命令,也将避免将一个命令发送到$HISFILE.
避免将命令记录到以下文件中$HISTFILE:
$ unset HISTFILE
Run Code Online (Sandbox Code Playgroud)
如果未设置,则在 shell 退出时不会保存命令历史记录。
NullHISTFILE=''和/或设置为HISTFILE=/dev/null相同的效果。了解命令仍在记录到内存列表,尝试history命令或向上箭头。
警告:如果在 shell 存在之前重置 HISTFILE,则无论如何都可以将所有记录在内存中的内容写入文件。
避免将新命令记录到内存中的历史列表中。并且,由于不在内存中,无法记录到文件中。
$ shopt -ou history # or set +o history
Run Code Online (Sandbox Code Playgroud)
使用shopt -os history(或set -o history)重新启用
从内存中的历史列表中删除所有命令:
$ HISTSIZE=0
Run Code Online (Sandbox Code Playgroud)
所有命令都会被擦除(从内存中),因此任何东西都不能存储到文件中,当然,直到变量再次设置为某个有效的数值。