Uno de los temas más importantes e interesantes bajo la administración de Linux es la redirección de E/S. Esta característica de la línea de comandos te permite redirigir la entrada y/o salida de comandos desde y/o hacia archivos, o unir múltiples comandos utilizando tuberías para formar lo que se conoce como un “conducto de comandos” (command pipeline).
Todos los comandos que ejecutamos fundamentalmente producen dos tipos de salida:
- el resultado del comando, es decir, los datos que el programa está diseñado para producir, y
- el estado del programa y los mensajes de error que informan al usuario sobre los detalles de la ejecución del programa.
En Linux y otros sistemas similares a Unix, hay tres archivos predeterminados nombrados a continuación que también son identificados por la shell utilizando números de descriptores de archivos:
- stdin o 0 – está conectado al teclado, la mayoría de los programas leen la entrada de este archivo.
- stdout o 1 – está conectado a la pantalla, y todos los programas envían sus resultados a este archivo y
- stderr o 2 – los programas envían mensajes de estado/error a este archivo que también está conectado a la pantalla.
Por lo tanto, la redirección de E/S te permite cambiar la fuente de entrada de un comando así como hacia dónde se envían su salida y mensajes de error. Y esto es posible gracias a los operadores de redirección “<”
y “>”
.
Cómo Redirigir la Salida Estándar a un Archivo en Linux
Puedes redirigir la salida estándar como en el ejemplo siguiente, aquí, queremos almacenar la salida del comando top para inspección posterior:
$ top -bn 5 >top.log
Donde las banderas:
-b
– permite que top se ejecute en modo batch, para que puedas redirigir su salida a un archivo u otro comando.-n
– especifica el número de iteraciones antes de que el comando termine.
Puedes ver el contenido del archivo top.log
usando el comando cat de la siguiente manera:
$ cat top.log
Para añadir la salida de un comando, utiliza el operador “>>”
.
Por ejemplo, para añadir la salida del comando top anterior en el archivo top.log especialmente dentro de un script (o en la línea de comandos), ingresa la línea siguiente:
$ top -bn 5 >>top.log
Nota: Usando el número de descriptor de archivo, el comando de redirección de salida anterior es similar a:
$ top -bn 5 1>top.log
Cómo Redirigir el Error Estándar a un Archivo en Linux
Para redirigir el error estándar de un comando, necesitas especificar explícitamente el número de descriptor de archivo, 2
para que la shell entienda lo que estás intent
Por ejemplo, el comando ls de abajo producirá un error al ejecutarse por un usuario normal del sistema sin privilegios de root:
$ ls -l /root/
Puedes redirigir el error estándar a un archivo de la siguiente manera:
$ ls -l /root/ 2>ls-error.log $ cat ls-error.log

Para añadir el error estándar, utiliza el siguiente comando:
$ ls -l /root/ 2>>ls-error.log
Cómo Redirigir la Salida/Error Estándar a un Solo Archivo
También es posible capturar toda la salida de un comando (tanto la salida estándar como el error estándar) en un solo archivo. Esto se puede hacer de dos maneras posibles especificando los números de descriptores de archivo:
1. El primero es un método relativamente antiguo que funciona de la siguiente manera:
$ ls -l /root/ >ls-error.log 2>&1
El comando de arriba significa que la shell primero enviará la salida del comando ls al archivo ls-error.log (usando >ls-error.log
), y luego escribirá todos los mensajes de error en el descriptor de archivo 2 (salida estándar) que ha sido redirigido al archivo ls-error.log (usando 2>&1
). Implicando que el error estándar también se envía al mismo archivo que la salida estándar.
2. El segundo método directo es:
$ ls -l /root/ &>ls-error.log
También puedes añadir la salida estándar y el error estándar a un solo archivo de la siguiente manera:
$ ls -l /root/ &>>ls-error.log
Cómo Redirigir la Entrada Estándar a un Archivo
La mayoría, si no todos los comandos, obtienen su entrada desde la entrada estándar, y por defecto la entrada estándar está conectada al
Para redirigir la entrada estándar desde un archivo que no sea el teclado, use el operador "<"
como se muestra a continuación:
$ cat <domains.list

Cómo Redirigir la Entrada/Salida Estándar a un Archivo
Puede realizar la redirección de la entrada estándar y la salida estándar al mismo tiempo utilizando el comando sort de la siguiente manera:
$ sort <domains.list >sort.output
Cómo Utilizar la Redirección de E/S Utilizando Tuberías
Para redirigir la salida de un comando como entrada de otro, puede utilizar tuberías, que es un medio poderoso para construir líneas de comandos útiles para operaciones complejas.
Por ejemplo, el comando a continuación listará los cinco archivos modificados recientemente.
$ ls -lt | head -n 5
Aquí, las opciones:
-l
– activa el formato de lista larga-t
– ordena por hora de modificación con los archivos más nuevos se muestran primero-n
– especifica el número de líneas de encabezado a mostrar
Comandos Importantes para Construir Tuberías
Aquí, revisaremos brevemente dos comandos importantes para construir tuberías de comandos y son
xargs que se utiliza para construir y ejecutar líneas de comandos desde la entrada estándar. A continuación se muestra un ejemplo de un pipeline que utiliza xargs, este comando se utiliza para copiar un archivo en múltiples directorios en Linux:
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

Y las opciones:
-n 1
– indica a xargs que utilice como máximo un argumento por línea de comando y lo envíe al comando cpcp
– copia el archivo-v
– muestra el progreso del comando de copia.
Para más opciones de uso e información, lee la página del manual de xargs
$ man xargs
A tee command reads from standard input and writes to standard output and files. We can demonstrate how tee works as follows:
$ echo "Testing how tee command works" | tee file1

Los filtros de archivos o texto se utilizan comúnmente con tuberías para operaciones eficaces de archivos en Linux, para procesar información de formas poderosas como reestructurar la salida de comandos (esto puede ser vital para la generación de informes útiles en Linux), modificar texto en archivos y varias otras tareas de administración del sistema Linux.
Para obtener más información sobre los filtros y tuberías de Linux, lee este artículo Encuentra las 10 direcciones IP principales que acceden al servidor Apache, que muestra un ejemplo útil de cómo utilizar filtros y tuberías.
En este artículo, explicamos los fundamentos de la redirección de E/S en Linux. Recuerda compartir tus pensamientos a través de la sección de comentarios a continuación
Source:
https://www.tecmint.com/linux-io-input-output-redirection-operators/