避免将命令保留在历史中

Luc*_*c M 38 security bash command-line-interface history

我使用 bash,我想避免将某些命令保留在历史记录中。

  • 是否可以仅对下一个命令执行此操作?
  • 是否可以在整个会话中都这样做?

cas*_*cas 39

我只记得另一个答案,这是对您问题的实际答案。

如果您在 HISTCONTROL 中有“ignorespace”,那么 bash 将不会记住任何以空格字符开头的行。它甚至不会出现在当前 shell 的历史记录中,更不用说保存到 $HISTFILE 中了。

例如,我在 ~/.bashrc 中有export HISTCONTROL='ignoreboth:erasedups'

这是 bash 手册页的详细信息:

组织控制
  以冒号分隔的值列表,控制命令的执行方式
  保存在历史列表中。如果值列表包括
  忽略空格,以空格字符开头的行不是
  保存在历史列表中。ignoreups 的值导致行
  匹配之前的历史条目不被保存。一个值
  ignoreboth 是 ignorespace 和 ignoreups 的简写。一个值
  擦除导致所有先前的行都与当前行匹配
  在保存该行之前从历史列表中删除。
  任何不在上述列表中的值都将被忽略。如果 HISTCONTROL 是
  未设置或不包含有效值,读取的所有行
  shell 解析器保存在历史列表中,以值为准
  历史忽略。多行的第二行和后续行
  未测试复合命令,并添加到历史记录中
  无论 HISTCONTROL 的值如何。


Mic*_*vas 19

以下是我从谷歌搜索中学到的一些历史教训:

您可以将历史设置为忽略某些字符串。在这个例子中,我忽略了命令 ls、passwd 和任何以字符空间为前缀的命令。

export HITIGNORE="ls:passwd:"

要禁用会话的历史记录,您可以发出:

导出 HISTSIZE=0

参考


cas*_*cas 8

如果您只想从历史记录中删除最后一个命令,那么您可以点击Up-arrow,然后点击Ctrl - U(擦除到行首),然后Up-arrow再次点击。

您可以像这样从历史记录中删除任何单独的行。只需使用向上箭头或搜索或其他任何方式使其成为当前正在编辑的命令行,然后按Ctrl - U,然后Up-arrowDown-arrow移动到另一个历史记录行。

几年前我偶然发现了这一点。我不知道它是否记录在案。

但是,通常情况下,根本不保存当前 shell 的历史记录并不麻烦:

HISTFILE=/dev/null
Run Code Online (Sandbox Code Playgroud)