Aprende leyendo en orden

Redirección — > >> < 2>

Este artículo forma parte del Curso de Linux, con el que dominarás desde cero habilidades prácticas de Linux, desde los comandos básicos hasta los scripts de shell.
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   # archivo de ejemplo 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?