避免保持命令的历史

我使用bash,我想避免一些命令被保留在历史中。

  • 只有下一个命令可以这样做吗?
  • 整个会话可以这样做吗?

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

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

例如我在我的〜/ .bashrc中导出了HISTCONTROL ='ignoreboth:erasedups'

以下是bash手册页的详细信息:

 HISTCONTROL
  以冒号分隔的控制命令的值列表
  保存在历史列表中。 如果值的列表包括
  忽略空格,以空格字符开始的行不是
  保存在历史列表中。  ignoredups的值会导致行
  匹配以前的历史logging不被保存。 一个值
   ignoreboth是忽略空间和忽略的简写。 值
   erasedups导致所有以前的行匹配当前行
  在该行被保存之前从历史列表中移除。
  不在以上列表中的任何值都将被忽略。 如果HISTCONTROL是
  未设置,或不包含有效值,所有行读取的
   shellparsing器保存在历史列表中,取决于值
   HISTIGNORE。 多行的第二行和后续行
  复合命令没有被testing,并被添加到历史logging
  不pipeHISTCONTROL的价值如何。

以下是我从Google上学到的一些历史教训:

您可以设置历史logging以忽略某些string。 在这个例子中,我忽略了命令ls,passwd和任何由字符空格前缀的命令。

export HISTIGNORE =“ls:passwd:”

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

export HISTSIZE = 0

参考

如果你只是想从历史中删除最后一个命令,那么你可以点击向上箭头 ,然后按Ctrl - U (删除到行首),然后再向上箭头

你可以像这样擦除历史上的任何一行。 只需使用向上箭头或search或任何使其成为正在编辑的当前命令行,然后按Ctrl - U ,然后向上箭头向下箭头移动到另一个历史行。

一天前我偶然发现了这个。 我不知道是否有文件logging。

但是,通常情况下,根本不保存当前shell的历史,

HISTFILE=/dev/null 

您可以取消设置HISTFILEvariables。 从man bash

   HISTFILE
         保存命令历史的文件的名称(请参阅HIS-
          TORY下面)。 默认值是〜/ .bash_history。 如果未设置,
         在交互式shell中不会保存命令历史logging
         退出。

我不认为这会阻止命令在shell退出之前出现在本地shell历史logging中。

我有时候做

 export HISTFILE=/dev/null 

我看到没有人写这个方法,所以我会的。

 history -d $((HISTCMD-1)) && history -d <command or number of command> 

history -d从历史中删除提及的条目。

HISTCMD存储接下来要执行的命令的command_number。 所以,(HISTCMD-1)是指最后执行的命令。

我做了一个简短的bash电影,它显示了它是如何工作的: https : //asciinema.org/a/dtxpuovhty0obhln50soqypt2

在运行命令后,由于它也删除了命令本身,那么用箭头向上不会显示命令,所以如果你打算使用这个命令,最好是创build一个别名:

 alias hc='history -d $((HISTCMD-1)) && history -d $1' 

那你可以这样做:

 $ hc command