为什么我不能通过此循环从bash历史记录中删除多个条目

斯蒂芬·拉斯库(Stephen Rasku):

该循环将显示我想要执行的操作,但是如果我echo从中删除,则实际上不会删除任何内容:

history | grep ":[0-5][0-9] ls *$" | cut -c1-5 | 
while read id; do 
    echo history -d $id
done

我添加了缩进以使其更具可读性,但是我从命令行将其作为单行代码运行。

我已经HISTTIMEFORMAT设置好,因此grep可以找到秒数,ls然后是任意数量的空格。从本质上讲,它在历史上发现的只是一个东西ls

bash 4.3.11用于Ubuntu 14.04.3 LTS

chepner:

history -d从内存历史记录中删除一个条目,然后在管道引起的子外壳中运行它。这意味着您要从子外壳程序的历史记录中删除历史记录条目,而不是当前外壳程序的历史记录。

使用流程替换来填充循环:

while read id; do
    history -d "$id"
done < <(history | grep ":[0-5][0-9] ls *$" | cut -c1-5)

或者,如果您的版本bash足够新,请使用该lastpipe选项以确保您的while循环在当前shell中执行。

shopt -s lastpipe
history | grep ":[0-5][0-9] ls *$" | cut -c1-5 | 
while read id; do 
    echo history -d $id
done

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么历史记录和.bash_history不同,如何删除历史记录中的条目?

从Bash历史记录中删除条目时,为什么会出现错误?

为什么删除bash历史记录还不够?

是什么导致项目从我的bash历史记录中删除?

删除历史记录文件后,为什么在历史记录中仍然有较旧的命令?

为什么Bash历史记录不记录此命令?

如何快速删除小块历史记录中的条目

从解析中删除推送通知历史记录条目

为什么此两行bash提示会弄乱命令历史记录

为什么我制作的此命令历史记录不起作用?

为什么我的自定义bash在浏览历史记录时会提示故障

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

如何从bash历史记录中删除所选结果?

如何从bash历史记录中删除重复项?

从Bash历史记录文件中删除某行

我如何从github历史记录中删除分支?

为什么“调用历史记录”挂在powershell中?

为什么命令以空格开头而不显示在bash历史记录中?

为什么Bash历史记录中的某些行变为“ *”?

为什么该脚本不能删除部分命令历史记录,但在我的计算机上却无法正常工作?

为什么我的“连接”组件中没有历史记录道具?

为什么在freebsd历史记录中我看到带有*的命令,但从未执行?

脚本中的Bash历史记录:`!#:*`

为什么我不能通过此功能?C ++

HISTTIMEFORMAT并删除匹配的历史记录条目

为什么在SCT温度历史记录输出中有“跳过的”温度条目?

什么时候可以进行bash的多行历史记录条目(又称“ lithist”)?

为什么我不能通过“while read”循环运行多个文件?

如何从Firefox中的网址历史记录中删除大量条目?