Answers:
我只记得另一个答案,这个答案是您问题的实际答案。
如果您在HISTCONTROL中具有“ ignorespace”,则bash不会记住任何以空格字符开头的行。即使在当前Shell的历史记录中也不会出现,更不用说保存到$ HISTFILE了。
例如我在〜/ .bashrc中导出了HISTCONTROL ='ignoreboth:erasedups'
这是bash手册页中的详细信息:
历史控制 用冒号分隔的值列表,用于控制命令的使用方式 保存在历史记录列表中。如果值列表包括 ignorespace,以空格字符开头的行不是 保存在历史记录列表中。忽略的值导致行 匹配以前的历史记录条目将不被保存。值 ignoreboth是ignorespace和忽略up的简写。一个值 的擦除导致所有先前的行与当前行匹配 在保存该行之前将其从历史记录列表中删除。 不在上面列表中的任何值都将被忽略。如果HISTCONTROL为 未设置或不包含有效值的所有行 shell解析器将保存在历史记录列表中,具体取决于值 HISTIGNORE。多行的第二行和后续行 复合命令未经测试,并且已添加到历史记录中 无论HISTCONTROL的值如何。
这是我从谷歌搜索中学到的一些历史课程:
您可以设置历史记录以忽略某些字符串。在此示例中,我忽略了命令ls,passwd和任何以字符空间为前缀的命令。
export HISTIGNORE =“ ls:passwd:”
要禁用会话的历史记录,可以发出:
出口HISTSIZE = 0
我看到没人写这种方法,所以我会的。
history -d $((HISTCMD-1)) && history -d <command or number of command>
history -d
从历史记录中删除提及的条目。
HISTCMD
存储下一个要执行的命令的command_number。因此,(HISTCMD-1)指的是最后执行的命令。
我做了一部简短的bash电影,展示了它的工作原理:https : //asciinema.org/a/dtxpuovhty0obhln50soqypt2
在运行命令并且删除命令本身之后,箭头上的箭头将不会显示该命令,因此,如果您打算经常使用该命令,则最好创建一个别名:
alias hc='history -d $((HISTCMD-1)) && history -d $1'
然后,您可以执行以下操作:
$ hc command