终端’隐身模式’?
我经常使用终端,有时我正在运行命令,这些命令不是我不希望别人看到的,但是如果我不小心向上并且意外执行了更多命令会导致很多麻烦。
所以我想知道是否有,或者我可以制作某种终端’隐身模式’,这将允许我在执行某个命令后停止录制我的历史记录,然后只有在我执行一个后才开始录制再次开始录制历史命令并退出’隐身模式’,或者我只是重启终端?
因为我后来发现自己从我的.bash_history
移除了东西,如果我可以更容易地停止它在那里录制,或者至少让它试图将它录制在某个地方,它只是不会被允许,并且最终不会记录它。
运行命令而不将其放入历史记录中:
只需在命令前放置一个空格。 Bash将忽略具有前置空格的命令:
示例: 空间 echo "Some secret text"
注意:这仅在HISTCONTROL
变量设置为ignorespace
或ignoreboth
。
暂时禁用历史:
- 运行Space
set +o history
或Spaceshopt -uo history
以禁用历史记录。 - 运行
set -o history
或shopt -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,例如mksh
或dash
(默认情况下是顺便提供)来运行您不希望用户看到的命令,并在完成后退出。 bash
历史记录只记录你启动了替代shell,就是这样。
您还可以使用终端多路复用器,如tmux
, screen
。 因此,在tmux
或screen
历史记录下将无法保存。