Linux bietet eine schöne Schnittstelle zum Überwachen aller Dateisystemereignisse wie Erstellen, Ändern und Entfernen von Dateien. Die Schnittstelle ist eine inotifyFamilie von Systemaufrufen. Die Userspace-Dienstprogramme, die diese Aufrufe nutzen, werden vom inotify-toolsPaket in Ubuntu bereitgestellt (verfügbar im Universum-Repository). Wenn Sie es noch nicht haben, installieren Sie es durch:
sudo apt-get install inotify-tools
inotify-toolsbietet inotifywaitund inotifywatchbinaries, wir brauchen die erste.
Sie möchten den Befehl also ausführen, asciidoctor -q some_filewenn eine .adocDatei geändert wird ( some_filewird durch diese ersetzt). Wenn sich Ihre .adocDateien im Verzeichnis befinden /foo/bar, können Sie die Überwachung einstellen:
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc
-qaktiviert den leisen Modus, keine Infos von inotifywaitsich
-m Aktiviert den Überwachungsmodus, andernfalls wird er nach dem ersten Ereignis beendet
--event modifyWir sind nur an modifyEreignissen interessiert , dh wenn eine Datei geändert wird. Andere mögliche Werte sind open, closeusw.
--format %wWir möchten nur den Dateinamen, der geändert wird, und nicht eine Reihe anderer Informationen, da wir den Dateinamen als Eingabe für einen anderen Befehl verwenden
/foo/bar/*.adocwird auf alle .adocDateien im /foo/barVerzeichnis erweitert
Das Obige zeigt Ihnen nun den Dateinamen, wenn einer geändert wird, um den Befehl für den Dateinamen auszuführen (vorausgesetzt, der Befehl akzeptiert Argumente über STDIN):
inotifywait -qm --event modify --format '%w' /foo/bar/*.adoc | asciidoctor -q
Sie können auch eine rekursive Überwachung für das Verzeichnis einrichten. Anschließend müssen Sie grepnur die gewünschten Dateien filtern. Hier setzen Sie die Uhr rekursiv ( -r) im Verzeichnis /foo/barund grepfiltern nur .adocDateien:
inotifywait -qrm --event modify --format '%w%f' /foo/bar | grep '\.adoc$' | asciidoctor -q
Beim Betrachten von Verzeichnissen wird der Ausgabeformatbezeichner %win den Verzeichnisnamen aufgelöst, daher müssen wir %fden Dateinamen abrufen. Beim Betrachten von Dateien %fwürde sich die Zeichenfolge leeren.
Beachten Sie, dass Sie auch inotifywaitim daemon ( -d) -Modus ausführen können, das Ganze skripten und / oder im Hintergrund ausführen und / oder mit anderen Optionen spielen können.
Sie können auch durch asciidoctoreinen anderen Befehl Ihrer Wahl ersetzen , wenn Sie möchten.
Überprüfen Sie man inotifywait, um mehr Idee zu bekommen.