Redirección de entrada y salida en Bash: >, >> y < explicados con ejemplos

DUGLAS MORENODUGLAS MORENO 👁 17

Introducción

En la línea de comandos podés redirigir dónde va la salida de un programa o de dónde toma su entrada. Los operadores más usados son >, >> y <. En este tutorial vas a ver la diferencia entre sobrescribir y añadir, cómo funciona la redirección de entrada y algunos ejemplos prácticos que podés copiar y pegar en tu terminal.

Conceptos básicos

  • > : redirige la salida estándar (stdout) de un comando a un archivo. Si el archivo ya existe, lo sobrescribe (se pierde su contenido anterior).
  • >> : también redirige stdout, pero añade al final del archivo sin borrar lo que ya había.
  • < : redirige la entrada estándar (stdin) de un comando desde un archivo, como si lo estuvieras tecleando con el teclado.

Estos operadores trabajan con los descriptores de archivo 0 (stdin), 1 (stdout) y 2 (stderr). Por defecto, > y >> actúan sobre el descriptor 1; si querés actuar sobre el error estándar usás 2> o 2>>.

Sobrescribir vs. añadir

Supongamos que tenés un archivo registro.txt con estas líneas:

Primera línea
Segunda línea

Si ejecutás:

ls -l > registro.txt

El contenido de registro.txt pasa a ser únicamente la salida de ls -l. Las líneas originales se borran.

En cambio, con:

ls -l >> registro.txt

El archivo queda así:

Primera línea
Segunda línea
<salida de ls -l>

O sea, se añade al final.

Redirección de entrada

El operador < toma el contenido de un archivo y se lo entrega como entrada al comando. Por ejemplo:

cat < archivo.txt

Esto es equivalente a simplemente hacer cat archivo.txt, pero muestra cómo funciona la redirección: el shell abre archivo.txt, lo conecta al stdin de cat y luego cat lo lee y lo muestra por pantalla.

Otro uso típico es filtrar o procesar datos:

grep 'error' < log.txt

Aquí grep recibe el contenido de log.txt como entrada y muestra solo las líneas que contienen la palabra error.

Ejemplos prácticos

1. Crear una lista de archivos

ls -l > lista.txt

Salida esperada: el archivo lista.txt contendrá algo como:

total 24
-rw-r--r-- 1 usuario usuario  0 sep 10 12:00 archivo1.txt
-rw-r--r-- 1 usuario usuario  0 sep 10 12:00 archivo2.txt

Si volvés a correr el mismo comando, lista.txt se sobrescribe con la nueva salida.

2. Añadir la fecha a un registro

date >> registro.txt

Cada vez que lo ejecutás, la fecha y hora actual se agregan al final de registro.txt, preservando los ingresos anteriores.

3. Usar entrada redirigida con sort

sort < nombres.txt > nombres_ordenados.txt

Primero sort lee nombres.txt desde su stdin (porque se lo damos con <), ordena las líneas y escribe el resultado en stdout en nombres_stdout, que redirigimos a nombres_ordenados.txtcontxt. El archivo nombres_ordenados.txt` quedará con los nombres en orden alfabético.

4. Combinar redirección de entrada y salida con pipes

Aunque no es parte deba que veremos más adelante, vale la pena notar que podés combinar:

cat < entrada.txt | grep 'OK' > salida.txt

Aquí cat lee entrada.txt, su salida va al pipe (|), grep filtra las líneas con OK y finalmente se redirige a salida.txt.

Buenas prácticas y trucos

  • No confundir > con >> sin querer**: si no estás seguro de que el archivo exista o no quieras perder su contenido, usá >> o primero hacé una copia de seguridad (cp archivo.txt archivo.txt.bak`).
  • Silenciar errores: podés redirigir stderr a /dev/null para descartar mensajes de error: comando 2> /dev/null.
  • Anexar con marca de tiempo: para un log, podés hacer echo "[$(date)] Mensaje" >> registro.log.
  • Usar aquí-documentos cuando necesites múltiples líneas de entrada sin crear un archivo temporal: cat > archivo.txt <<'EOF' línea 1 línea 2 EOF
  • Comprobar qué descriptor redirigís: si querés capturar tanto stdout como stderr en el mismo archivo, usá comando > salida.txt 2>&1.

Conclusión

Los operadores >, >> y < son herramientas fundamentales para controlar el flujo de datos en la línea de comandos. Entender la diferencia entre sobrescribir y añadir te permite manipular archivos de forma segura y predecible. Practicá con los ejemplos mostrados y pronto vas a usar redirecciones sin pensar, ya sea para guardar logs, procesar textos o automatizar tareas en tus scripts.


¿Te quedó alguna duda? Probá los comandos en tu terminal y observá cómo cambian los archivos. La práctica constante es la mejor forma de interiorizar estos conceptos.

Comentarios (0)

Sé el primero en comentar.

Dejá tu comentario