Tee (Befehl)

T -Shirt
Entwickler (en) AT & T Bell Laboratories, Mike Parker, Richard Stallman, David Mackenzie, Mikrokruste, Jim Hall, JP -Software, Microsoft
Erstveröffentlichung Juni 1974; Vor 48 Jahren
Geschrieben in C
Betriebssystem Unix, Unix-artig, Plan 9, Inferno, OS-9, Freedos, Fenster, Reactos, Ibm i
Plattform Plattformübergreifend
Typ Befehl
Lizenz Freedos: GPL-2.0-or-Later
Reactos: GPLV2
Plan 9: MIT -Lizenz

Im Computer, T -Shirt ist ein Befehl in Befehlszeileninterpreten (Muscheln) Verwenden Standardströme Dies liest die Standardeingabe und schreibt sie sowohl in die Standardausgabe als auch in eine oder mehrere Dateien, wodurch der Eingang effektiv dupliziert wird.[1] Es wird hauptsächlich in Verbindung mit Rohre und Filter. Der Befehl ist nach dem benannt T-Splitter bei der Sanitärinformation.[2]

Überblick

Beispiel Verwendung von T -Shirt: Die Ausgabe von ls -l wird umgeleitet zu T -Shirt die sie in die Datei kopiert Datei.txt und zum Pager weniger. Der Name T -Shirt kommt aus diesem Schema - es sieht aus wie der Großbuchstaben T

Das T -Shirt Befehl wird normalerweise verwendet Teilt Die Ausgabe eines Programms, damit es sowohl in einer Datei angezeigt als auch gespeichert werden kann. Der Befehl kann verwendet werden, um die Zwischenausgabe zu erfassen, bevor die Daten durch einen anderen Befehl oder Programm geändert werden. Der Befehl tee liest lautet Standardeingabe, dann schreibt er seinen Inhalt an Standardausgabe. Es kopiert die Daten gleichzeitig in die angegebenen Dateien oder Variablen. Die Syntax unterscheidet sich je nach Implementierung des Befehls.

Implementierungen

Der Befehl ist für verfügbar für Unix und Unix-artig Betriebssysteme, Mikrokruste OS-9,[3] DOS (z.B. 4dos, Freedos), Microsoft Windows (z.B. 4nt, Windows PowerShell), und Reactos.[4] Der Linux T -Shirt Das Kommando wurde von Mike Parker geschrieben, Richard Stallmanund David Mackenzie.[5] Der Befehl ist als separates Paket für verfügbar Microsoft Windows Im Rahmen des Unxutils Sammlung von einheimisch Win32 Häfen von gemeinsamen GNU-Unix-ähnlichen Versorgungsunternehmen.[6] Das Freedos Die Version wurde von entwickelt von Jim Hall und ist unter dem lizenziert Gpl.[7] Das T -Shirt Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[8]

Zusätzlich die Schwamm[9] Befehl bietet ähnliche Funktionen.

Unix und Unix-artig

tee [-a] [-i] [Datei ...]

Argumente:

  • Datei ... Eine Liste von Dateien, von denen jeder die Ausgabe erhält.

Flaggen:

  • -a Fängt die Ausgabe an jede Datei an, anstatt sie zu überschreiben.
  • -ich Ignoriert Interrupts.

Der Befehl gibt die folgenden Exit -Werte zurück (Status beenden):

  • 0 Die Standardeingabe wurde erfolgreich in alle Ausgabedateien kopiert.
  • > 0 Es ist ein Fehler aufgetreten.

Verwendung Prozesssubstitution lasst uns mehr als einen Prozess lesen Standardausgabe des Ursprungsprozesses. Lesen Sie dieses Beispiel von GNU CoreUtils, Tee -Aufruf.

Hinweis: Wenn ein Schreiben in eine erfolgreich geöffnete Dateioperand nicht erfolgreich ist, schreibt er an andere erfolgreich geöffnete Dateioperanden und die Standardausgabe wird fortgesetzt, der Exit -Wert beträgt jedoch> 0.

4dos und 4nt

Tee [/a] Datei ...

Argumente:

  • Datei Eine oder mehrere Dateien, die die Ausgabe "Tee'd" erhalten.

Flaggen:

  • /EIN Gehen Sie den Pipeline -Inhalt an die Ausgabedatei (n) an, anstatt sie zu überschreiben.

Hinweis: Wann T -Shirt wird mit einem Rohr verwendet, die Ausgabe des vorherigen Befehls wird an a geschrieben temporäre Datei. Wenn dieser Befehl endet, T -Shirt liest die temporäre Datei, zeigt die Ausgabe an und schreibt sie an die angegebenen Dateien als Befehlszeilenargument.

Windows PowerShell

tee [-filepath] <string> [-InputObject <StObject>] tee -variable <string> [-InputObject <SpsObject>]]

Argumente:

  • -InputObject Gibt die Objekteingabe in das CMDLET an. Der Parameter akzeptiert Variablen, die die Objekte und Befehle oder den Ausdruck enthalten, die die Objekte zurückgeben.
  • -Dateipfad Gibt die Datei an, in der das CMDLET das Objekt speichert. Der Parameter akzeptiert Wildcard -Charaktere Das wird auf eine einzelne Datei gelöst.
  • -Variable Ein Verweis auf die Eingabefiele wird der angegebenen Variablen zugeordnet.

Notiz: T -Shirt wird als implementiert Schreibgeschützt Kommandoalias. Der interne CMDLet -Name ist Microsoft.powerShell.utility \ tee-Object.

