Tee
ist nicht nutzlos
Vielleicht wusstest du das trotzdem? Wenn nicht, lesen Sie weiter! Oder wenn Sie wissen, wie es funktioniert, aber nicht sicher sind, warum es existiert, fahren Sie mit dem Ende fort, um zu sehen, wie es zur Unix-Philosophie passt.
Was ist der Zweck von tee
?
Im einfachsten Fall werden Daten über die Standardeingabe in die Standardausgabe und in eine (oder mehrere) Dateien geschrieben. Es wurde in der Art, wie es einen Eingang in zwei Ausgänge (und zwei Richtungen) aufteilt, mit einem Klempner-T-Stück verglichen .
Beispiele
Nehmen wir Ihr erstes Beispiel:
do_something | tee -a logfile
Dies übernimmt die Ausgabe von do_something
und hängt sie an die Protokolldatei an, während sie auch dem Benutzer angezeigt wird. In der Tat hat die Wikipedia-Seitetee
dies als zweites Beispiel:
So zeigen Sie die Ausgabe eines Befehls an und hängen sie an eine vorhandene Datei an:
lint program.c | tee -a program.lint
Dadurch wird die Standardausgabe des Befehls lint program.c auf dem Computer angezeigt und gleichzeitig eine Kopie an das Ende der Datei program.lint angehängt. Wenn die Datei program.lint nicht vorhanden ist, wird sie erstellt.
Das nächste Beispiel hat eine andere Verwendung: Eskalation von Berechtigungen :
So erlauben Sie die Eskalation von Berechtigungen:
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
Dieses Beispiel zeigt, wie tee verwendet wird, um eine inhärente Einschränkung des sudo
Befehls zu umgehen . sudo
kann die Standardausgabe nicht in eine Datei leiten. Indem /dev/null
wir den Standard-Out-Stream in entleeren, unterdrücken wir auch die gespiegelte Ausgabe in der Konsole. Der obige Befehl gibt dem aktuellen Benutzer root-Zugriff auf einen Server über ssh, indem der öffentliche Schlüssel des Benutzers in die Schlüsselberechtigungsliste des Servers aufgenommen wird.
Oder möchten Sie die Ausgabe eines Befehls übernehmen, das irgendwo schreiben und das auch als Eingabe für einen anderen Befehl verwenden?
Sie können den Befehl tee auch verwenden, um die Ausgabe eines Befehls in einer Datei zu speichern und dieselbe Ausgabe wie eine Eingabe an einen anderen Befehl umzuleiten.
Der folgende Befehl erstellt eine Sicherungskopie der crontab-Einträge und übergibt die crontab-Einträge als Eingabe an den sed-Befehl, der die Ersetzung vornimmt. Nach der Ersetzung wird es als neuer Cron-Job hinzugefügt.
$ crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab –
( Beispiele für die Verwendung von Tee-Befehlen )
Tee
arbeitet mit der Unix-Philosophie:
Schreiben Sie Programme, die eines können und es gut machen. Schreiben Sie Programme, um zusammenzuarbeiten. Schreiben Sie Programme, um Textströme zu verarbeiten, da dies eine universelle Schnittstelle ist.
(Verdienst der Grundlagen der Unix-Philosophie )
tee
passt zu all diesen:
- Damit wird eine zusätzliche Kopie der Eingabe erstellt
- Es funktioniert mit anderen Programmen, da es der Klebstoff (oder ein T-Stück, wenn Sie es vorziehen) ist, mit dem andere Programme wie in den obigen Beispielen zusammenarbeiten können
- Dies geschieht durch Manipulieren eines bei der Standardeingabe angegebenen Textstroms