Führt in Shells exec
1) Dateiöffnungen und -umleitungen aus 2) das exec
Aktualisieren (Ersetzen des aktuellen Prozessabbilds durch ein anderes Prozessabbild).
Dies exec
sind Weiterleitungen.
Zuerst leiten Sie ( exec 1> >(tee $LOGFILE)
) den stdout
Deskriptor (1) zu einer durch Prozessersetzung generierten Pipe um, die mit einem gleichzeitig ausgeführten tee
Prozess verbunden ist $LOGFILE
, dessen erstes Argument darin besteht, und dann leiten Sie den stderr
Deskriptor (2) an dieselbe Stelle um, auf die der Deskriptor 1
jetzt zeigt (das T-Stück) Rohr).
Unter Berücksichtigung der Tatsache, dass die Filedescriptors vererbt werden, haben Sie gerade die gesamte Zukunft stdout
und stderr
Ausgabe auf den tee
Prozess $LOGFILE
umgestellt , der sie an die Stelle schreibt, auf die der Filedescriptor 1 ursprünglich verwiesen hat (wahrscheinlich Ihr Terminal).
Hinweis:
Der Tee-Prozess wird auf die ursprüngliche Standardausgabe (= der ursprüngliche Filedescriptor 1) ausgegeben, da, wie Sie aus / search bash (1) für die einfache Befehlserweiterung und Prozessersetzung lernen können , die Prozessersetzung ( >()
<()
) (zusammen mit anderen Erweiterungen) zuvor erfolgt Umleitungen erhält ausgeführt, was bedeutet , dass die Umleitung in exec 1> >(tee "$LOGFILE")
geschieht , nachdem tee
begonnen hat, so dass tee
mit dem gleichen FileDescriptor 1 , dass sie von der übergeordneten Shell geerbt. (Wenn es umgekehrt tee
wäre , würde es veranlasst, in seinen eigenen Eingang zu schreiben, was es abhängig von seinem E / A-Muster zum Deadlock machen könnte).