Jste na správném místě, pokud se chcete naučit spouštět příkazy Linuxu, když se změní jakýkoli soubor v pracovním adresáři a když jsou vytvořeny nové soubory.
V Linuxu můžete použít cron k naplánování spouštění příkazů v určitou dobu.
Co když ale potřebujete, aby se příkazy spouštěly pokaždé, když je soubor upraven nebo je do adresáře přidán nový soubor?
To je také snadno dosažitelné a existují některé nástroje příkazového řádku, které to umožňují.
Začněme!
Table of Contents
watchexec
watchexec je praktický a samostatný nástroj, který monitoruje daný pracovní adresář a spustí příkaz, pokud zjistí nějaké změny, jako je aktualizace souboru nebo vytvoření nového souboru.
Funkce
- Nevyžaduje složitý příkazový řádek obsahující xargs (rozšířené argumenty).
- Kontroluje změny v aktuálním adresáři a všech podadresářích v reálném čase.
- Není potřeba žádný jazykový modul a není připojen k žádnému konkrétnímu jazyku nebo ekosystému.
- .gitignore a .ignore se ve výchozím nastavení používají k rozhodnutí, u kterých souborů se mají ignorovat oznámení.
- Skupiny procesů se používají ke sledování programů rozvětvení.
- Sledování souborů s určitou příponou je podporováno.
- Je kompatibilní s OS X, Linux a Windows.
- Filtrování a ignorování událostí na základě glob (vzorce vyhledávání souborů pro nalezení částečně identických názvů souborů jsou možné.
Instalace watchexec
Chcete-li snadno nainstalovat nástroj watchexec, vložte následující odkaz do terminálu nebo příkazového řádku a stiskněte klávesu enter.
Linux a macOS
curl -sS https://webinstall.dev/watchexec | bash
Po úspěšné instalaci se cesta zobrazí na obrazovce. V mém případě byl tento nástroj nainstalován do /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
A po instalaci přejděte do úložiště .local/bin a pomocí těchto příkazů zkontrolujte, zda tam soubor je nebo ne.
cd .local/bin ls
Dalším krokem je export cesty pro použití nástroje watchexec.
export PATH="/root/.local/bin:$PATH"
Pro spuštění stačí zadat watchexec do terminálu jako uživatel root. Pomocí tohoto příkazu zjistíte, které příznaky a možnosti lze použít s nástrojem watchexec.
watchexec --help
Ukázkové příklady příkazů
- Volejte ls -la, když se v tomto adresáři/podadresáři změní jakýkoli soubor. Tento příkaz zobrazí všechny soubory přítomné v adresáři, kdykoli zjistí jakoukoli změnu.
watchexec -- ls -la
- Kdykoli se změní některý ze souborů python, js, CSS nebo Html rozšíření v aktuálním adresáři, spusťte příkaz. Zde můžete předat libovolný příkaz. Přípony souborů by měly být odděleny čárkou.
watchexec --exts py,js,css,html <command>
- Spusťte příkaz, když se změní jakýkoli soubor v lib nebo src. Volba „-w“ sleduje konkrétní soubor nebo adresář v systému.
watchexec -w lib -w src <command>
- Zavolejte/restartujte jakoukoli službu, když se změní jakýkoli soubor v aktuálním adresáři (a všech podadresářích).
watchexec -e html -r tor watchexec -e js,py -r mysql
Zde volba „-r“ restartuje proces nebo službu, pokud běží v systému.
Další příklady použití watchexec naleznete na adrese oficiální úložiště GitHub.
entr
entr je jednoduchý a vynikající nástroj příkazového řádku pro spouštění libovolných příkazů, když v daném adresáři nastanou nějaké úpravy.
„Entr“ je zkratka pro Event Notify Test Runner. Tento nástroj byl vytvořen s cílem poskytnout rychlou zpětnou vazbu a automatizované testování.
Instalace
entr je předinstalovaný v distribuci Linuxu. V případě, že chybí, musíte jej nainstalovat ručně.
Tento nástroj se snadno používá a lze jej nainstalovat pomocí následujícího příkazu.
sudo apt-get install entr
Nebo jej můžete také nainstalovat klonováním oficiálního Git úložiště.
git clone https://github.com/eradman/entr.git
Dále přejděte do tohoto adresáře a nainstalujte požadavky pomocí níže uvedených příkazů.
./configure make test make install
Chcete-li zobrazit dostupné možnosti sestavení, spusťte ./configure -h
Ukázkové příklady příkazů
Chcete-li zobrazit možnosti a argumenty dostupné pro příkaz entr. Použijte následující příkaz.
man entr
Tento příkaz zobrazí uživatelskou příručku pro příkaz 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)
- Chcete-li spustit a automaticky znovu načíst server MySQL, když se v pracovním adresáři změní jakýkoli soubor JavaScript. Pokaždé, když jsou změny uloženy do souboru, entr znovu načte MySQL server.
ls *.js | entr -r mysql
- Chcete-li automaticky znovu načíst webový server nebo ukončit, pokud server skončí.
$ ls * | entr -rz ./httpd
Pro více podrobností a příkladů o příkazu entr můžete navštívit jejich úředníka úložiště GitHub.
Slova na závěr 👩💻
Doufám, že jste našli tento článek velmi užitečným při učení, jak spouštět příkazy Linuxu, když se jakýkoli soubor v daném adresáři změní a když jsou vytvořeny nové soubory.
Možná vás také bude zajímat, jak odstranit soubory a adresáře v Linuxu.