从bash历史记录中删除最后N行

盗贼大师

当不小心将文件粘贴到外壳中时,它会在bash历史记录中放置大量丑陋的废话条目。是否有清除这些条目的干净方法?显然,我可以关闭外壳并.bash_history手动编辑文件,但是也许可以使用某种API来修改当前外壳的历史记录?

从开始bash-5.0-alpha,该history命令现在为delete(-d)选项指定了一个范围请参阅rastafile的答案

对于较旧的版本,请采用以下解决方法。


您可以使用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用于强制写入历史记录文件。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章