No entiendo muy bien cómo la computadora lee este comando.
cat file1 file2 1> file.txt 2>&1
Si entiendo, 2>&1
simplemente redirija el error estándar a la salida estándar.
Por esa lógica, el comando me dice lo siguiente:
-
concatenar archivos
file1
yfile2
. -
enviar
stdout
de esta operación afile.txt
. -
enviar
stderr
astdout
. -
terminar?
No estoy seguro de lo que está haciendo la computadora. Según mi lógica, el comando debería ser
cat file1 file2 2>&1 > file.txt
pero esto no es correcto.
Respuesta aceptada:
Me resulta más fácil pensar en usar asignaciones.
>
es como=
&
es como$
Empiezas con
1 = /dev/tty
2 = /dev/tty
luego su primer ejemplo, 1> file.txt 2>&1
, hace
1 = file.txt
2 = $1 # and currently $1 = file.txt
dejándote con
1 = file.txt
2 = file.txt
Si lo hiciste al revés, nuevamente comienzas con
1 = /dev/tty
2 = /dev/tty
luego 2>&1 > file.txt
hace
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
entonces el resultado final es
1 = file.txt
2 = /dev/tty
y solo has redirigido stdout
, no stderr
.