Answers:
如果要运行命令而不将其保存在历史记录中,请在命令前添加多余的空间
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
为此,您需要ignorespace
或者ignoreboth
中的一个HISTCONTROL
。例如,运行
HISTCONTROL=ignorespace
要使此设置持久化,请将其放在中.bashrc
。
如果您已经运行了该命令,并且想要将其从历史记录中删除,请首先使用
history
显示历史记录中的命令列表。找到您要删除的号码旁边的数字(例如1234)并运行
history -d 1234
此外,如果您要删除的行已被写入$ HISTFILE(通常默认情况下在结束会话时会发生),则需要写回$ HISTFILE,否则在打开新行时该行会重新出现会议:
history -w
history -a
,在这种情况下,它已被写入历史文件,而不是在正常配置下退出时。具体来说:mywiki.wooledge.org/BashFAQ/088
history -w
。否则,当您退出时,删除的行仍然存在!
history -w
after history -d {num}
正是我所需要的-关键提示应该添加到答案中,否则用户可能会认为从当前shell中临时删除实际上是永久的。
history -w
对于已经写入.bash_history
文件的条目,@ BobStein 是必需的。如何复制(例如,在具有股票配置的CentOS 7上):1.登录2.输入命令echo foo
3.注销4.再次登录5.删除echo foo
6.退出的条目。7.再次登录:条目仍然存在。根据您配置Bash历史记录的方式,也许您可以通过其他方式重现此问题-例如,如果您在注销之前引起历史记录写入。
要清除所有历史记录,请使用
history -c
要删除一行,请使用
history -d linenumber
我在~/.bashrc
其中,这使得$ forget
命令从历史记录中删除前一个命令
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )
更简单?
history | tail -n1
是history
命令本身,因此删除该数字将得到错误的输入。但是,history -d $( history | awk 'END{print $1-1}' )
将行选择,字段选择和减法结合在一起。
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done