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
我正在尝试为 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