Planeta TTY

Bifurcación de Redireccionamiento: Uso del Comando tee

Posted in Procesos by Jorgito Capurro on 13 julio 2009

En determinadas ocasiones, es muy util y necesario que un comando se muestre por la salida estandard (STDIN) y a la ves, su resultado sea almacenado en un archivo, redirigiendo este mismo descriptor. Para lograr ambas cosas a la ves existe el comando tee, el cual, como indica su nombre, se encarga de bifurcar el redireccionamiento de la entrada estándar en dos partes a la ves. Veamos un ejemplo mas ilustrativo acerca de este comando:

imagen-tee

Podemos observar en esta imagen, como al ejecutar un comando del tipo ls -l y conectándolo mediante tee, la salida se dirige hacia la STDOUT y se redirige hacia un archivo, todo al mismo tiempo.

Veamos como es la utilización del comando tee en la practica.

Sintaxis

tee [Opciones] [Archivo(s)]

La forma mas usual de utilizar el comando tee, es conectandolo mediante un pipe. Consideremos el siguiente ejemplo a modo de analisis:

$ echo “Ejemplo de Comando tee” | tee output.txt
Ejemplo de Comando tee

Ahora bien, siguiendo la teoria, este comando efectivamente aparece en la pantalla, es decir, se ve reflejado en la consola lo que tiene echo como argumentos. También, tendría que haberse guardado en el archivo output.txt la salida de ese comando. Veamos si ha ocurrido:

$ ls -al
-rw-r–r– 1 exa44123 develop_ste 23 Jul 13 16:47 output.txt
$ more output.txt
Ejemplo de Comando tee

Si volvemos al grafico del principio del post, podemos comprobar el accionar del comando tee mas facilmente. Otro ejemplo de su uso, podria ser el que se muestra a continuación:

$ date
Mon Jul 13 16:51:33 ART 2009
$ date | tee fecha.txt
$ ls
fecha.txt
$ less fecha.txt
Mon Jul 13 16:51:33 ART 2009

También, podemos conectar los comandos a otros pipes anteriores, antes de ser redirigido por el comando tee, por ejemplo:

$ who | sort | tee listadousr| less

Aca listamos todos los usuarios conectados al sistema ordenados alfabeticamente. Luego, redirigimos la salida hacia la pantalla y hacia un archivo, mediante el comando tee. Por ultimo, paginamos la salida que se dirige hacia la terminal mendiante el uso de less.

Ahora bien, se nos podría plantear la siguiente pregunta ¿Que ocurre si quiero guardar en un fichero la salida estándar pero este fichero ya contiene datos? Sencillo. Para no borrar el contenido de un archivo, usamos la opción -a junto al comando tee. Por ejemplo, supongamos que el archivo dir.lst ya contiene registros. Utilizando el siguiente comando:

$ ls -a | tee -a dir.lst

Conseguiremos añadir mas registros al archivo, sin que los registros antiguos sean eliminados.

Por ultimo, podríamos querer que tanto la salida estándar (STDOUT) como el error estandard (STDERR) sean almacenados en el mismo archivo. Para ello, hacemos uso de 2>$1 junto al comando tee, de la siguiente manera:

$ progtest 2>$1 | tee

Esto es básicamente todos los usos que se le dan al comando tee. Para mas informacion, consulte las paginas del manual.

Espero que les halla sido de utilidad

Saludos

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: