BashRedireccion


Sintaxis

  • comando </ ruta / a / archivo # Redirigir la entrada estándar al archivo
  • comando> / ruta / a / archivo # Redirecciona la salida estándar a flie
  • comando file_descriptor> / ruta / a / archivo # Redirecciona la salida de file_descriptor a archivo
  • comando> & file_descriptor # Redirecciona la salida a file_descriptor
  • comando file_descriptor> & another_file_descriptor # Redirigir file_descriptor a another_file_descriptor
  • comando <& file_descriptor # Redirigir file_descriptor a la entrada estándar
  • comando &> / ruta / a / archivo # Redirigir la salida estándar y el error estándar al archivo

Parámetros

Parámetro Detalles
descriptor de archivo interno Un entero.
dirección Uno de > , < o <>
descriptor de archivo externo o ruta & seguido de un entero para el descriptor de archivo o una ruta.

Observaciones

Los programas de la consola UNIX tienen un archivo de entrada y dos archivos de salida (las secuencias de entrada y salida, así como los dispositivos, son tratados como archivos por el sistema operativo). Estos son típicamente el teclado y la pantalla, respectivamente, pero cualquiera o todos pueden redirigirse para venir de, o ir a, un archivo u otro programa.

STDIN es una entrada estándar, y es así como el programa recibe una entrada interactiva. STDIN se le suele asignar el descriptor de archivo 0.

STDOUT es una salida estándar. Todo lo que se emita en STDOUT se considera el "resultado" del programa. STDOUT se suele asignar el descriptor de archivo 1.

STDERR es donde se muestran los mensajes de error. Normalmente, cuando se ejecuta un programa desde la consola, STDERR muestra en la pantalla y no se puede distinguir de STDOUT . STDERR se suele asignar el descriptor de archivo 2.

El orden de redireccionamiento es importante.

command > file 2>&1

Redirige ambos ( STDOUT y STDERR ) al archivo.

command 2>&1 > file

Los redireccionamientos que solamente STDOUT , debido a que el descriptor de archivo 2 se redirige al archivo apuntado por el descriptor de archivo 1 (que no es el archivo file sin embargo, cuando se evalúa la declaración).

Cada comando en una tubería tiene su propio STDERR (y STDOUT ) porque cada uno es un proceso nuevo. Esto puede crear resultados sorprendentes si espera que una redirección afecte a toda la tubería. Por ejemplo, este comando (envuelto para legibilidad):

$ python -c 'import sys;print >> sys.stderr, "Python error!"' \
| cut -f1 2>> error.log

imprimirá "error de Python!" a la consola en lugar del archivo de registro. En su lugar, adjunte el error al comando que desea capturar:

$ python -c 'import sys;print >> sys.stderr, "Python error!"' 2>> error.log \
| cut -f1 

Redireccion Ejemplos relacionados