Sådan udføres kommandoen, når filen ændres i Linux?

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!

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.

  Sådan renses metadata fra filer på Linux

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.

  Sådan bruger du Pale Moon-browseren på Linux

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.

  Sådan installeres Flowblade Video Editor til Linux

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.