Tee
no es inútil
Tal vez lo sabías de todos modos? Si no, ¡sigue leyendo! O si sabe cómo funciona, pero no está seguro de por qué existe, salte al final para ver cómo encaja con la filosofía de Unix.
¿Qué es el propósito de tee
?
En su forma más simple, toma datos en la entrada estándar y los escribe en la salida estándar y en uno (o más) archivos. Se ha comparado con una pieza en T de plomería en la forma en que divide una entrada en dos salidas (y dos direcciones).
Ejemplos
Tomemos su primer ejemplo:
do_something | tee -a logfile
Esto toma el resultado de do_something
y lo agrega al archivo de registro, mientras que también lo muestra al usuario. De hecho, la página de Wikipediatee
tiene este como el segundo ejemplo:
Para ver y agregar el resultado de un comando a un archivo existente:
lint program.c | tee -a program.lint
Esto muestra la salida estándar del comando lint program.c en la computadora y al mismo tiempo agrega una copia al final del archivo program.lint. Si el archivo program.lint no existe, se crea.
El siguiente ejemplo tiene otro uso: escalada de permisos :
Para permitir la escalada de permisos:
cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"
Este ejemplo muestra que se usa tee para evitar una limitación inherente en el sudo
comando. sudo
no puede canalizar la salida estándar a un archivo. Al descargar su flujo de salida estándar /dev/null
, también suprimimos la salida reflejada en la consola. El comando anterior brinda al usuario root acceso actual a un servidor a través de ssh, al instalar la clave pública del usuario en la lista de autorizaciones de la clave del servidor.
¿O tal vez desea tomar la salida de un comando, escribirlo en algún lugar y también usarlo como entrada para otro comando?
También puede usar el comando tee para almacenar la salida de un comando a un archivo y redirigir la misma salida como entrada a otro comando.
El siguiente comando tomará una copia de seguridad de las entradas de crontab y pasará las entradas de crontab como una entrada al comando sed que hará la sustitución. Después de la sustitución, se agregará como un nuevo trabajo cron.
$ crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab –
(crédito a los ejemplos de uso del comando Tee )
Tee
trabaja con la filosofía de Unix:
Escriba programas que hagan una cosa y que lo hagan bien. Escribir programas para trabajar juntos. Escriba programas para manejar secuencias de texto, porque esa es una interfaz universal.
(Crédito a lo básico de la filosofía de Unix )
tee
se adapta a todos estos:
- hace una cosa: crea una copia extra de entrada
- funciona con otros programas porque es el pegamento (o una pieza de plomería 'T' si lo prefiere) lo que permite que otros programas trabajen juntos como en los ejemplos anteriores
- lo hace manipulando una secuencia de texto dada en la entrada estándar