Esegui script su Modifica file su Mac OS X


8

Qualcuno sa di un programma per Mac OS che puoi passare il nome a un file eseguibile e un file da guardare, in modo che esegua il file eseguibile ogni volta che il file che stai guardando cambia?

Ho in mente qualcosa del genere:

$ fwatch /Users/foo/doc.tex /Users/foo/run-pdflatex.sh &
  fwatch running. Listening for changes in /Users/foo/doc.tex.
$ echo "This aint no LaTeX" > doc.tex
$ fwatch: Change in /Users/foo/doc.tex detected. Running /Users/foo/run-pdflatex.sh...

Risposte:


6

Puoi configurarlo usando launchd . In particolare, è necessario utilizzare la chiave watchpaths nella finestra di avvio per cercare le modifiche in quel file.

Informazioni esaustive disponibili in questo articolo AFP548 .

Anche se sembra che non sia più in fase di sviluppo, Lingon è un'applicazione che fornisce un modo GUI per impostare questi file di pianificazione di avvio.

MODIFICARE:

All'incirca, ecco cosa faresti usando i tuoi percorsi di esempio sopra. Salvare un file denominato com.superuser.run-pdflatex.plistcon i seguenti contenuti in~/Library/LaunchAgents

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
    <string>com.superuser.run-pdflatex</string>
    <key>OnDemand</key>
    <true/>
    <key>Program</key>
    <string>/Users/foo/run-pdflatex.sh</string>
    <key>ProgramArguments</key>
    <array>
            <string>run-pdflatex.sh</string>
    </array>
    <key>WatchPaths</key>
    <array>
            <string>/Users/foo/doc.tex</string>
    </array>
    </dict>
</plist>

Quindi digitare launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plistil terminale per caricare il demone di sorveglianza dei file.

Sopra non è stato testato, ma questa è l'idea generale.


2

Puoi farlo in Automator. Credo che sia sotto l'opzione Cartella nel flusso di lavoro dell'automazione (non di fronte a un Mac). Quindi basta allegare lo script alla cartella e si attiverà ogni volta che un file viene aggiunto / modificato.


Non riesco proprio a seguirlo. Sono nuovo di Automator, ma per quanto ne so non puoi scegliere quando eseguire il tuo script ma solo cosa fare quando viene eseguito. Ci sono anche le azioni delle cartelle in Mac OS che potrei usare, ma ho pensato che AppleScript abbia solo l'azione "sull'aggiunta di elementi della cartella a" ma niente di simile "alla modifica degli elementi della cartella in".
Johannes,

Hai ragione @Johannes. Mentre ci sono azioni cartella per aggiungere elementi cartella, rimuovere elementi cartella, spostare la finestra cartella, chiudere la finestra cartella e aprire la cartella, non c'è azione cartella per rilevare le modifiche ai file. Puoi vederlo aprendo il dizionario StandardAdditions.osax in Applescript Editor.
ghoppe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.