我经常使用终端,有时我会运行命令,这些命令并不是我不想让别人看到的东西,而是如果我不小心按到这些命令并意外执行它们,就会引起很多麻烦。
所以我想知道是否存在,或者我可以制作某种终端“隐身模式”,允许我在执行某个命令后停止记录我的历史记录,然后仅在我执行开始再次记录历史记录命令并退出“隐身模式”后才开始记录,或者我只需重新启动终端?
因为我发现自己后来会去从我的中删除一些东西.bash_history
,而如果我一开始就阻止它在那里录制,或者至少让它尝试将它录制到不允许它录制的地方,而最终就不会录制它,那会容易得多。
答案1
运行命令但不将其放入历史记录中:
只需在命令前添加一个空格即可。Bash 将忽略带有前缀空格的命令:
例子:Spaceecho "Some secret text"
HISTCONTROL
注意:仅当变量设置为ignorespace
或 时才有效ignoreboth
。
暂时禁用历史记录:
- 运行Space
set +o history
或Spaceshopt -uo history
禁用历史记录。 - 运行
set -o history
或shopt -so history
再次启用它。
禁用当前会话的历史记录(不会记住会话中的任何命令):
unset HISTFILE
注意:您将能够看到正在按下的命令,Up直到关闭终端。
从历史记录中删除命令:
跑步Spacehistory | grep "part of your secret command"
它将显示以前运行的命令列表,格式如下:
user@host:~$ history | grep pkill
302 pkill $$
467 pkill gone-cal
468 pkill actionaz
500 pkill chrome
550 pkill super
选择命令左侧的条目编号。您可以使用++Ctrl复制它ShiftC
运行Spacehistory -d <number>
where <number>
is the entry number 来删除该条目。
您可以使用++Ctrl粘贴该号码ShiftV
其他有趣的答案:
答案2
你可以直接删除历史记录一个特定的终端会话history -cw
通过在工作后添加命令。
发出此命令之前请勿关闭终端。
答案3
shopt -uo history
应该做到最好。
删除HISTFILE
(et al) 变量不会停止Up记录您的历史记录,只是不会将其推送到磁盘。这对您来说可能是好事,也可能不是好事,但既然您提到了这一点,我猜您想要更好的东西。更改shopt
历史记录设置会阻止整个历史记录机制触发。
shopt -so history
您可以使用(-s
和-u
分别设置和取消设置)重新打开日志记录。
请注意,命令本身可能会被记录,因此在清除变量之前,请在命令前面添加一个空格以阻止将其添加到历史记录中。
答案4
要暂时禁用当前会话的命令历史记录,您可以暂时取消设置 HISTFILE 环境变量。
unset HISTFILE
会话处于活动状态时,您可以照常访问历史记录,但历史记录不会保存到磁盘。
在同一会话中撤销(所有更改都将被记录)
HISTFILE=$HOME/.bash_history