Как выполнить команду при изменении файла в Linux?

Примечание. Следующая статья поможет вам: Как выполнить команду при изменении файла в Linux?

Вы попали в нужное место, если хотите узнать, как запускать команды Linux при изменении любого файла в рабочем каталоге и при создании новых файлов.

В Linux вы можете использовать cron для планирования запуска команд в определенное время.

Но что, если вам нужно, чтобы команды запускались каждый раз при изменении файла или при добавлении нового файла в каталог?

Это также легко достижимо, и для этого есть несколько инструментов командной строки.

Давайте начнем!

watchexec

watchexec — это удобный и автономный инструмент, который отслеживает заданный рабочий каталог и выполняет команду, если обнаруживает какие-либо изменения, такие как обновление файла или создание нового файла.

Функции

  • Он не требует сложной командной строки, включающей xargs (расширенные аргументы).
  • Проверяет наличие изменений в текущем каталоге и всех подкаталогах в режиме реального времени.
  • Нет необходимости в языковой среде выполнения, и она не связана с каким-либо конкретным языком или экосистемой.
  • .gitignore а также .игнорировать используются по умолчанию, чтобы решить, для каких файлов игнорировать уведомления.
  • Группы процессов используются для отслеживания разветвляющихся программ.
  • Поддерживается просмотр файлов с определенным расширением.
  • Он совместим с OS X, Linux и Windows.
  • Фильтрация и игнорирование событий на основе glob (возможны шаблоны поиска файлов для нахождения частично идентичных имен файлов.
  • Установка watchexec

    Чтобы легко установить инструмент watchexec, вставьте следующую ссылку в терминал или приглашение оболочки и нажмите клавишу ввода.

    Линукс и макОС

    curl -sS https://webinstall.dev/watchexec | бить

    После успешной установки путь отобразится на экране. В моем случае этот инструмент был установлен в /root/.local/bin

    ┌──(корень💀кали)-[~]
    └─# curl -sS https://webinstall.dev/watchexec | bash Спасибо за использование webi для установки «[email protected]» на «Linux/x86_64». Иметь проблему? Ошибка? Пожалуйста, дайте нам знать: https://github.com/webinstall/webi-installers/issues Любите это? Скажите спасибо звездочкой на GitHub: https://github.com/webinstall/webi-installers Found /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl .tar.xz Извлечение /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz Установка в /root/.local/opt/watchexec-vcli -v1.18.9/bin/watchexec Установлен «watchexec vcli-v1.18.9» как /root/.local/bin/watchexec

    А после установки перейдите в репозиторий .local/bin и проверьте, есть ли файл там или нет, с помощью этих команд.

    cd .local/bin лс

    Следующим шагом является экспорт пути для использования watchexec инструмент.

    экспорт PATH=”/root/.local/bin:$PATH”

    Для запуска просто введите watchexec в терминале как пользователь root. Используйте эту команду, чтобы увидеть, какие флаги и параметры можно использовать с инструментом watchexec.

    watchexec –помощь

    Примеры примеров команд

  • Вызовите ls -la при изменении любого файла в этом каталоге/подкаталоге. Эта команда показывает все файлы, присутствующие в каталоге, всякий раз, когда обнаруживает какую-либо модификацию.
  • watchexec — ls -la

  • Всякий раз, когда какой-либо из файлов расширений python, js, CSS или Html в текущем каталоге изменяется, запускайте команду. Здесь вы можете передать любую команду, которую хотите. Расширения файлов должны быть разделены запятой.
  • watchexec –exts py,js,css,html

  • Выполнить команду при изменении любого файла в lib или src. Параметр «-w» отслеживает определенный файл или каталог в системе.
  • watchexec -w lib -w src

  • Вызов/перезапуск любой службы при изменении любого файла в текущем каталоге (и всех подкаталогах).
  • watchexec -e html -r tor watchexec -e js, py -r mysql

    Здесь опция «-r» перезапускает процесс или службу, если они запущены в системе.

    Дополнительные примеры использования watchexec можно найти в официальном репозитории GitHub.

    вход

    Entr — это простая и превосходная утилита командной строки для запуска произвольных команд, когда в заданном каталоге происходят какие-либо изменения.

    вход” означает Тестовый запуск уведомления о событиир. Этот инструмент был создан с целью обеспечения быстрой обратной связи и автоматизированного тестирования.

    Монтаж

    Entr предустановлен в дистрибутиве Linux. Если он отсутствует, вам необходимо установить его вручную.

    Этот инструмент прост в использовании и может быть установлен с помощью следующей команды.

    sudo apt-get установить запись

    Или вы также можете установить его, клонировав официальный репозиторий Git.

    git-клон https://github.com/eradman/entr.git

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

    ./configure сделать тест сделать установить

    Чтобы увидеть доступные параметры сборки, запустите ./configure -h

    Примеры примеров команд

    Чтобы увидеть параметры и аргументы, доступные для команды entr. Используйте следующую команду.

    вход человека

    Эта команда отображает руководство пользователя для команды entr.

    НАЗВАНИЕ entr — запускать произвольные команды при изменении файлов СИНТАКСИС entr [-acdnprsz] полезность [argument /_ …]

    ОПИСАНИЕ Список файлов, представленных на стандартном вводе, и утилита выполняется с использованием предоставленных аргументов, если какой-либо из них изменяется. Entr ожидает завершения дочернего процесса, прежде чем реагировать на последующие события файловой системы. Телетайп также открывается перед входом в цикл наблюдения для поддержки интерактивных утилит. Аргументы следующие: -a Реагировать на все события, происходящие во время работы утилиты. Без этой опции entr объединяет события во избежание зацикливания. Этот параметр не действует в сочетании с флагом -r. -c Очистить экран перед вызовом утилиты, указанной в командной строке. Укажите дважды, чтобы стереть буфер обратной прокрутки. -d Отслеживать каталоги обычных файлов, предоставленных в качестве входных данных, и выходить, если добавляется новый файл. Эта опция также позволяет явно указывать каталоги. Если указано дважды, распознаются все новые записи в каталоге, в противном случае файлы с именами, начинающимися с ‘.’ игнорируются. -n Запустить в неинтерактивном режиме. В этом режиме entr не пытается читать из TTY или изменять его свойства. -p Отложить первое выполнение утилиты до изменения файла. Ввод страницы вручную (1), строка 1 (нажмите h для справки или q для выхода)

  • Для запуска и автоматической перезагрузки сервера MySQL при изменении любого файла JavaScript в рабочем каталоге. Каждый раз, когда изменения сохраняются в файл, entr перезагружает сервер MySQL.
  • лс *.js | введите -r mysql

  • Для автоматической перезагрузки веб-сервера или прекращения работы в случае выхода сервера.
  • $ лс * | введите -rz ./httpd

    Для получения более подробной информации и примеров команды entr вы можете посетить их официальный репозиторий GitHub.

    Заключительные слова 👩‍💻

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

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

    Related Articles

    Back to top button