wie umleiten der Ausgabe von mehreren Befehlen in einer Datei
habe ich ein bash-Skript, das die folgenden zwei Befehle aus:
ssh host tail -f /some/file | awk ..... > /some/file &
ssh host tail -f /some/file | grep .... > /some/file &
Wie kann ich die Ausgabe der beiden Befehle gerichtet werden, in der gleichen Datei.
InformationsquelleAutor der Frage user2864207 | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinweis: Sie können reduzieren die Anzahl der ssh-Aufrufe:
Beispiel:
InformationsquelleAutor der Antwort glenn jackman
Entweder 'append' mit
>>
oder verwenden Sie geschweifte Klammern umfassen die I/O-Umleitungen, oder (gelegentlich) verwendenexec
:oder:
oder:
Nach der
exec
wird die Standardausgabe des Skripts als ganzes geht/some/file
. Ich habe selten verwenden Sie diese Technik; ich verwende in der Regel die{ ...; }
Technik statt.Hinweis: Sie müssen vorsichtig sein mit den Klammern-notation. Was ich zeigte funktionieren wird. Versuchen zu reduzieren auf eine Zeile erfordert, dass Sie zur Behandlung der
{
als wäre es ein Befehl (gefolgt von einem Leerzeichen, zum Beispiel) und auch zur Behandlung der}
als wäre es ein Befehl. Sie muss ein befehlsabschlusszeichen vor der}
— ich habe ein newline, aber ein&
für den hintergrund oder;
würde auch funktionieren.Also:
Ich habe auch nicht die Frage, warum Sie zwei separate
tail -f
den Betrieb auf einem einzelnen remote-Datei-und warum Sie nicht mitawk
power als super-grep
zu handhaben, alles in einem — ich habe nur die angesprochen die Oberfläche, die Frage, wie die Umleitung von I/O der beiden Befehle in eine Datei.InformationsquelleAutor der Antwort Jonathan Leffler
Die beste Antwort auf dieses Problem ist wahrscheinlich loszuwerden, die
ssh .... | grep ...
Zeile, und ändern Sie dieawk
Skript in den anderen Befehl zum hinzufügen der Funktionalität, die Sie immer waren aus dengrep
Befehl...Wird, loszuwerden, interleaving Fragen als bonus-Seite-Effekt.
InformationsquelleAutor der Antwort twalberg