Intro
A veces vemos comandos como este en el shell:
- $ ls foo > /dev/null 2>&1
Puede ser difícil entender lo que hace esto por primera vez, así que esta nota lo explicará brevemente.
Redirección de E/S
Suponga que ahora tiene un archivo de texto simple:
Ahora redirige el contenido de este archivo a otra ubicación:
En la acción de redirección anterior, no vemos ninguna salida mostrada en el terminal, porque el comando > redirige el contenido de test.txt aoutput.txt, que es una salida estándar (stdout).
A diferencia de la salida estándar, existe el error estándar (stdr), por ejemplo
Se ha producido un error durante el proceso de redireccionamiento porque no hay ningún archivo con el nombre no_such_file.txt en el directorio actual. En este caso, aunque se utilice el comando >, no es posible introducir el contenido en output.txt, porque no hay stdout, sino un mensaje de error de stderror.
Descriptor de archivo
El descriptor de archivo puede pensarse como un número entero positivo para un archivo abierto. Si tienes 100 archivos abiertos, básicamente tienes 100 descriptores de archivo correspondientes.
En los sistemas tipo Unix/Unix, también hay descriptores de archivo dedicados a stdout y stderr, que, para ser claros, tienen destinos dedicados para la salida de estospara estos destinos de salida:
- 1: para stdout
- 2: para stderr
Poniendo todo junto
De acuerdo con el concepto anterior, si quieres escribir el contenido de un archivo conocido en otro archivo, puedes hacerlo