Wie führe ich fswatch aus, um ein Programm mit statischen Argumenten aufzurufen?

8

Ich habe fswatch v0.0.2 so verwendet (in diesem Fall, um django test suit auszuführen, wenn sich eine Datei geändert hat)

$>fswatch . 'python manage.py test'

das funktioniert gut.

Ich wollte einige Dateien ausschließen, die dazu führten, dass der Test mehr als einmal pro Speichervorgang ausgeführt wurde (Sublimierter Text speicherte eine TMP-Datei, und ich vermute, dass .pyc-Dateien dies ebenfalls verursachten)

Also habe ich fswatch aktualisiert, um den -e-Modus zu aktivieren.

Aber wie sich fswatch geändert hat, was mir Probleme bereitet - es akzeptiert nun ein Pipe-Argument wie folgt:

$>fswatch . | xargs -n1 program

Ich kann nicht herausfinden, wie man hier Argumente an das Programm weitergibt. z.B. Das funktioniert nicht:

$>fswatch . | xargs -n1 python manage.py test

noch nicht:

$>fswatch . | xargs -n1 'python manage.py test'

Wie kann ich das tun, ohne meinen Befehl in einem Bash-Skript zu verpacken?

    
Guy Bowden 05.09.2014, 15:46
quelle

2 Antworten

14

fswatch documentation (entweder das Texinfo-Handbuch oder das Wiki , oder README ) haben Beispiele wie das gemacht wird:

%Vor%

Fallstricke:

  • -0 : Verwenden Sie diese Option, um sicherzustellen, dass Pfade mit Zeilenumbrüchen korrekt interpretiert werden.
  • -o : benutze es, damit fswatch "bubble" alle Ereignisse in der Menge in eine einzige setzt und nur die Anzahl der Datensätze in der Menge druckt.
  • -I{} : Das Angeben eines Platzhalters ist der Trick, den Sie verpasst haben, weil xargs Ihre Befehlsargumente in den Fällen richtig interpretiert, in denen Sie den Datensatz nicht wollen (in diesem Fall, da -o verwendet wurde, die Anzahl der Datensätze in der Menge), die an den auszuführenden Befehl übergeben wird.
Enrico M. Crisostomo 08.09.2014, 10:03
quelle
8

Alternative Antwort, die nicht den Standardgrund von xargs bekämpft - die Ausgabe als Argumente an den auszuführenden Befehl weiterzugeben.

fswatch . | (while read; do python manage.py test; done)

Was immer noch ein bisschen wortreich / Syntaxy ist, so habe ich ein super einfaches Bash-Skript fswatch-do erstellt, das die Dinge für mich vereinfacht:

%Vor%

Verwendung:

fswatch -r -o -e 'pyc' somepath | fswatch-do python manage.py test someapp.SomeAppTestCase

    
Guy Bowden 08.09.2014 10:47
quelle

Tags und Links