Pregunta 1¿Qué símbolo añade una nueva línea al final conservando el contenido del archivo existente?
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.
> vacía el contenido y sobrescribe; >> añade al final.| Símbolo | Significado |
|---|---|
> | 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
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.
< 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
> 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.
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 >.
| Forma | Significado |
|---|---|
> out 2> err | Enruta la salida estándar a out y los errores a err por separado |
2>&1 | Envía el error estándar (2) al mismo destino que la salida estándar (1) |
> all 2>&1 | Escribe 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
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué hace < en un comando?
Pregunta 3¿Qué ocurre al ejecutar cat missing.txt 2> err.txt?