Bash скрипт для очистки истории, вопрос о лучшем решении - PullRequest
1 голос
/ 21 марта 2020

Я пытаюсь написать функцию для оболочки, чтобы удалять файлы истории в каталоге и удалять те, которые не являются текущим запущенным процессом. Я столкнулся с проблемой, связанной с вариантом использования: файлы не существуют и 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
}

ОБНОВЛЕННОЕ РЕШЕНИЕ работает

Ответы [ 2 ]

1 голос
/ 21 марта 2020
Решение

@ rici будет в порядке в конкретном случае rm, но если вы действительно не хотите запускать your_command (что также может быть rm -f), когда xargs не делает ' В этом случае лучше использовать:

xargs --no-run-if-empty your_command
1 голос
/ 21 марта 2020

xargs rm -f будет самым простым решением.

...