RHEL 7 – Notas de RHCSA (hojas de referencia)
Tres descriptores de archivo estándar:
1. stdin 0 - Standard input to the program. 2. stdout 1 - Standard output from the program. 3. stderr 2 - Standard error output from the program.
Propósito | Comando |
---|---|
redirigir la salida estándar al nombre de archivo | > nombre de archivo o 1> nombre de archivo |
añadir salida estándar al nombre de archivo | >> nombre de archivo |
añadir std out y std err al nombre de archivo | >> nombre de archivo 2>&1 o 1>> nombre de archivo 2>&1 |
tomar entrada del nombre de archivo | |
redirigir error estándar al nombre de archivo | 2> nombre de archivo |
redirigir salida estándar y error estándar al nombre de archivo | 1> nombre de archivo 2>&1 o> nombre de archivo 2>&1 |
Algunos ejemplos del uso de la redirección de E/S
# cat goodfile badfile 1> output 2> errors
Este comando redirige la salida normal (contenido del archivo bueno) a la salida del archivo y envía cualquier error (por ejemplo, acerca de que el archivo malo no existe) a los errores del archivo.
# mail user_id < textfile 2> errors
Este comando redirige la entrada para que el comando de correo provenga del archivo de texto del archivo y cualquier error se redirige a los errores del archivo.
# find / -name xyz -print 1> abc 2>&1
Este comando redirige la salida normal al archivo abc. La construcción "2> &1" dice "enviar la salida de error al mismo lugar que dirigimos la salida normal".
Tenga en cuenta que el orden es importante; comando 2>&1 1>archivo no hace lo mismo que comando 1>archivo 2>&1. Esto se debe a que la construcción 2>&1 significa redirigir el error estándar al lugar donde va actualmente la salida estándar. El comando de construcción 2>&1 1>archivo primero redirigirá el error estándar a donde va la salida estándar (probablemente la terminal, que es donde va el error estándar de todos modos) y luego redirigirá la salida estándar al archivo. Probablemente esto no sea lo que se pretendía.# ( grep Bob filex > out ) 2> err
– cualquier salida del comando grep se envía al archivo out y cualquier error se envía al archivo err.
# encontrar. -nombre xyz -print 2>/dev/nullEsto ejecuta el comando de búsqueda, pero envía cualquier resultado de error (debido a directorios inaccesibles, por ejemplo), a /dev/null. Úselo con cuidado, a menos que la salida de error realmente no sea de interés.