Pregunta 1¿Qué símbolo añade una nueva línea al final conservando el contenido del archivo existente?
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.
> 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 # 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
> 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?