GNU/Linux >> Tutoriales Linux >  >> Linux

Redirección de entrada/salida en Linux/Unix

¿Qué es la redirección?

La redirección es una característica de Linux que, al ejecutar un comando, puede cambiar los dispositivos de entrada/salida estándar. El flujo de trabajo básico de cualquier comando de Linux es que toma una entrada y da una salida.

Tipos de redirección

1. Sobrescribir

  • “>” El dispositivo de entrada estándar (stdin) es el teclado.
  • “<” El dispositivo de salida estándar (stdout) es la pantalla.

2. Anexos

  • “>>” salida estándar
  • “<<” entrada estándar

3. Fusionar

  • “p> &q” Fusiona la salida del flujo p con el flujo q
  • “p <&q” Fusiona la entrada del flujo p con el flujo q
Redireccionamiento de salida

El ‘> El símbolo ‘ se utiliza para la redirección de salida (STDOUT).

Ejemplo:

ls -al > listings

Aquí, la salida del comando ls -al se redirige al archivo "listados" en lugar de a su pantalla.

Nota :“Utilice el nombre de archivo correcto al redirigir la salida del comando a un archivo. Si existe un archivo con el mismo nombre, el comando redirigido eliminará el contenido de ese archivo y luego se sobrescribirá”.

— Si no desea que se sobrescriba un archivo pero desea agregar más contenido a un archivo existente, debe usar ‘>> ‘ operador.

— ¡Puede redirigir la salida estándar, no solo a archivos, sino también a dispositivos!

cat music.mp3 > /dev/audio

El comando cat lee el archivo music.mp3 y envía la salida a /dev/audio, que es el dispositivo de audio. Pero si las configuraciones de sonido en tu PC son correctas, este comando reproducirá el archivo music.mp3

Redirección de entrada

El ‘< El símbolo ‘ se utiliza para la redirección de entrada (STDIN)

Esto adjuntaría el archivo con el correo electrónico y se enviaría al destinatario.

"Noticias de hoy" es el asunto del correo electrónico, "[email protected]" es la dirección de correo electrónico y "NewsFlash" es el archivo adjunto.

Los ejemplos anteriores eran simples. Veamos algunas técnicas avanzadas de redirección que utilizan descriptores de archivos.

Descriptores de archivos (FD)

En Linux/Unix, todo es un archivo. Los archivos normales, los directorios e incluso los dispositivos son archivos. Cada Archivo tiene un número asociado llamado Descriptor de Archivo (FD).

Su pantalla también tiene un Descriptor de archivo. Cuando se ejecuta un programa, la salida se envía al Descriptor de archivo de la pantalla y verá la salida del programa en su monitor. Si la salida se envía al Descriptor de archivo de la impresora, la salida del programa se habría impreso.

Redireccionamiento de errores

Cada vez que ejecuta un programa/comando en la terminal, siempre hay 3 archivos abiertos, a saber, entrada estándar, salida estándar, error estándar.

Estos archivos siempre están presentes cada vez que se ejecuta un programa. Como se explicó antes, un descriptor de archivo está asociado con cada uno de estos archivos.

De forma predeterminada, el flujo de errores se muestra en la pantalla. La redirección de errores está enrutando los errores a un archivo que no sea la pantalla.

¿Por qué redirección de errores?

La redirección de errores es una de las características más populares de Unix/Linux.

Los usuarios frecuentes de UNIX considerarán que muchos comandos generan una gran cantidad de errores.

  • Por ejemplo, al buscar archivos, normalmente se obtienen errores de permiso denegado. Estos errores generalmente no ayudan a la persona que busca un archivo en particular.
  • Mientras ejecuta scripts de shell, a menudo NO desea que los mensajes de error saturen la salida normal del programa.

La solución es redirigir los mensajes de error a un archivo.

Ejemplo 1

 myprogram 2>errorsfile

Arriba estamos ejecutando un programa llamado myprogram.

El descriptor de archivo para el error estándar es 2.

Usando "2>" redirigimos la salida de error a un archivo llamado "archivo de error"

Por lo tanto, la salida del programa no se llena de errores.

Ejemplo 2

Aquí hay otro ejemplo que usa la declaración de búsqueda –

find . -name 'my*' 2>error.log

Usando el "buscar ”, estamos buscando el comando “. ” directorio actual para un archivo con “nombre ” comenzando con “mi

Ejemplo 3

Así que veamos un ejemplo más complejo,

Con frecuencia, los administradores del servidor enumeran los directorios y almacenan tanto los errores como los resultados estándar en un archivo, que se puede procesar más tarde. Aquí está el comando.

ls Documents ABC> dirlist 2>&1

Aquí,

  • que escribe la salida de un archivo en la entrada de otro archivo. 2>&1 significa que STDERR redirige al destino de STDOUT (que es la lista de archivos)
  • Estamos redirigiendo la salida de error a la salida estándar que, a su vez, se está redirigiendo a la lista de directorios de archivos. Por lo tanto, tanto la salida se escribe en el archivo dirlist

Resumen

  • Cada archivo en Linux tiene un descriptor de archivo correspondiente asociado
  • El teclado es el dispositivo de entrada estándar, mientras que la pantalla es el dispositivo de salida estándar
  • “>” es el operador de redirección de salida. “>>” agrega la salida a un archivo existente
  • “<” es el operador de redirección de entrada
  • “>&” redirige la salida de un archivo a otro.
  • Puede redirigir el error usando su Descriptor de archivo 2 correspondiente.

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

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

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

  4. ¿Cómo eliminar setgid (linux/unix)?

  5. Redirigir la salida de un bloque de funciones a un archivo en Linux

Explicado:entrada, salida y redirección de errores en Linux

Sustitución de procesos:una forma poco común pero avanzada de redirección de entrada/salida en Linux

Shell Scripting Parte 4:entrada, salida y redirección

Comando AWK en Linux/Unix

Linux frente a Unix

Linux canaliza el archivo de audio a la entrada del micrófono

    Archivo Descriptor de archivo
    Entrada estándar STDIN 0
    Salida estándar STDOUT 1
    Error estándar STDERR 2