Du er kommet til det rigtige sted, hvis du vil lære at køre Linux-kommandoer, når en fil i en arbejdsmappe ændres, og når nye filer oprettes.
I Linux kan du bruge cron til at planlægge kommandoer til at køre på bestemte tidspunkter.
Men hvad nu hvis du har brug for at køre kommandoer hver gang en fil ændres, eller en ny fil tilføjes til en mappe?
Det er også let opnåeligt, og der er nogle kommandolinjeværktøjer til at udføre det.
Lad os komme igang!
Indholdsfortegnelse
watchexec
watchexec er et praktisk og selvstændigt værktøj, der overvåger en given arbejdsmappe og udfører en kommando, hvis den registrerer ændringer som filopdatering eller oprettelse af nye filer.
Funktioner
- Det kræver ikke en kompleks kommandolinje, der involverer xargs (udvidede argumenter).
- Kontrollerer for ændringer i den aktuelle mappe og alle undermapper i realtid.
- Der er ikke behov for en sprogruntime, og den er ikke forbundet med noget specifikt sprog eller økosystem.
- .gitignore og .ignore bruges som standard til at bestemme, hvilke filer der skal ignoreres meddelelser for.
- Procesgrupper bruges til at holde styr på gaffelprogrammer.
- Se filer med en bestemt udvidelse er understøttet.
- Den er kompatibel med OS X, Linux og Windows.
- Filtrering og ignorering af hændelser baseret på glob (filsøgningsmønstre for at finde delvist identiske filnavne er muligt.
Installation af watchexec
For nemt at installere watchexec-værktøjet skal du indsætte følgende link i terminalen eller en shell-prompt og trykke på enter.
Linux og macOS
curl -sS https://webinstall.dev/watchexec | bash
Efter den vellykkede installation vil stien blive vist på skærmen. I mit tilfælde blev dette værktøj installeret 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 efter installationen skal du navigere til .local/bin-lageret og kontrollere, om filen er der eller ej ved at bruge disse kommandoer.
cd .local/bin ls
Det næste trin er at eksportere stien for at bruge watchexec-værktøjet.
export PATH="/root/.local/bin:$PATH"
For at køre skal du bare skrive watchexec i terminalen som root-bruger. Brug denne kommando til at se, hvilke flag og muligheder der kan bruges med watchexec-værktøjet.
watchexec --help
Eksempel på kommandoer
- Kald ls -la, når en fil ændres i denne mappe/undermappe. Denne kommando viser alle de filer, der findes i mappen, når den registrerer en ændring.
watchexec -- ls -la
- Når nogen af python-, js-, CSS- eller HTML-udvidelsesfilerne i den aktuelle mappe ændres, skal du køre kommandoen. Her kan du sende enhver kommando, du ønsker. Filtypenavnene skal adskilles af et komma.
watchexec --exts py,js,css,html <command>
- Kør kommando, når en fil i lib eller src ændres. “-w”-indstillingen overvåger en bestemt fil eller mappe i systemet.
watchexec -w lib -w src <command>
- Kald/genstart enhver tjeneste, når en fil i den aktuelle mappe (og alle undermapper) ændres.
watchexec -e html -r tor watchexec -e js,py -r mysql
Her genstarter “-r”-indstillingen processen eller tjenesten, hvis den kører i systemet.
For flere eksempler på watchexec-brug kan du besøge officielt GitHub-lager.
entr
entr er et simpelt og fremragende kommandolinjeværktøj til at køre vilkårlige kommandoer, når der sker ændringer i en given mappe.
“entr” står for Event Notify Test Runner. Dette værktøj blev skabt med det formål at lave hurtig feedback og automatiseret test.
Installation
entr er forudinstalleret i Linux-distributionen. Hvis det mangler, skal du installere det manuelt.
Dette værktøj er nemt at bruge og kan installeres med følgende kommando.
sudo apt-get install entr
Eller du kan også installere det ved at klone embedsmanden Git repository.
git clone https://github.com/eradman/entr.git
Derefter skal du navigere til den mappe og installere kravene ved hjælp af nedenstående kommandoer.
./configure make test make install
For at se tilgængelige build-indstillinger skal du køre ./configure -h
Eksempel på kommandoer
For at se de tilgængelige muligheder og argumenter for kommandoen entr. Brug følgende kommando.
man entr
Denne kommando viser brugervejledningen til 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)
- At starte og automatisk genindlæse en MySQL-server, når en JavaScript-fil ændres i arbejdsmappen. Hver gang ændringerne gemmes i filen, genindlæser entr MySQL-serveren.
ls *.js | entr -r mysql
- At genindlæse en webserver automatisk eller afslutte, hvis serveren afsluttes.
$ ls * | entr -rz ./httpd
For flere detaljer og eksempler på entr-kommando kan du besøge deres officielle GitHub-depot.
Sidste ord 👩💻
Jeg håber, du fandt denne artikel meget nyttig til at lære at køre Linux-kommandoer, når en fil i en given mappe ændres, og når nye filer oprettes.
Du kan også være interesseret i at lære, hvordan du fjerner filer og mapper i Linux.