终端’隐身模式’?

我经常使用终端,有时我正在运行命令,这些命令不是我不希望别人看到的,但是如果我不小心向上并且意外执行了更多命令会导致很多麻烦。

所以我想知道是否有,或者我可以制作某种终端’隐身模式’,这将允许我在执行某个命令后停止录制我的历史记录,然后只有在我执行一个后才开始录制再次开始录制历史命令并退出’隐身模式’,或者我只是重启终端?

因为我后来发现自己从我的.bash_history移除了东西,如果我可以更容易地停止它在那里录制,或者至少让它试图将它录制在某个地方,它只是不会被允许,并且最终不会记录它。

运行命令而不将其放入历史记录中:

只需在命令前放置一个空格。 Bash将忽略具有前置空格的命令:

示例: 空间 echo "Some secret text"

注意:这仅在HISTCONTROL变量设置为ignorespaceignoreboth


暂时禁用历史:

  • 运行Space set +o historySpace shopt -uo history以禁用历史记录。
  • 运行set -o historyshopt -so history以再次启用它。

禁用当前会话的历史记录(不记得会话中的任何命令):

 unset HISTFILE 

注意:在关闭终端之前,您将能够看到按下的命令。


从历史记录中删除命令:

运行空间 history | grep "part of your secret command" history | grep "part of your secret command"

它将以以下格式显示以前运行的命令列表:

 casa@portátil:~$ history | grep pkill 302 pkill $$ 467 pkill gone-cal 468 pkill actionaz 500 pkill chrome 550 pkill super 

选择命令左侧的条目编号。 您可以使用Ctrl + Shift + C复制它

运行空间 history -d 其中是要删除条目的条目号。
您可以使用Ctrl + Shift + V粘贴该数字


其他有趣的答案:

  • @echristopherson
  • @MoithilBiswas
  • @dolt

您可以通过在工作后添加命令history -cw来删除一个特定终端会话的history -cw 。 在发出命令之前,请勿关闭终端。

shopt -uo history应该做到最好。

Nuking HISTFILE (等)变量不会阻止记录您的Up历史记录,它只是不会将其推送到磁盘。 这对你来说可能是积极的,也可能不是积极的,但是如果你提到它,我想你想要更好的东西。 更改shopt历史记录设置会使整个历史记录机制停止触发。

您可以使用shopt -so history记录重新开启日志shopt -so history (分别设置和取消设置-s-u )。

请注意,可能会记录命令本身,因此在清除变量之前,请在其前面添加一个空格以停止将其添加到历史记录中。

在不登录历史文件的情况下终止当前shell的另一种方法是:

 kill -9 $$ 

这会导致bash(以及可能还有其他shell)将SIGKILL信号发送给自己,在现场将其杀死并阻止它将任何内容写入磁盘。

要临时禁用当前会话的命令历史记录,可以暂时取消设置HISTFILE环境变量。

 unset HISTFILE 

会话处于活动状态时,您可以照常访问历史记录,但不会将其保存到磁盘。

在同一会话中反转(将记录所有更改)

 HISTFILE=$HOME/.bash_history 

您可以在当前shell会话中修改历史记录行。 如果您返回历史记录(例如,使用“ 向上”或“ Ctrl + P” )并更改一行而不执行该行,则仅保存该行的修改版本。 你可以用自己喜欢的方式修改它; 好的选择包括使用Ctrl + U完全消隐该行或使用Esc 在开头添加#comment字符。

要在不执行的情况下留下一行,请记住不要按Return回车 )。 我所做的是通过Esc >返回历史上最新的一行。

(而不是Esc后面跟着> ,在大多数终端中你可以按住Alt并按> ;同样适用于上面的Esc 建议。)

注意:您不能以这种方式永久修改以前会话中的条目。 这些更改将不会在会话结束时应用于HISTFILE

您也可以将.bash_history设为只读。 我会先清空文件,然后执行:

  chattr +i .bash_history 

您可以在屏幕会话中执行敏感命令,然后在完成后销毁会话。

或者,您可以保持该屏幕会话处于活动状态但已分离,并且只有在您确实希望能够将箭头指向其他危险命令时才能访问它。

我个人使用mksh ,默认情况下这个shell没有历史文件。 这意味着您可以启动替代shell,例如mkshdash (默认情况下是顺便提供)来运行您不希望用户看到的命令,并在完成后退出。 bash历史记录只记录你启动了替代shell,就是这样。

您还可以使用终端多路复用器,如tmuxscreen 。 因此,在tmuxscreen历史记录下将无法保存。