2

Я новичок в создании файлов crontab, и я решил попробовать сделать работу, которая удаляла бы содержимое моей папки загрузок, а затем очищала корзину. Вот что у меня есть:

0 9 * * *   rm $HOME/Downloads/*.*
10 9 * * *  rm -rf ~/.Trash/*

Это безопасно для запуска? Я слышал много разговоров об умном использовании команды rm . Это даже необходимо , чтобы удалить мусор или же rm пропустить мусор?

1 ответ1

2

Чтобы ответить на ваши вопросы:

Это безопасно для запуска?

Зависит от вашего определения "сохранить". Это не нанесет ущерб, но я бы не рекомендовал это.

... рм пропускает мусор?

Команда rm пропускает корзину. rm даже не знает о концепции корзины. Практически все команды командной строки не имеют представления о концепции корзины (некоторые странные персонажи думают, что весело иметь корзину на основе терминала).

Если вы настаиваете на работе cron для очистки каталога загрузки, я бы порекомендовал сделать это следующим образом:

find $HOME/Downloads/ -mtime +1 -delete

Это удалит все файлы (и каталоги) старше одного дня. В противном случае, если вы загрузили что-то в 8:59, оно сразу же будет удалено.

Примечание: под linux подстановочный знак *.* Означает нечто иное, чем под windows. Я предполагаю, что вы пришли из мира Windows, где *.* Означает каждый файл.

Заметим:

$ ls
foo  foo..bar  foo.bar  foo.bar.baz
$ echo *
foo foo..bar foo.bar foo.bar.baz
$ echo *.*
foo..bar foo.bar foo.bar.baz
$ echo *.*.*
foo..bar foo.bar.baz
$ echo *..*
foo..bar

* распространяется на все, в том числе . кроме ведущего . , но это совсем другая история. *.* распространяется на все, что имеет хотя бы одну точку в середине. *.*.* распространяется на все, что имеет две точки. Я думаю, вы поняли, точка не имеет никакого особого значения в расширении имени файла. Будьте осторожны, точка имеет особое значение при работе с регулярными выражениями , но это также совсем другая история.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .