Answers:
您可以使用history -d offset
内建函数从当前shell的历史记录中删除特定行,或history -c
清除整个历史记录。
如果要删除一定范围的行,这不是很实际,因为它只使用一个偏移量作为参数,但是您可以将其包装在带有循环的函数中。
rmhist() {
start=$1
end=$2
count=$(( end - start ))
while [ $count -ge 0 ] ; do
history -d $start
((count--))
done
}
用调用rmhist first_line_to_delete last_line_to_delete
。(行号根据的输出history
。)
(history -w
用于强制写入历史记录文件。)
$(history | wc -l)
,还有$HISTCMD
可以使用的变量。
只是命令提示符中的这一行将有所帮助。
for i in {1..N}; do history -d START_NUM; done
其中START_NUM是历史记录的起始位置。N是您可能要删除的条目数。
例如: for i in {1..50}; do history -d 1030; done
tot_lines=$(history | wc -l)
然后重复history -d $(( tot_lines - $1 ))
。