Comandos LinuxExplicados en español
/
Ficha29 / 104
Categoría
Texto
Ejemplos
6
Ver también
cat · tr · grep · nano

echo

eco (repetir el texto en pantalla)

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.

Sintaxisecho [opciones] TEXTO [> ARCHIVO]
Precaución

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.

§ 1

Despiece

6 ejemplos
Imprimir un texto en la terminal

Imprimir un texto en la terminal

2 piezas
Lámina01 / 06
Comandoecho Hola mundo
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2Hola mundoValorEl texto que se imprime, tal cual, sin comillas.
Resultado

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

4 piezas
Lámina02 / 06
Comandoecho "Hola mundo" > saludo.txt
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2"Hola mundo"ValorEl texto a imprimir. Las comillas sirven cuando el texto tiene espacios.
3>OperadorRedirección: en vez de mostrar el texto en pantalla, lo guarda en el archivo que sigue.
4saludo.txtArgumentoEl archivo que se crea, con una sola línea dentro.
Resultado

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

4 piezas
Lámina03 / 06
Comandoecho "Segunda línea" >> notas.txt
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2"Segunda línea"ValorLa línea que se va a sumar al archivo.
3>>OperadorRedirección de agregado: escribe al final del archivo sin borrar lo que ya estaba.
4notas.txtArgumentoEl archivo que ya existe y va a crecer.
Resultado

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

2 piezas
Lámina04 / 06
Comandoecho "Tu carpeta es $HOME"
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2"Tu carpeta es $HOME"ValorTexto con una variable del shell. El $ le avisa a la terminal que hay que sustituirla por su valor.
Resultado

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

3 piezas
Lámina05 / 06
Comandoecho -e "Uno\nDos\nTres"
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2-eOpciónConvierte los escapes de backslash en el carácter que representan.
3"Uno\nDos\nTres"ValorEl texto con tres escapes \n, uno por cada salto de línea que quieres.
Resultado

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

6 piezas
Lámina06 / 06
Comandoecho "$PATH" | tr ':' '\n'
Piezas6
Escala1:1
N.ºPiezaTipoQué hace
1echoComandoEl comando que imprime texto.
2"$PATH"ValorLa lista de carpetas donde la terminal busca los programas.
3|OperadorTubería: manda lo que imprime echo como entrada del comando que sigue.
4trComandoEl comando que cambia un carácter por otro.
5':'ValorEl carácter que quieres cambiar: los dos puntos que separan las carpetas.
6'\n'ValorPor lo que lo cambias: un salto de línea.
Resultado

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.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
-nNo agrega el salto de línea final. Sirve para armar un texto en partes: echo -n Cargando y después echo listo.
-eInterpreta los escapes de backslash, como \n para salto de línea y \t para tabulador.
-EDeja los backslashes tal cual. Es lo que hace echo por defecto en bash.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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.
§ 5

Ver también