Tutoriales

¿Cómo ejecutar un comando cuando un archivo cambia en Linux?

Si desea aprender a ejecutar comandos de Linux cuando cambia cualquier archivo en su directorio de trabajo y cuando se crea un nuevo archivo, ha venido al lugar correcto.

En Linux puedes usar cron Programe un comando para que se ejecute en un momento específico.

Pero, ¿qué sucede si necesita ejecutar un comando cada vez que se modifica un archivo o se agrega un nuevo archivo a un directorio?

Esto también es fácil de lograr y hay algunas herramientas de línea de comandos para hacerlo.

¡Empecemos!

ver actuador

watchexec es una herramienta práctica e independiente que supervisa un directorio de trabajo determinado y ejecuta comandos cuando se detectan cambios, como actualizaciones de archivos o nuevas creaciones de archivos.

Publicaciones relacionadas

rasgo

  • No requiere una línea de comando complicada xargs (parámetro extendido).
  • Verifique el directorio actual y todos los subdirectorios para cambios en tiempo real.
  • No se requiere tiempo de ejecución de idioma, no está conectado a ningún idioma o ecosistema específico.
  • .gitignore y .ignorar Notificaciones utilizadas para decidir qué archivos ignorar de forma predeterminada.
  • Los grupos de procesos se utilizan para rastrear programas bifurcados.
  • Admite la visualización de archivos con extensiones específicas.
  • Es compatible con OS X, Linux y Windows.
  • Filtrar e ignorar eventos basados ​​en glob (patrones de búsqueda de archivos para encontrar nombres de archivos parcialmente idénticos son posibles.

instalar watchexec

Fácil instalación watchexec herramienta, pegue el enlace a continuación en un indicador de terminal o shell y presione Entrar.

Linux y mac OS

curl -sS https://webinstall.dev/watchexec | bash

Después de una instalación exitosa, la ruta se mostrará en la pantalla.En mi caso esta herramienta fue instalada en /root/.local/bin

┌──(root💀kali)-[~]
└─# curl -sS https://webinstall.dev/watchexec | bash

Thanks for using webi to install '[email protected]' on 'Linux/x86_64'.
Have a problem? Experience a bug? Please let us know:
        https://github.com/webinstall/webi-installers/issues

Lovin' it? Say thanks with a Star on 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
Extracting /root/Downloads/webi/watchexec/cli-v1.18.9/watchexec-1.18.9-x86_64-unknown-linux-musl.tar.xz
Installing to /root/.local/opt/watchexec-vcli-v1.18.9/bin/watchexec
Installed 'watchexec vcli-v1.18.9' as /root/.local/bin/watchexec

Después de la instalación, navegue hasta .local/bin repositorio y use estos comandos para verificar si el archivo existe.

cd .local/bin

ls

El siguiente paso es exportar la ruta para usar ver actuador herramienta.

export PATH="/root/.local/bin:$PATH"

Para ejecutar, simplemente escriba watchexec En la terminal como usuario root. Use este comando para ver qué banderas y opciones se pueden usar con la herramienta watchexec.

watchexec --help

ejemplo comando de ejemplo

  • llamada ls -la Cuando cualquier archivo en este directorio/subdirectorio cambia. Este comando muestra todos los archivos presentes en el directorio cada vez que se detecta alguna modificación.
watchexec -- ls -la
  • Ejecute este comando cada vez que cambie cualquier archivo de extensión python, js, CSS o Html en el directorio actual. Aquí puede pasar cualquier comando que desee. Las extensiones de archivo deben estar separadas por comas.
 watchexec --exts py,js,css,html 
  • ejecute el comando cuando entre cualquier archivo lib o src Variedad. La opción «-w» monitorea un archivo o directorio específico en el sistema.
watchexec -w lib -w src 
  • Invocar/reiniciar cualquier servicio cuando cambie cualquier archivo en el directorio actual (y todos los subdirectorios).
watchexec -e html -r tor

watchexec -e js,py -r mysql

Aquí, si un proceso o servicio se está ejecutando en el sistema, la opción «-r» lo reinicia.

Para obtener más ejemplos de uso de watchexec, puede visitar el repositorio oficial de GitHub.

Ingresar

entr es una utilidad de línea de comandos simple y excelente para ejecutar comandos arbitrarios en cualquier modificación en un directorio determinado.

«Ingresar«representar Ejecución de prueba de notificación de eventosRío. Esta herramienta fue creada para comentarios rápidos y pruebas automatizadas.

Instalar en pc

entr Preinstalado en las distribuciones de Linux. Si falta, debe instalarlo manualmente.

La herramienta es fácil de usar y se puede instalar con el siguiente comando.

sudo apt-get install entr

O puede instalarlo clonando el repositorio oficial de Git.

git clone https://github.com/eradman/entr.git

Luego, navegue a ese directorio e instale los requisitos usando el siguiente comando.

./configure
make test
make install

Para ver las opciones de compilación disponibles, ejecute ./configure -h

ejemplo comando de ejemplo

Ver opciones y parámetros disponibles entr Pedido. Utilice los siguientes comandos.

man entr

Este comando muestra el manual del usuario entr Pedido.

NAME
     entr — run arbitrary commands when files change

SYNOPSIS
     entr [-acdnprsz] utility [argument /_ ...]

DESCRIPTION
     A list of files provided on standard input, and the utility is executed using the supplied arguments
     if any of them change.  entr waits for the child process to finish before responding to subsequent
     file system events.  A TTY is also opened before entering the watch loop in order to support interac‐
     tive utilities.

     The arguments are as follows:

     -a      Respond to all events which occur while the utility is running.  Without this option, entr
             consolidates events in order to avoid looping.  This option has no effect in conjunction with
             the -r flag.

     -c      Clear the screen before invoking the utility specified on the command line.  Specify twice to
             erase the scroll back buffer.

     -d      Track the directories of regular files provided as input and exit if a new file is added.
             This option also enables directories to be specified explicitly.  If specified twice, all new
             entries to a directory are recognized, otherwise files with names beginning with ‘.’ are ig‐
             nored.

     -n      Run in non-interactive mode.  In this mode entr does not attempt to read from the TTY or
             change its properties.

     -p      Postpone the first execution of the utility until a file is modified.

 Manual page entr(1) line 1 (press h for help or q to quit)
  • Inicia y recarga automáticamente el servidor MySQL cuando se modifica cualquier archivo JavaScript en el directorio de trabajo. Cada vez que guarda cambios en un archivo, entr Vuelva a cargar el servidor MySQL.
 ls *.js | entr -r mysql
  • Recarga automáticamente el servidor web o termina cuando el servidor sale.
$ ls * | entr -rz ./httpd

Para más detalles y ejemplos entr comando, puede visitar su repositorio oficial de GitHub.

Últimas palabras 👩‍💻

Espero que haya encontrado útil este artículo para aprender a ejecutar comandos de Linux cuando cambia cualquier archivo en un directorio determinado y cuando se crea un nuevo archivo.

También podría estar interesado en aprender a eliminar archivos y directorios en Linux.

LEER  Puertas traseras basadas en NTP en redes reforzadas

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba