Du har kommet til rett sted hvis du vil lære hvordan du kjører Linux-kommandoer når en fil i en arbeidskatalog endres og når nye filer opprettes.
I Linux kan du bruke cron til å planlegge kommandoer som skal kjøres til bestemte tider.
Men hva om du trenger kommandoer som skal kjøres hver gang en fil endres, eller en ny fil legges til i en katalog?
Det er også lett oppnåelig, og det er noen kommandolinjeverktøy for å utføre det.
La oss komme i gang!
watchexec
watchexec er et hendig og frittstående verktøy som overvåker en gitt arbeidskatalog og utfører en kommando hvis den oppdager endringer som filoppdatering eller ny filoppretting.
Funksjoner
- Det krever ikke en kompleks kommandolinje som involverer xargs (utvidede argumenter).
- Sjekker for endringer i gjeldende katalog og alle underkataloger i sanntid.
- Det er ikke behov for en språkkjøring, og den er ikke koblet til noe spesifikt språk eller økosystem.
- .gitignore og .ignore brukes som standard for å bestemme hvilke filer som skal ignoreres varsler for.
- Prosessgrupper brukes til å holde styr på gaffelprogrammer.
- Å se på filer med en viss utvidelse støttes.
- Den er kompatibel med OS X, Linux og Windows.
- Filtrering og ignorering av hendelser basert på glob (filsøkemønstre for å finne delvis identiske filnavn er mulig.
Installasjon av watchexec
For enkelt å installere watchexec-verktøyet, lim inn følgende lenke i terminalen eller en shell-prompt, og trykk enter.
Linux og macOS
curl -sS https://webinstall.dev/watchexec | bash
Etter vellykket installasjon vil banen vises på skjermen. I mitt tilfelle ble dette verktøyet installert i /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
Og etter installasjonen, naviger til .local/bin-depotet og kontroller om filen er der eller ikke ved å bruke disse kommandoene.
cd .local/bin ls
Det neste trinnet er å eksportere banen for å bruke watchexec-verktøyet.
export PATH="/root/.local/bin:$PATH"
For å kjøre, skriv bare watchexec i terminalen som en root-bruker. Bruk denne kommandoen for å se hvilke flagg og alternativer som kan brukes med watchexec-verktøyet.
watchexec --help
Eksempel på kommandoer
- Ring ls -la når en fil endres i denne katalogen/underkatalogen. Denne kommandoen viser alle filene som finnes i katalogen hver gang den oppdager endringer.
watchexec -- ls -la
- Når noen av python-, js-, CSS- eller HTML-utvidelsesfilene i gjeldende katalog endres, kjør kommandoen. Her kan du sende hvilken som helst kommando du vil. Filtypene skal være atskilt med komma.
watchexec --exts py,js,css,html <command>
- Kjør kommandoen når en fil i lib eller src endres. Alternativet «-w» ser på en bestemt fil eller katalog i systemet.
watchexec -w lib -w src <command>
- Ring/start en hvilken som helst tjeneste når en fil i gjeldende katalog (og alle underkataloger) endres.
watchexec -e html -r tor watchexec -e js,py -r mysql
Her starter «-r»-alternativet prosessen eller tjenesten på nytt hvis den kjører i systemet.
For flere eksempler på bruk av watchexec kan du besøke offisielle GitHub-depot.
entr
entr er et enkelt og utmerket kommandolinjeverktøy for å kjøre vilkårlige kommandoer når det skjer endringer i en gitt katalog.
«entr» står for Event Notify Test Runner. Dette verktøyet ble laget med mål om å gi rask tilbakemelding og automatisert testing.
Installasjon
entr er forhåndsinstallert i Linux-distribusjonen. I tilfelle den mangler, må du installere den manuelt.
Dette verktøyet er enkelt å bruke og kan installeres med følgende kommando.
sudo apt-get install entr
Eller du kan også installere den ved å klone den offisielle Git repository.
git clone https://github.com/eradman/entr.git
Deretter navigerer du til den katalogen og installer kravene ved å bruke kommandoene nedenfor.
./configure make test make install
For å se tilgjengelige byggealternativer, kjør ./configure -h
Eksempel på kommandoer
For å se alternativene og argumentene som er tilgjengelige for kommandoen entr. Bruk følgende kommando.
man entr
Denne kommandoen viser brukermanualen for kommandoen entr.
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)
- Å starte og automatisk laste inn en MySQL-server når en JavaScript-fil endres i arbeidskatalogen. Hver gang endringene lagres i filen, laster entr inn MySQL-serveren på nytt.
ls *.js | entr -r mysql
- For å laste en webserver på nytt automatisk eller avslutte hvis serveren avsluttes.
$ ls * | entr -rz ./httpd
For flere detaljer og eksempler på entr-kommandoen, kan du besøke deres offisielle GitHub-depot.
Siste ord 👩💻
Jeg håper du fant denne artikkelen veldig nyttig for å lære hvordan du kjører Linux-kommandoer når en fil i en gitt katalog endres og når nye filer opprettes.
Du kan også være interessert i å lære hvordan du fjerner filer og kataloger i Linux.