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

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

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 le permite redirigir la entrada y/o salida de los comandos de y/o los archivos, o unir múltiples comandos usando tuberías para formar lo que se conoce como un "tubería de comandos".

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

  1. el resultado del comando: datos El programa está diseñado para producir y
  2. el estado del programa y los mensajes de error que informan a un usuario de 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 se identifican por el shell utilizando números de descriptor de archivo:

  1. stdin o 0 - Está conectado al teclado, la mayoría de los programas leen la entrada de este archivo.
  2. stdout 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 alterar la fuente de entrada de un comando, así como donde se envían sus mensajes de salida y error a. Y esto es posible por el "<” y ">" operadores de redirección.

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

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

$ top -bn 5> top.registro 

Donde las banderas:

  1. -b - habilitan arriba Para ejecutarse en modo por lotes, para que pueda redirigir su salida a un archivo u otro comando.
  2. -norte - Especifica el número de iteraciones antes de que termine el comando.

Puedes ver el contenido de arriba.registro Archivo usando el comando CAT de la siguiente manera:

$ Cat Top.registro 

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

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

$ top -bn 5 >> top.registro 

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

$ top -bn 5 1> top.registro 

Cómo redirigir el error estándar a archivar en Linux

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

Por ejemplo, el comando LS a continuación producirá un error cuando sea ejecutado por un usuario del sistema normal sin privilegios raíz:

$ 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.registro 
Redirigir el error estándar a los archivos

Para agregar el error estándar, use el comando a continuación:

$ ls -l / root / 2 >> LS -error.registro 

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

También es posible capturar toda la salida de un comando (salida estándar y error estándar) en un solo archivo. Esto se puede hacer de dos maneras 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> y 1 

El comando anterior significa que el shell primero enviará la salida del comando ls al archivo LS-error.registro (usando > ls-error.registro), y luego escribe todos los mensajes de error al descriptor del archivo 2 (salida estándar) que se ha redirigido al archivo LS-error.registro (usando 2> y 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 método y directo es:

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

También puede agregar salida estándar y error estándar a un solo archivo como así:

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

Cómo redirigir la entrada estándar a la presentación

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 se adjunta al teclado.

Para redirigir la entrada estándar de un archivo que no sea el teclado, use el "<” operador como se muestra:

$ gato   Redirigir la entrada estándar al archivo 

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

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

$ sort sort.producción 

Cómo usar la redirección de E/S usando tuberías

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 comando a continuación enumerará los cinco archivos principales recientemente modificados.

$ ls -lt | cabeza -n 5 

Aquí, las opciones:

  1. -l - habilita un largo formato de listado
  2. -T - Primero se muestran el tiempo de modificación con los archivos más recientes
  3. -norte - Especifica el número de líneas de encabezado para mostrar

Comandos importantes para construir tuberías

Aquí, revisaremos brevemente dos comandos importantes para construir tuberías de comandos y ellos son:

Xargs que se utiliza para construir y ejecutar líneas de comando a partir de la entrada estándar. A continuación se muestra un ejemplo de una tubería que usa Xargs, Este comando se usa 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.mierda 
Copiar archivos a múltiples directorios

Y las opciones:

  1. -n 1 - instruye a XARGS a usar como máximo un argumento por línea de comando y enviar al comando CP
  2. CP - copia el archivo
  3. -V - Muestra el progreso del comando de copia.

Para obtener más opciones de uso e información, lea el Xargs Página del hombre:

$ hombre xargs 

A tee El comando lee desde la entrada estándar y escribe en salida y archivos estándar. Podemos demostrar como tee Funciona de la siguiente manera:

$ echo "Prueba de cómo funciona el comando tee" | archivo de tee1 
Ejemplo de comando de tee

Los filtros de archivo o texto se usan comúnmente con tuberías para operaciones efectivas de archivos de Linux, para procesar información de maneras potentes, como la salida de comandos de reestructuración (esto puede ser vital para la generación de informes útiles de Linux), modificando el texto en archivos más varios otros sistemas de Linux Administración tareas.

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

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.