GNU/Linux >> Tutoriales Linux >  >> Linux

¿Orden de redirecciones?

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:

  1. concatenar archivos file1 y file2 .

  2. enviar stdout de esta operación a file.txt .

  3. enviar stderr a stdout .

  4. 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 .


Linux
  1. Filtrando tcpdump:creando orden a partir del caos

  2. Linux – ¿Todo es un archivo?

  3. ¿Ordenar parte de un archivo?

  4. C fopen vs abierto

  5. ¿Escribir en un archivo .txt?

Comprender los permisos de archivos de Linux

Bash:escribir en archivo

Comando de cola de Linux

Comando táctil de Linux

Editor VIM

¿Qué es un archivo .sh?