Ha venido al lugar correcto si desea aprender a ejecutar comandos de Linux cuando cambia un archivo en un directorio de trabajo y cuando se crean nuevos archivos.
En Linux puedes usar cron
para programar comandos para que se ejecuten en determinados momentos.
Pero, ¿qué sucede si necesita ejecutar comandos cada vez que se cambia un archivo o se agrega un nuevo archivo a un directorio?
También es fácil de hacer y hay herramientas de línea de comandos para hacerlo.
¡Empecemos!
relojejec
watchexec
es una herramienta práctica e independiente que supervisa un directorio de trabajo determinado y ejecuta un comando si detecta algún cambio, como la actualización de un archivo o la creación de un nuevo archivo.
Características
- No requiere una línea de comando compleja que involucre
xargs
(argumentos extendidos). - Comprueba los cambios en el directorio actual y todos los subdirectorios en tiempo real.
- No hay necesidad de un tiempo de ejecución de idioma y no está conectado a ningún idioma o ecosistema específico.
- .gitignore y .ignorar se utilizan de forma predeterminada para decidir para qué archivos ignorar las notificaciones.
- Los grupos de procesos se utilizan para rastrear programas de bifurcación.
- Se admite la visualización de archivos con una determinada extensión.
- Es compatible con OS X, Linux y Windows.
- Es posible filtrar e ignorar eventos basados en glob (patrones de búsqueda de archivos para encontrar nombres de archivo parcialmente idénticos).
Instalación de watchexec
Para instalar fácilmente watchexec
herramienta, pegue el siguiente enlace en la terminal o en un indicador de shell y presione enter.
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 se instaló 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
Y después de la instalación, vaya a .local/bin
repositorio y verifique si el archivo está allí o no usando estos comandos.
cd .local/bin
ls
El siguiente paso es exportar la ruta para usar el relojejec 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
Ejemplos de comandos
- Llamada
ls -la
cuando un archivo cambia en este directorio/subdirectorio. Este comando muestra todos los archivos presentes en el directorio cada vez que detecta una modificación.
watchexec -- ls -la
- Cada vez que cambie cualquiera de los archivos de extensión python, js, css o html en el directorio actual, ejecute el comando. Aquí puedes hacer el pedido que quieras. Las extensiones de archivo deben estar separadas por una coma.
watchexec --exts py,js,css,html <command>
- Ejecute el comando cuando cualquier archivo en
lib
Dondesrc
cambios. La opción «-w» monitorea un archivo o directorio específico en el sistema.
watchexec -w lib -w src <command>
- Llame/reinicie cualquier servicio cuando cambie un archivo en el directorio actual (y todos los subdirectorios).
watchexec -e html -r tor
watchexec -e js,py -r mysql
Aquí la opción «-r» reinicia el proceso o servicio si se está ejecutando en el sistema.
Para obtener más ejemplos del uso de watchexec, puede visitar el repositorio oficial de GitHub.
Entrada
entr
es una utilidad de línea de comandos simple y excelente para ejecutar comandos arbitrarios cuando se producen cambios en un directorio determinado.
«Entrada» medio Prueba de notificación de eventosR. Esta herramienta fue creada con el objetivo de hacer una retroalimentación rápida y pruebas automatizadas.
Instalación
entr
está preinstalado en la distribución de Linux. Si falta, debe instalarlo manualmente.
Esta herramienta es fácil de usar y se puede instalar con el siguiente comando.
sudo apt-get install entr
O también puedes instalarlo clonando el archivo oficial repositorio Git.
git clone https://github.com/eradman/entr.git
Luego navegue a ese directorio e instale los requisitos usando los comandos a continuación.
./configure
make test
make install
Para ver las opciones de compilación disponibles, ejecute ./configure -h
Ejemplos de comandos
Para ver las opciones y los argumentos disponibles para entr
pedido. Utilice el siguiente comando.
man entr
Este comando muestra el manual de usuario del 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)
- Para iniciar y recargar automáticamente un servidor MySQL cuando un archivo JavaScript cambia en el directorio de trabajo. Cada vez que se guardan cambios en el archivo,
entr
recargar el servidor MySQL.
ls *.js | entr -r mysql
- Para recargar automáticamente un servidor web o terminar si el servidor se cierra.
$ ls * | entr -rz ./httpd
Para más detalles y ejemplos sobre entr
orden, puede visitar su sitio web oficial repositorio GitHub.
Últimas palabras 👩💻
Espero que haya encontrado este artículo muy útil para aprender a ejecutar comandos de Linux cuando cambia un archivo en un directorio determinado y cuando se crean nuevos archivos.
También podría estar interesado en aprender a eliminar archivos y directorios en Linux.
Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.
Direcciones de Billetera:
- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS
- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe
- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f
- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx
También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:
- Telegram
Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones