Redirección de la entrada/salida

Redirección de la salida

La manera que hemos visto de utilizar el comando cat no parece demasiado útil. Pero, ¿y si en lugar de escribir lo que introducimos por teclado en la pantalla lo pudiéramos escribir en un fichero? Para ello podemos utilizar los mecanismos de redirección de la salida que proporciona Linux, que permiten cambiar el dispositivo de salida estándar.

Para redirigir la salida estándar utilizaremos el símbolo ‘>’ seguido de un nombre de fichero. Como ejemplo, podemos introducir el comando cat como sigue y los textos que se muestran:

cat > telefonos.txt
Luis Terreros 5553251
Mateo Guerricer 5559082
Gema Pellon 5558727
Luis Terico 5550255
Carlos Calzado 5550178

Tras finalizar la ejecución con CTRL-D, podemos introducir el comando ls para comprobar que, efectivamente, se ha creado un fichero llamado telefonos.txt. La redirección le ha indicado al comando cat que escriba la salida en este fichero en lugar de hacerlo en pantalla. Como resultado, el fichero contendrá el listado que hemos introducido. Para comprobarlo, podemos utilizar el mismo comando cat de la siguiente forma:

cat telefonos.txt
 Luis Terreros 5553251
 Mateo Guerricer 5559082
 Gemma Pellon 5558727
 Luis Terico 5550255
 Carlos Calzado 5550178

Como vemos el comando cat puede utilizarse de manera que tome como argumento un fichero a visualizar en lugar de la entrada estándar.

El método de redirección que hemos visto siempre crea un fichero nuevo para recoger la salida y, en caso de que ya exista uno con el mismo nombre, lo borra primero. Si necesitamos redirigir la salida hacia un fichero ya existente sin borrar su contenido, podemos usar el símbolo ‘>>’ para indicar que la redirección debe hacerse añadiendo el  nuevo resultado detrás del contenido existente.

Redirección de la entrada

De forma similar a como se ha visto para la salida estándar, es posible redireccionar también la entrada utilizando el símbolo ‘<‘.  Por ejemplo, podríamos proporcionarle al comando cat el contenido del fichero telefonos.txt como entrada de la siguiente manera:

cat < telefonos.txt

Aunque hemos visto que no es necesario ya que este comando puede aceptar como argumento un nombre de fichero, hay otros comandos que sólo están diseñados para leer y escribir en los dispositivos estándar. Un ejemplo es el comando tr que permite transformar cadenas de texto de diversas formas. Si queremos cambiar todas los caracteres del texto de telefonos.txt de minúsculas a mayúsculas podemos hacer lo siguiente:

tr [:lower:] [:upper:] < telefonos.txt
 LUIS TERREROS 5553251
 MATEO GUERRICER 5559082
 GEMA PELLON 5558727
 LUIS TERICO 5550255
 CARLOS CALZADO 5550178

El texto entre comillas es un argumento del comando tr que simplemente le indica que convierta las minúsculas en mayúsculas.

Finalmente, podemos ilustrar la utilización combinada de ambas formas de redirección completando el ejemplo anterior para que deje su salida en un fichero llamado telef-may.txt:

tr [:lower:] [:upper:] < telefonos.txt > telef-may.txt