echo
Muestra texto en la terminal o lo guarda en un archivo.
Es el comando más simple que hay: imprime en la terminal el texto que le pongas. Lo usas para crear archivos de texto rápido con >, para mandar mensajes a otro comando por una tubería y para ver el valor de una variable como $HOME o $PATH.
echo [opciones] TEXTO [> ARCHIVO]La redirección > borra lo que tuviera el archivo antes de escribir: echo hola > notas.txt deja el archivo con una sola línea. Para agregar al final usa >>. Como root, un > mal escrito sobrescribe un archivo del sistema sin preguntar.
Despiece
6 ejemplosImprimir un texto en la terminal
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | Hola mundo | Valor | El texto que se imprime, tal cual, sin comillas. |
En la terminal aparece Hola mundo y un salto de línea. Es la forma más rápida de ver un mensaje o de comprobar qué trae una variable.
Crear un archivo de texto
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | "Hola mundo" | Valor | El texto a imprimir. Las comillas sirven cuando el texto tiene espacios. |
| 3 | > | Operador | Redirección: en vez de mostrar el texto en pantalla, lo guarda en el archivo que sigue. |
| 4 | saludo.txt | Argumento | El archivo que se crea, con una sola línea dentro. |
Crea saludo.txt con la línea Hola mundo. Si el archivo ya existía, lo deja con esa única línea, porque > lo vacía antes de escribir.
Agregar una línea al final
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | "Segunda línea" | Valor | La línea que se va a sumar al archivo. |
| 3 | >> | Operador | Redirección de agregado: escribe al final del archivo sin borrar lo que ya estaba. |
| 4 | notas.txt | Argumento | El archivo que ya existe y va a crecer. |
notas.txt queda con una línea más y conserva las anteriores. Repite el comando las veces que quieras y las líneas se van acumulando, en el orden en que las mandes.
Ver el valor de una variable
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | "Tu carpeta es $HOME" | Valor | Texto con una variable del shell. El $ le avisa a la terminal que hay que sustituirla por su valor. |
Imprime Tu carpeta es /home/tu-usuario. Entre comillas dobles la terminal expande las variables; funciona igual con $HOME, $PATH o $USER. Con printenv ves todas de una vez.
Meter saltos de línea y tabuladores
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | -e | Opción | Convierte los escapes de backslash en el carácter que representan. |
| 3 | "Uno\nDos\nTres" | Valor | El texto con tres escapes \n, uno por cada salto de línea que quieres. |
Imprime tres líneas separadas: Uno, Dos y Tres. También existen \t para tabulador y \c para cortar la salida ahí. Sin la -e, bash imprime los \n tal cual.
Ver la PATH en una línea por carpeta
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | echo | Comando | El comando que imprime texto. |
| 2 | "$PATH" | Valor | La lista de carpetas donde la terminal busca los programas. |
| 3 | | | Operador | Tubería: manda lo que imprime echo como entrada del comando que sigue. |
| 4 | tr | Comando | El comando que cambia un carácter por otro. |
| 5 | ':' | Valor | El carácter que quieres cambiar: los dos puntos que separan las carpetas. |
| 6 | '\n' | Valor | Por lo que lo cambias: un salto de línea. |
La variable PATH trae todas las carpetas del sistema en una sola línea larguísima. Al pasarla por tr, cada carpeta queda en su propia línea, que es como se lee de verdad.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| -n | No agrega el salto de línea final. Sirve para armar un texto en partes: echo -n Cargando y después echo listo. |
| -e | Interpreta los escapes de backslash, como \n para salto de línea y \t para tabulador. |
| -E | Deja los backslashes tal cual. Es lo que hace echo por defecto en bash. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Esperar que echo interprete los \n sin la opción -e. | En bash, echo imprime los backslashes tal cual hasta que le pones -e: echo -e "Uno\nDos". Ojo: en dash y en zsh sí los interpreta siempre. Si necesitas lo mismo en cualquier terminal, usa printf "Uno\nDos\n". |
| Usar > dos veces y perder lo que ya estaba escrito. | Cada > abre el archivo desde cero, así que la segunda vez borra lo que hizo la primera. Para agregar al final usa >>, que escribe al final del archivo sin tocar lo que ya estaba. |
| Escribir echo $ARCHIVO sin comillas cuando el valor trae espacios. | Sin comillas la terminal parte el valor en palabras y al imprimirlo los espacios dobles se vuelven uno solo: "mis notas.txt" sale como "mis notas.txt". Con comillas dobles sale tal cual: echo "$ARCHIVO". Y si usas ese valor como destino de una redirección sin comillas, bash responde ambiguous redirect, así que también va entrecomillado: > "$ARCHIVO". |
| Usar sudo echo texto > /etc/archivo y recibir Permission denied. | sudo solo se aplica a echo; la redirección la hace tu shell con tu usuario normal, que no puede escribir ahí. Usa tee: echo texto | sudo tee /etc/archivo, o sudo tee -a para agregar al final. |
Preguntas frecuentes
- ¿Cuál es la diferencia entre echo y printf?
- printf hace lo mismo con más control: siempre interpreta los escapes, no agrega salto de línea si no pones \n y rellena datos con %s o %d. Además se comporta igual en bash, dash o zsh, cosa que no pasa con echo. Para textos fijos, echo es más corto; para scripts que van a correr en cualquier shell, printf es más seguro.
- ¿Cómo creo un archivo de texto en la terminal?
- Con echo "contenido" > archivo.txt. El > guarda la salida de echo en el archivo y, si ya existía, lo deja con una sola línea. Para ir agregando sin borrar, cambia el > por >> y repite el comando.
- ¿Por qué echo "Hola\nAdiós" no hace un salto de línea?
- Porque en bash echo solo interpreta los backslashes cuando le pones -e: echo -e "Hola\nAdiós". En dash y zsh los interpreta sin -e, así que si necesitas que se comporten igual en cualquier shell, mejor usa printf "Hola\nAdiós\n".
- ¿Cómo veo mis variables de entorno?
- Una por una con echo $HOME, echo $PATH o echo $USER. Para ver todas de golpe: printenv, o env | less si quieres poderlas recorrer con las flechas. Entrecomilla siempre que el valor pueda traer espacios: echo "$PATH".
- ¿Cómo le mando texto a otro comando?
- Con la tubería, el símbolo |: echo "error de conexión" | grep -i error. Lo que echo imprime entra como entrada del comando de la derecha. El > y el >> son parecidos, pero guardan la salida en un archivo en vez de pasarla a otro comando.