Führen Sie zwei Watch-Befehle gleichzeitig aus

1842
vaughan

Ich möchte zwei ausführbare Dateien im Vordergrund ausführen, indem Sie eine Codezeile eingeben oder ein Shell-Skript ausführen. Diese ausführbaren Dateien überwachen ein Verzeichnis und kompilieren einen Teil des Codes, während sie ihren Status in stdout ausgeben.

Ich möchte, dass das stdout auf dieselbe Weise dargestellt wird wie die folgenden zwei Dateien in 'tail':

tail -f foo.txt -f bar.txt  ==> foo.txt <== Something  ==> bar.txt <== Something else 

Wenn sich etwas ändert, wird der Dateiname gedruckt, bevor die Ausgabe gedruckt wird. Der Dateiname wird nur dann ausgegeben, wenn angegeben werden muss, dass die Ausgabe aus der anderen Datei stammt.

2
Sie haben eigentlich keine Frage gestellt. Ich versuche nicht, unhöflich zu sein, aber ich weiß ehrlich nicht, was Ihre Frage ist, nachdem ich das gelesen habe. Daniel Andersson vor 12 Jahren 4
Das tut mir leid. Ich habe etwas mehr Details hinzugefügt. vaughan vor 12 Jahren 0

2 Antworten auf die Frage

1
chepner

Da die beiden ausführbaren Dateien in die Standardausgabe schreiben, können Sie möglicherweise nur taildie durch die Prozessersetzung erzeugten Dateien verwenden:

tail -f <( executable_one ) <( executable_two ) 

(Übrigens ist nur eine -ferforderlich. Dies ist eine globale Option, die Sie nicht für jede Datei angeben müssen.)

Jedes der beiden ausführbaren Dateien wird separat ausgeführt, und seine Ausgabe wird erfasst und zu einem übergebenen Datei-Handle umgeleitet tail. In der Ausgabe erscheinen die Dateinamen wie "/ dev / fd / 63". Leider weiß ich nicht, wie man einen alternativen Namen (wie with grepund die --labelOption) verwenden kann.

0
Fran