En informática, teees un comando en intérpretes de línea de comandos ( shells ) que utilizan flujos estándar que leen la entrada estándar y la escriben tanto en la salida estándar como en uno o más archivos, duplicando efectivamente su entrada. [1] Se utiliza principalmente junto con tuberías y filtros . El comando recibe su nombre del divisor en T utilizado en plomería . [2]
Descripción general

ls -lse redirige a tee, que la copia al archivo file.txt y al buscapersonas less. El nombre tee proviene de este esquema: parece la letra T mayúscula.El teecomando se utiliza normalmente para dividir la salida de un programa de modo que se pueda visualizar y guardar en un archivo. El comando se puede utilizar para capturar la salida intermedia antes de que otro comando o programa altere los datos. El comando tee lee la entrada estándar y luego escribe su contenido en la salida estándar . Al mismo tiempo, copia los datos en los archivos o variables especificados. La sintaxis difiere según la implementación del comando.
Implementaciones
El comando está disponible para sistemas operativos Unix y similares a Unix , Microware OS-9 , [3] DOS (por ejemplo, 4DOS , FreeDOS ), Microsoft Windows (por ejemplo, 4NT , Windows PowerShell ) y ReactOS . [4] El comando para Linux fue escrito por Mike Parker, Richard Stallman y David MacKenzie. [5] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes similares a Unix de GNU. [6] La versión FreeDOS fue desarrollada por Jim Hall y tiene licencia GPL . [7]
El comando tee también se ha portado al sistema operativo IBM i . [8] tee
Además, el comando sponge[9] ofrece capacidades similares.
Unix y similares
tee [ -a ] [ -i ] [ Archivo ... ]
Argumentos:
File ...Una lista de archivos, cada uno de los cuales recibe la salida.
Banderas:
-aAñade la salida a cada archivo, en lugar de sobrescribirla.-iIgnora las interrupciones.
El comando devuelve los siguientes valores de salida ( estado de salida ):
- 0 La entrada estándar se copió correctamente a todos los archivos de salida.
- >0 Se produjo un error.
El uso de la sustitución de procesos permite que más de un proceso lea la salida estándar del proceso original. Lea este ejemplo de GNU Coreutils, invocación de tee.
Nota: Si una escritura en cualquier operando de archivo abierto exitosamente no es exitosa, las escrituras en otros operandos de archivo abiertos exitosamente y la salida estándar continuarán, pero el valor de salida será >0.
4DOS y 4NT
Archivo TEE [/A]...
Argumentos:
fileUno o más archivos que recibirán la salida "tee'd".
Banderas:
/AAñade el contenido de la canalización a los archivos de salida en lugar de sobrescribirlos.
Nota: Cuando se utiliza tee con una tubería, la salida del comando anterior se escribe en un archivo temporal . Cuando finaliza ese comando, tee lee el archivo temporal, muestra la salida y la escribe en el archivo o archivos proporcionados como argumento de la línea de comandos .
Windows PowerShell
tee [-FilePath] <Cadena> [-InputObject <PSObject>] tee -Variable <Cadena> [-ObjetoEntrada <ObjetoPS>]
Argumentos:
-InputObject <PSObject>Especifica la entrada del objeto al cmdlet. El parámetro acepta variables que contienen los objetos y comandos o expresiones que devuelven los objetos.-FilePath <String>Especifica el archivo donde el cmdlet almacena el objeto. El parámetro acepta caracteres comodín que se resuelven en un único archivo.-Variable <String>Se asignará una referencia a los objetos de entrada a la variable especificada.
Nota: tee se implementa como un ReadOnly alias de comando . El nombre del cmdlet interno es Microsoft.PowerShell.Utility\Tee-Object.
Ejemplos
Unix y similares
- Para ver y guardar la salida de un comando ( lint ) al mismo tiempo:
programa lint.c | programa
tee.lint Esto muestra la salida estándar del comando lint program.cen la computadora y, al mismo tiempo, guarda una copia del mismo en el archivo program.lint. Si ya existe un archivo llamado program.lint, se elimina y se reemplaza.
De manera similar, tanto los flujos de salida stdout como stderr se pueden redirigir a la salida estándar y a la program.lintredirección del flujo using:
programa lint.c 2 > & 1 | programa
tee.lint - Para ver y agregar la salida de un comando a un archivo existente:
programa lint.c | tee -a programa lint
Esto muestra la salida estándar del lint program.ccomando en la computadora y, al mismo tiempo, agrega una copia del mismo al final del program.lintarchivo. Si el program.lintarchivo no existe, se crea.
- Para permitir la escalada de permisos:
gato ~/.ssh/id_rsa.pub | ssh admin@servidor "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
Este ejemplo muestra que se utiliza tee para eludir una limitación inherente en el comando sudo . sudo no puede enviar la salida estándar a un archivo. Al volcar su flujo de salida estándar en /dev/null, también suprimimos la salida reflejada en la consola. El comando anterior le otorga al usuario actual acceso root a un servidor a través de ssh, al instalar la clave pública del usuario en la lista de autorización de claves del servidor.
En Bash , la salida se puede filtrar antes de escribirse en el archivo (sin afectar la salida mostrada) mediante la sustitución de procesos . Por ejemplo,
ls --color = siempre | camiseta > ( sed "s/\x1b[^m]*m//g" > ls.txt )
elimina los códigos de escape ANSI comunes antes de escribir en ls.txt, pero los conserva para su visualización. [10]
4DOS y 4NT
Este ejemplo busca en el archivo wikipedia.txtcualquier línea que contenga la cadena " 4DOS ", hace una copia de las líneas coincidentes 4DOS.txt, ordena las líneas y las escribe en el archivo de salida 4DOSsorted.txt:
> buscar "4DOS" wikipedia.txt | tee 4DOS.txt | ordenar > 4DOSsorted.txt
Windows PowerShell
- Para ver y guardar la salida de un comando al mismo tiempo:
ipconfig | tee Archivo de salida . txt
Esto muestra la salida estándar del comando ipconfigen la ventana de la consola y simultáneamente guarda una copia del mismo en el archivo OutputFile.txt.
- Para mostrar y guardar todos los procesos en ejecución , filtrados de modo que solo se muestren los programas que comienzan con svc y tienen más de 1000 identificadores :
Obtener-Proceso | Dónde-Objeto { $_ . Nombre -como "svc*" } | Tee-Objeto ABC . txt | Dónde-Objeto { $_ . Identificadores -gt 1000 }
Este ejemplo muestra que la entrada canalizada para tee se puede filtrar y que tee se usa para mostrar esa salida, que se filtra nuevamente para que solo se muestren los procesos que poseen más de 1000 identificadores, y escribe la salida sin filtrar en el archivo ABC.txt.
- Windows PowerShell no es adecuado para datos binarios y sin procesar y siempre tratará la transmisión como texto y modificará los datos a medida que se transfieren.
Véase también
Referencias
- ^ "Página de manual de tee (posix Sección 1)". IEEE Std 1003.1, edición de 2003, Estándar para la tecnología de la información: Interfaz de sistema operativo portátil (POSIX), Especificaciones básicas de The Open Group, número 6. Consultado el 1 de diciembre de 2013 .
- ^ "En Unix, ¿qué significan algunos comandos con nombres poco conocidos?" . Consultado el 3 de febrero de 2012 .
- ^ Paul S. Dayan (1992). El gurú del OS-9 - 1: Los hechos . Galactic Industrial Limited. ISBN 0-9519228-0-7.
- ^ "reactos/reactos". GitHub . 3 de enero de 2022.
- ^ "tee: lee desde la entrada estándar y escribe en la salida estándar y archivos". www.mankier.com .
- ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
- ^ "Paquete FreeDOS de ibiblio.org -- tee (similar a Unix)". www.ibiblio.org .
- ^ IBM . «Programación Qshell para IBM System i versión 7.2» (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
- ^ "sponge(1): absorbe la entrada estándar/escribe en el archivo - Página del manual de Linux". linux.die.net .
- ^ "GNU Coreutils: invocación de tee" . Consultado el 3 de febrero de 2016 .
Lectura adicional
- McElhearn, Kirk (2006). La línea de comandos de Mac OS X: Unix bajo el capó . John Wiley & Sons . ISBN 978-0470113851.
Enlaces externos
- Una introducción a la redirección de E/S de Linux "Redirección de E/S de Linux" Archivado el 10 de junio de 2012 en Wayback Machine con tee
- Manual de GNU Tee
- : entrada estándar duplicada – Referencia de shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
- – Manual del programador de Plan 9 , volumen 1
- – Manual de comandos generales de Inferno
- Delphi-Tee - Implementación de Delphi (software) de código abierto