GNU/Linux >> Tutoriales Linux >  >> Linux

Aprenda los conceptos básicos de cómo funciona la redirección de E/S (entrada/salida) de Linux

Uno de los temas más importantes e interesantes de la administración de Linux es la redirección de E/S. Esta función de la línea de comandos le permite redirigir la entrada y/o la salida de comandos desde y/o hacia archivos, o unir varios comandos mediante canalizaciones para formar lo que se conoce como “canalización de comandos ”.

Todos los comandos que ejecutamos producen fundamentalmente dos tipos de salida:

  1. el resultado del comando:datos que el programa está diseñado para producir, y
  2. el estado del programa y los mensajes de error que informan al usuario sobre los detalles de ejecución del programa.

En Linux y otros sistemas similares a Unix, hay tres archivos predeterminados nombrados a continuación que también están identificados por el shell usando números de descriptor de archivo:

  1. entrada estándar o 0 – está conectado al teclado, la mayoría de los programas leen la entrada de este archivo.
  2. salida estándar o 1 – está adjunto a la pantalla, y todos los programas envían sus resultados a este archivo y
  3. stderr o 2 – los programas envían mensajes de estado/error a este archivo que también se adjunta a la pantalla.

Por lo tanto, la redirección de E/S le permite modificar la fuente de entrada de un comando, así como el lugar al que se envían los mensajes de error y de salida. Y esto es posible gracias al “<” y “>” operadores de redirección.

Cómo redirigir la salida estándar a un archivo en Linux

Puede redirigir la salida estándar como en el siguiente ejemplo, aquí, queremos almacenar la salida del comando superior para una inspección posterior:

$ top -bn 5 >top.log

Donde las banderas:

  1. -b – habilita arriba para ejecutar en modo por lotes, de modo que pueda redirigir su salida a un archivo u otro comando.
  2. -n – especifica el número de iteraciones antes de que finalice el comando.

Puede ver el contenido de top.log archivo usando el comando cat de la siguiente manera:

$ cat top.log

Para agregar la salida de un comando, use el “>>” operador.

Por ejemplo, para agregar la salida del comando superior arriba en top.log archivo especialmente dentro de un script (o en la línea de comando), ingrese la línea a continuación:

$ top -bn 5 >>top.log

Nota :Utilizando el número del descriptor de archivo, el comando de redirección de salida anterior es el mismo que:

$ top -bn 5 1>top.log

Cómo redirigir un error estándar a un archivo en Linux

Para redirigir el error estándar de un comando, debe especificar explícitamente el número del descriptor del archivo, 2 para que el shell entienda lo que está tratando de hacer.

Por ejemplo, el siguiente comando ls producirá un error cuando lo ejecute un usuario normal del sistema sin privilegios de root:

$ ls -l /root/

Puede redirigir el error estándar a un archivo como se muestra a continuación:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

Para agregar el error estándar, use el siguiente comando:

$ ls -l /root/ 2>>ls-error.log

Cómo redirigir la salida estándar/error a un 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 formas posibles especificando los números de descriptor 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 anterior significa que el shell primero enviará la salida del comando ls al archivo ls-error.log (utilizando >ls-error.log ), y luego escribe 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 ). Lo que implica que el error estándar también se envía al mismo archivo que la salida estándar.

2. El segundo y directo método es:

$ ls -l /root/ &>ls-error.log

También puede agregar la salida estándar y el error estándar a un solo archivo de esta manera:

$ ls -l /root/ &>>ls-error.log

Cómo redirigir la entrada estándar a un archivo

La mayoría de los comandos, si no todos, obtienen su entrada de la entrada estándar y, de forma predeterminada, la entrada estándar está conectada al teclado.

Para redirigir la entrada estándar desde un archivo que no sea el teclado, use el “<” operador de la siguiente manera:

$ cat <domains.list 

Cómo redirigir la entrada/salida estándar a un archivo

Puede realizar la redirección de entrada estándar y salida estándar al mismo tiempo usando el comando de clasificación como se muestra a continuación:

$ sort <domains.list >sort.output

Cómo utilizar la redirección de E/S mediante canalizaciones

Para redirigir la salida de un comando como entrada de otro, puede usar tuberías, este es un medio poderoso para construir líneas de comando útiles para operaciones complejas.

Por ejemplo, el siguiente comando enumerará los cinco archivos modificados más recientemente.

$ ls -lt | head -n 5 

Aquí, las opciones:

  1. -l – habilita el formato de listado largo
  2. -t – ordenar por tiempo de modificación con los archivos más nuevos que se muestran primero
  3. -n – especifica el número de líneas de encabezado para mostrar

Comandos importantes para construir canalizaciones

Aquí, revisaremos brevemente dos comandos importantes para construir canalizaciones de comandos y son:

xargs que se utiliza para construir y ejecutar líneas de comando desde la entrada estándar. A continuación se muestra un ejemplo de una canalización que utiliza xargs , este comando se usa para copiar un archivo en varios directorios en Linux:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

Y las opciones:

  1. -n 1 – indica a xargs que use como máximo un argumento por línea de comando y envíe al comando cp
  2. cp – copia el archivo
  3. -v – muestra el progreso del comando de copia.

Para obtener más información y opciones de uso, lea los xargs página man:

$ man xargs 

Una camiseta El comando lee desde la entrada estándar y escribe en archivos y salidas estándar. Podemos demostrar cómo tee funciona de la siguiente manera:

$ echo "Testing how tee command works" | tee file1 

Los filtros de archivos o texto se usan comúnmente con canalizaciones para operaciones efectivas de archivos de Linux, para procesar información de manera poderosa, como la reestructuración de la salida de comandos (esto puede ser vital para la generación de informes de Linux útiles), la modificación de texto en archivos y varios otros administración del sistema Linux tareas.

Para obtener más información sobre los filtros y conductos de Linux, lea este artículo Buscar las 10 principales direcciones IP que acceden al servidor Apache, muestra un ejemplo útil del uso de filtros y conductos.

En este artículo, explicamos los fundamentos de la redirección de E/S en Linux. Recuerde compartir sus pensamientos a través de la sección de comentarios a continuación.


Linux
  1. Cómo guardar la salida del comando en un archivo en Linux

  2. Trabajar con entrada, salida y redirección de errores en Linux

  3. Cómo usar el comando Tar en Linux

  4. Cómo capturar sesiones de terminal y salida con el comando de script de Linux

  5. ¿Cómo hacer que Iconv reemplace el archivo de entrada con la salida convertida?

Cómo usar el comando md5sum en Linux

Cómo usar el comando táctil en Linux

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

Explicación de la redirección de entrada y salida en Linux

Linux:¿Cómo usar un archivo como entrada y salida al mismo tiempo?