Beispiele

Unix und Unix-artig

  • Um die Ausgabe von einem Befehl anzusehen und zu speichern (Fussel) zur selben Zeit:
Lint Program.C | TEE -Programm.lint

Dies zeigt die Standardausgabe des Befehls an Lint Program.C am Computer und gleichzeitig eine Kopie davon in der Datei sparen Programm.lint. Wenn eine Datei mit dem Namen Programm.lint Es existiert bereits, es wird gelöscht und ersetzt.

In ähnlicher Weise können sowohl die STDOut- als auch die STDERR -Ausgangsströme auf Standardausgabe und die umgeleitet werden Programm.lint Verwenden der Stream -Umleitung:

Lint Program.C 2>&1 | TEE -Programm.lint
  • Um die Ausgabe von einem Befehl an eine vorhandene Datei anzuzeigen und anzuhängen:
Lint Program.C | tee -a programm.lint

Dadurch wird die Standardausgabe der angezeigt Lint Program.C Befehl am Computer und gleichzeitig eine Kopie davon am Ende des Programm.lint Datei. Wenn die Programm.lint Datei gibt es nicht, sie wird erstellt.

  • Berechtigungen zu einer Eskalation:
cat ~/.sssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.sssh/authorized_keys2>/dev/null" 

Dieses Beispiel zeigt T -Shirt verwendet werden, um eine inhärente Einschränkung in der zu umgehen sudo Befehl. sudo kann die Standardausgabe nicht in eine Datei übergeben. Indem er seinen Stdout -Stream in den Stream einladet /dev/nullWir unterdrücken 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 auf der wichtigsten Autorisierungsliste des Servers installiert wird.

Im Verprügeln, der Ausgang kann sein gefiltert Bevor Sie in die Datei geschrieben werden - ohne die angezeigte Ausgabe - durch die Verwendung Prozesssubstitution. Zum Beispiel,

ls --farbe=stets | Tee>(sed "s/\ x1b [^m]*m // g" > ls.txt) 

Entfernt gemeinsam Ansi Escape Codes vor dem Schreiben an ls.txt, aber behält sie zur Anzeige.[10]

4dos und 4nt

In diesem Beispiel sucht die Datei Wikipedia.txt Für alle Zeilen, die die Zeichenfolge enthalten "4dos", macht eine Kopie der passenden Zeilen in 4dos.txtsortiert die Zeilen und schreibt sie in die Ausgabedatei 4Dosorted.txt:

finden "4Dos" Wikipedia.txt | tee 4dos.txt | Sortieren > 4Dosorted.txt

Windows PowerShell

  • So anzeigen und gleichzeitig die Ausgabe von einem Befehl zu speichern:
ipconfig | T -Shirt Ausgabedatei.txt 

Dies zeigt die Standardausgabe des Befehls an ipconfig Bei der Konsolenfensterund speichert gleichzeitig eine Kopie davon in der Datei OutputFile.txt.

  • Zum Anzeigen und Speichern aller Laufen Prozesse, gefiltert so, dass nur Programme beginnen, die mit SVC beginnen und mehr als 1000 besitzen Griffe ausgeben:
Get-Process | Wo-objekt { $ _.Name -wie "SVC*" } | T-Shirt-Objekt ABC.txt | Wo-objekt { $ _.Griffe -Gt 1000 } 

Dieses Beispiel zeigt, dass der Pipeed -Eingang für T -Shirt kann gefiltert werden und das T -Shirt wird verwendet, um diese Ausgabe anzuzeigen, die erneut gefiltert wird, so dass nur Prozesse mit mehr als 1000 Griffen angezeigt werden, und schreibt die ungefilterte Ausgabe in die Datei ABC.TXT.

  • Windows PowerShell eignet sich nicht für binäre und Rohdaten und behandelt den Stream immer als Text und ändert die Daten, sobald sie übertragen werden.

Siehe auch

Verweise

  1. ^ "Mann Seite für Tee (POSIX Abschnitt 1)".IEEE STD 1003.1, 2003 Edition, Standard für Informationstechnologie - tragbare Betriebssystemschnittstelle (POSIX), die offenen Gruppenbasis -Spezifikationen Ausgabe 6. Abgerufen 1. Dezember 2013.
  2. ^ "In Unix, wofür stehen einige dunkel genannte Befehle?". Abgerufen 3. Februar 2012.
  3. ^ Paul S. Dayan (1992). Der OS -9 -Guru - 1: Die Fakten. Galaktische Industrial Limited. ISBN 0-9519228-0-7.
  4. ^ "Reactos/Reactos". GitHub. 3. Januar 2022.
  5. ^ "Tee (1): Lesen Sie aus Stdin/Schreiben Sie an Stdout/Dateien - Linux Man Page". Linux.die.net.
  6. ^ "Native Win32 -Ports einiger GNU -Dienstprogramme". Unxutils.SourceForge.net.
  7. ^ "ibiblio.org Freedos Paket-Tee (unix-ähnlich)". www.ibiblio.org.
  8. ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 5. September 2020.
  9. ^ "Sponge (1): Saugen Sie Stdin/Schreiben Sie in Datei - Linux Man Page auf". Linux.die.net.
  10. ^ "GNU CoreUtils: Tee -Aufruf". Abgerufen 3. Februar 2016.

Weitere Lektüre

  • McElhearn, Kirk (2006). Die MAC OS X -Befehlszeile: UNIX unter der Motorhaube. John Wiley & Sons. ISBN 978-0470113851.

Externe Links