Как дождаться окончания изменения файла в терминале: советы и хаки

echo FileName | perl -nlE'sleep 1 while time-(stat)[10]<10' && echo DONE


Команда echo FileName | perl -nlE'sleep 1 while time-(stat)[10]<10' && echo DONE ожидает, пока файл с именем «FileName» не будет изменен. Она использует язык программирования Perl для проверки времени последнего изменения файла.

Команда echo FileName выводит текст «FileName» в стандартный вывод, который затем передается в качестве входных данных в Perl скрипт.

Perl скрипт sleep 1 while time-(stat)[10]<10 выполняется в цикле, проверяя время последнего изменения файла. Если время последнего изменения файла меньше, чем текущее время минус 10 секунд, скрипт продолжает спать на 1 секунду и повторяет проверку. Когда время последнего изменения файла становится больше или равно текущему времени минус 10 секунд, цикл прекращается.

После завершения ожидания изменения файла, команда echo DONE выводит текст «DONE» в стандартный вывод.

Альтернативным способом ожидания изменения файла может быть использование команды inotifywait или написание собственного скрипта на языке программирования, который будет проверять время последнего изменения файла.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *