Престижность за попытку понять команду с помощью руководства. Я попытаюсь объяснить, как работает команда, обратившись к каждому разделу руководства , расположенному здесь .
По сути, команда выполняет следующие действия. 1 )Он ищет внутри пути, указанного переменной $LOG _PATH, обычные файлы, которые были изменены более 60 дней назад. 2 )Для каждого допустимого результата печатается имя файла, а затем выполняется команда rm
для файла.
Подробная разбивка выглядит следующим образом. Команда find имеет базовый синтаксис, который выглядит следующим образом (некоторые дополнительные параметры были опущены для ясности):
find [starting-point...] [expression]
Отправной точкой является путь, например /home или document/. В руководстве написано:
GNU find searches the directory tree rooted at each given starting-point by evaluating the given expression from left to right, according to the rules of precedence...
В вашем случае эта начальная точка определяется переменной $LOG _PATH. Ожидается, что эта переменная будет содержать значение, являющееся допустимым путем.
Теперь, когда find знает, где искать файлы, следующим шагом будет вычисление заданных выражений. Опять же, ссылаясь на руководство:
The part of the command line after the list of starting points is the expression. This is a kind of query specification describing how we match files and what we do with the files that were matched.
Для простоты мы рассмотрим два типа выражений, которые появляются в вашей команде :тесты и действия.
Tests return a true or false value, usually on the basis of some property of a file we are considering.
Actions have side effects (such as printing something on the standard output) and return either true or false, usually based on whether or not they are successful.
Тестами в данном случае являются выражения -type f
и -mtime +60
. Тест -type
проверяет, относится ли файл к определенному типу. -type f
проверяет, является ли файл обычным файлом. Другие варианты включают -type d
для проверки каталогов и -type l
для поиска символических ссылок.
Тест -mtime +60
немного сложнее. Он проверяет, были ли изменены данные/содержимое файла более 60 дней назад. Здесь есть одна сложность::find
игнорирует дроби, участвующие в вычислении модифицированного времени. В результате, чтобы успешно пройти этот тест, файл действительно нужно изменить 61 *24 часа назад. Время рассчитывается с момента выполнения команды, а не в календарных днях.
Следующее выражение в вашей find
команде — это действие:-print
. С действием -print
имя файла, прошедшего тесты -type
и -mtime
, печатается в стандартный вывод (по одному файлу в строке ). По сути, это дает вам результатfind
:списка файлов, которые проходят указанные вами условия проверки.
Заключительная часть вашей find
команды также является действием:-exec
. Действие -exec
запускает указанную команду для каждого результата find
. В вашем случае это команда rm
, которая удаляет файл. Фигурные скобки({}
)указывают, где должно быть заменено имя файла. В результате получается команда вида rm /path/to/target/file
. Точка с запятой в конце указывает, что команда, указанная в -exec
, должна выполняться один раз для каждого сопоставленного файла. Поскольку точка с запятой также является специальным символом оболочки, перед ней ставится обратная косая черта.
Я также являюсь любителем, но некоторые вещи, которые вы можете попробовать, — это документация для вашего типа диспетчера блокировки экрана, IE SDDM (, типичный для KDE ), и покопаться в их настройках.
KDE предлагает множество API-вызовов в своем движке для взаимодействия с этими компонентами. Хорошей отправной точкой является Arch wiki (Даже если вы не используете Arch, у них есть одна из лучших документации, которую я видел, таким образом далеко)
https://wiki.archlinux.org/index.php/SDDM
SDDM использует CSS и JS, поэтому достаточно просто разобраться в их синтаксисе, чтобы внедрить собственный вывод.
Я предполагаю, что для GDM будет примерно такая же концепция
https://wiki.archlinux.org/index.php/GDM
Немного информации об интеграции KDE
Очень надеюсь, что это поможет!