Table of Contents
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 característica de la línea de comandos le permite redirigir la entrada y/o salida de comandos desde y/o hacia archivos, o unir varios comandos usando tuberías para formar lo que se conoce como “ canalización de comandos. . .
Todos los comandos que ejecutamos producen fundamentalmente dos tipos de salida:
- el resultado del comando: datos que el programa está diseñado para producir, y
- el estado del programa y los mensajes de error que informan al usuario de 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 se identifican por el shell usando números de descriptor de archivo:
- stdin o 0. está conectado al teclado, la mayoría de los programas leen la entrada de este archivo.
- stdout o 1. se adjunta 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 se adjunta t o la pantalla.
Por lo tanto, la redirección de E/S le permite alterar la fuente de entrada de un comando, así como a dónde se envían su salida y los 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
Puede redirigir la salida estándar como en el ejemplo siguiente, aquí, queremos almacenar la salida del comando superior para una inspección posterior:
$ top-bn 5> top.log freestar.config.enabled_slots.push (LocationName: “tecmint_incontent”, slotId: “tecmint_incontent” );
Donde las banderas:
- -b-permite que top. se ejecute en modo por lotes, para que pueda redirigir su salida a un archivo u otro comando.
- -n-especifica el número de iteraciones antes de que finalice el comando.
Puede ver el contenido del archivo top.log 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. 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 de descriptor de archivo, el comando de redireccionamiento de salida anterior es el mismo que:
$ 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, debe especificar explícitamente el número de descriptor de archivo, 2 para que el shell comprenda lo que está intentando hacer.
Por ejemplo, el comando ls a continuación 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 de la siguiente manera:
$ ls-l/root/2> ls-error.log $ cat ls-error.log
Redirigir el error estándar al archivo
Para agregar el error estándar, use el siguiente comando:
$ ls-l/root/2>> ls-error.log
Cómo redireccionar el estándar Salida/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. (usando> ls-error.log) y, a continuación, escribe todos los mensajes de error en el descriptor de archivo 2. (salida estándar) que se ha redirigido al archivo ls-error.log. (utilizando 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 método directo es:
$ ls-l/root/&> ls-error.log
También puede agregar la salida estándar y el error estándar a un solo archivo así:
$ 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 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 a continuación:
$ cat Redirigir entrada estándar a archivo
Cómo redirigir entrada/salida estándar a archivo
Puede realizar entrada, redirección de salida estándar al mismo tiempo usando el comando sort como se muestra a continuación:
$ sort
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 pi pes, 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 modificados más recientemente.
$ ls-lt | head-n 5
Aquí, las opciones:
- -l-habilita el formato de lista larga
- -t-ordenar por hora de modificación con los archivos más nuevos se muestran primero
- -n: especifica el número de líneas de encabezado que se mostrarán
Comandos importantes para construir tuberías
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 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.sh
Copiar archivos en varios directorios
Y las opciones:
- -n 1-indica a xargs que use como máximo un argumento por línea de comando y lo envíe al comando cp
- cp: copia el archivo
- -v: muestra el progreso del comando de copia.
Para obtener más opciones de uso e información, lea las xargs. página de manual:
$ man xargs
Un comando tee. lee la entrada estándar y escribe a archivos y salida estándar. Podemos demostrar cómo funciona tee. de la siguiente manera:
$ echo “Probando cómo funciona el comando tee” | tee file1
tee Ejemplo de comando
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 manera poderosa formas como reestructurar la salida de comandos (esto puede ser vital para la generación de informes útiles de Linux), modificar texto en archivos y otras tareas de administración del sistema Linux.
Para obtener más información sobre los filtros y tuberías de Linux, lea esto El artículo Find Top 10 IP Addresses Accediendo al servidor Apache, muestra un ejemplo útil del uso de filtros y tuberías.
En este artículo, w 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.