Aprende leyendo en orden

Redirección — > >> < 2>

Sobrescribe un archivo con >, añade con >>, pasa la entrada estándar con <, y envía solo el error a un archivo separado con 2> — todo práctico en una terminal del navegador.

Enviar la salida a un archivo — > y >>

Los resultados de un comando se imprimen normalmente en pantalla, pero la redirección cambia ese destino a un archivo.

Escribe comando > archivo y lo que habría ido a pantalla se escribe en el archivo.

> vacía el archivo antes de escribir (sobrescritura).

Cuando quieres conservar lo que ya hay y añadir al final, usa >> (adición).

Confundirlos puede borrar datos que necesitas, así que conviene tener clara la diferencia.

> sobrescribe, >> añade
echo A > out.txtout.txt contiene: Aecho B > out.txtout.txt: B (A se borra)echo C >> out.txtout.txt: B / C
> vacía el contenido y sobrescribe; >> añade al final.
SímboloSignificado
>Escribe la salida estándar en un archivo (lo vacía primero, sobrescritura)
>>Añade la salida estándar al final de un archivo
<Pasa el contenido de un archivo como entrada estándar
1>Escribe solo la salida estándar en un archivo (igual que >)
2>Escribe solo el error estándar en un archivo separado
echo 'line 1' > out.txt    # sobrescritura (crear nuevo)
echo 'line 2' >> out.txt   # añadir al final
cat out.txt                # line 1 y line 2
echo 'reset' > out.txt     # sobrescritura (el contenido anterior desaparece)
cat out.txt                # solo reset

① Escribe la salida de echo 'first' en note.txt con >.

② Añade la línea second al mismo note.txt con >> y confirma que hay 2 líneas con cat note.txt.

③ Por último, escribe reset en note.txt con > y confirma con cat note.txt que el contenido cambia a solo reset. (Ejecútalo correctamente y aparecerá una explicación.)

Linux console
0 / 4 completado(s)
Loading Linux Terminal...

Entrada y enrutado de errores — < y 2>

< es lo contrario de la salida: pasa el contenido de un archivo como entrada estándar del comando.

Escribe comando < archivo y, en lugar de teclear en el teclado, el contenido del archivo se envía al comando.

A diferencia de wc -l nums.txt, con < nums.txt el nombre del archivo no aparece en la salida — solo se pasa el contenido.

La salida de un comando tiene dos tipos: los resultados normales (salida estándar) y los mensajes de error (error estándar).

La salida estándar tiene el número 1 y el error estándar el número 2; enrutas la salida estándar con 1> (igual que >) y el error estándar con 2>.

Con 2> puedes enviar solo los errores a un archivo separado, lo que resulta útil cuando quieres registrar resultados y errores por separado.

< es entrada, 1> y 2> enrutan la salida
wc -l < data.txtpasa data.txtcomo entradals f 1> out.txtsalida estándar (1)solo → out.txtcat miss 2> err.txterror estándar (2)solo → err.txt
< pasa un archivo como entrada; 1> envía solo la salida estándar y 2> solo el error estándar a un archivo separado.
printf 'x\ny\nz\n' > nums.txt   # material de 3 líneas
wc -l < nums.txt                # pasar nums.txt como entrada → 3
cat missing.txt 2> err.txt      # enrutar el error a err.txt
cat err.txt                     # comprobar el mensaje de error

① Crea un archivo de 3 líneas con printf 'x\ny\nz\n' > nums.txt.

② Pasa nums.txt como entrada estándar a wc con su opción de recuento de líneas usando < y confirma que se muestra el número de líneas.

③ Intenta abrir un archivo inexistente con cat y enruta ese mensaje de error a err.txt con 2>.

④ Confirma con cat err.txt que el mensaje de error se guardó en el archivo.

Linux console
0 / 4 completado(s)
Loading Linux Terminal...

> vacía el archivo en el acto

> vacía el contenido del archivo antes de ejecutar el comando.

Cuando quieras añadir líneas al contenido existente, usa siempre >> (adición).

Del mismo modo, 2> sobrescribe el archivo de destino con la salida de error.

Combinarlo todo — crear un log y contarlo

En el trabajo real a menudo empezarás un registro con >, seguirás añadiendo líneas con >> y al final comprobarás el recuento con wc.

Combina los símbolos vistos hasta ahora para practicar la creación y el conteo de un log sencillo.

① Empieza el registro escribiendo una línea hit en access.log con la salida de echo mediante >.

② Añade hit dos veces más al mismo access.log con >> y confirma que hay 3 líneas con cat access.log.

③ Pasa access.log a wc con su opción de recuento de líneas mediante < y muestra cuántos registros se han acumulado.

Linux console
0 / 4 completado(s)
Loading Linux Terminal...

Combinar varias redirecciones — > 2> 2>&1

Puedes especificar varias redirecciones en un solo comando a la vez.

Para separar la salida estándar y el error en archivos distintos, ponlos uno tras otro como > destino 2> destino-error.

Para mezclar ambos en un solo archivo, usa 2>&1 para enviar el error estándar (2) al mismo destino que la salida estándar (1).

2>&1 va después de haber fijado el destino con >.

FormaSignificado
> out 2> errEnruta la salida estándar a out y los errores a err por separado
2>&1Envía el error estándar (2) al mismo destino que la salida estándar (1)
> all 2>&1Escribe tanto la salida estándar como los errores juntos en all
touch real.txt                                  # preparar un archivo real
ls real.txt missing.txt > out.txt 2> err.txt    # salida y errores por separado
cat out.txt                                     # real.txt (salida estándar)
cat err.txt                                     # error de missing.txt
ls real.txt missing.txt > all.txt 2>&1          # ambos en un solo archivo
cat all.txt                                     # salida y errores juntos

① Prepara un archivo real con touch real.txt.

② Ejecuta ls real.txt missing.txt > out.txt 2> err.txt para enrutar la salida estándar a out.txt y los errores a err.txt por separado.

③ Comprueba el contenido de cada uno con cat out.txt y cat err.txt.

④ Luego ejecuta ls real.txt missing.txt > all.txt 2>&1 y confirma con cat all.txt que la salida estándar y los errores se mezclan en el mismo archivo.

Linux console
0 / 6 completado(s)
Loading Linux Terminal...
QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué símbolo añade una nueva línea al final conservando el contenido del archivo existente?

Pregunta 2¿Qué hace < en un comando?

Pregunta 3¿Qué ocurre al ejecutar cat missing.txt 2> err.txt?