我使用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
您可以取消设置HISTFILE
variables。 从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