终端“隐身模式”?

238 configuration command-line gnome-terminal console history

我经常使用终端,有时我正在运行命令,这不是我不想让别人看到的东西,但是如果我不小心向上箭头并不小心执行了更多的命令会造成很多麻烦。

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

因为我发现自己稍后会从我的.bash_history.允许,并且最终不会记录它。

0x2*_*fa0 277

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

只需在命令前加一个空格即可。Bash 将忽略带有空格的命令:

例子: Spaceecho "Some secret text"

注意:这仅在HISTCONTROL变量设置为ignorespace或时才有效ignoreboth


暂时禁用历史记录:

  • 运行Spaceset +o historySpaceshopt -uo history禁用历史记录。
  • 运行set -o historyshopt -so history再次启用它。

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

unset HISTFILE
Run Code Online (Sandbox Code Playgroud)

注意:在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
Run Code Online (Sandbox Code Playgroud)

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

运行Spacehistory -d <number>where <number>is the entry number 删除条目。
您可以使用Ctrl+ Shift+粘贴该号码V


其他有趣的答案:

  • 如果您使用 `history -d` 删除一行,这将删除该行的内容,但是您永远无法删除运行了 `history -d` 的事实(除非您在运行之前首先使用了 `set +o history` `历史-d`) (7认同)
  • (OT) 禁令是一种法律文件,可防止人们发布某些内容。超级禁令还阻止他们公布他们被剥夺发表能力的事实。一些合乎逻辑的论点询问他们是否可以发布他们被拒绝发布某些信息的能力。然后它变成了一个循环论证。 (4认同)
  • `unset HISTFILE` 方法还可以追溯所有尚未写入 `.bash_history` 的命令。 (3认同)

Moi*_*was 43

您可以通过在工作后添加命令来简单地删除一个特定终端会话的历史记录history -cw

在发出此命令之前不要关闭终端。

  • 这只会删除该特定终端会话的历史记录。 (6认同)

Oli*_*Oli 30

shopt -uo history 应该做到最好。

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

您可以打开日志记录回shopt -so history(在-s-u分别设置和取消)。

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


小智 19

另一种在不记录到历史文件的情况下杀死当前 shell 的方法是:

kill -9 $$
Run Code Online (Sandbox Code Playgroud)

这会导致 bash(可能还有其他 shell)向自身发送 SIGKILL 信号,当场杀死它并阻止它向磁盘写入任何内容。

  • 又名“向自己开枪”:)。这样做的好处是您无需记住在编写命令之前执行任何操作。 (8认同)
  • 我使用 zsh 进行增量历史写入,所以我怀疑这是否适用于我的情况 (4认同)

Bru*_*uni 14

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

unset HISTFILE
Run Code Online (Sandbox Code Playgroud)

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

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

HISTFILE=$HOME/.bash_history
Run Code Online (Sandbox Code Playgroud)


ech*_*son 10

您可以修改当前 shell 会话中的历史记录行。如果您回溯历史(例如使用UpCtrl+ P)并更改一行而不执行它,则只会保存该行的修改版本。你可以用任何你喜欢的方式修改它;好的选择包括使用Ctrl+U完全空白行或使用在开头Esc#放置#注释字符。

要留下一行而不执行它,请记住不要点击Return( Enter)。我所做的是通过Esc>.

(在大多数终端中,您可以按住并按下,而不是Esc>在之后;上面的建议也是如此。)Alt>Esc#

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


小智 6

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

 chattr +i .bash_history
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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