Bash 用于清除历史记录的脚本,关于更好解决方案的问题

Bash script to clear history, question on better solution

我正在尝试为 shell 编写一个函数来删除目录中的历史文件并删除不是当前 运行 进程的文件。我 运行 遇到不存在文件且使用空参数调用 xargs rm 的用例问题。

有没有人对在不使用临时文件的情况下处理这个空案例有建议?

谢谢

function purge_hist {
    for i in $(comm -23 <(sort -n <(ls $HOME/.hist/history.* | \
             sed "s#$HOME/.hist/history.##"))  < \
             (sort <(for i in $(ps -ex -o pid | sed 1d); 
                do 
                   echo $i ; 
                done)));
                do 
                   echo "$HOME/.hist/history.$i";
                done | xargs rm -f
}

更新的解决方案有效

xargs rm -f 将是最简单的解决方案。

@rici 的解决方案在 rm 的特殊情况下会很好,但如果你真的不想 运行 your_command(也可以rm -f) 当 xargs 没有得到任何输入时,你应该在这种情况下使用:

xargs --no-run-if-empty your_command