32 printf vs echo
Fecha: 08 de octubre, 2026
En Bash, printf permite imprimir texto en la terminal con un formato específico, parecido a echo, pero con mayor control sobre cómo se muestra la información.
32.1 1. Diferencia entre echo y printf
Con echo:
echo "Hola mundo"Con printf:
printf "Hola mundo\n"Ambos producen:
Hola mundoLa diferencia es que echo agrega automáticamente un salto de línea, mientras que printf no lo hace. Por eso utilizamos \n en el segundo ejemplo.
32.2 Componentes de printf
Tomemos esta instrucción:
calificacion=10
printf "Calificación: %.2f\n" "$calificacion"
printf "Calificación: %.2f\n" $calificacion| Elemento | Significado |
|---|---|
printf |
Comando para imprimir texto con formato |
Calificación: |
Texto que se mostrará |
%.2f |
Número decimal con dos cifras decimales |
\n |
Salto de línea |
"$calificacion" |
Variable cuyo valor se insertará |
32.3 2. Imprimir varias líneas
Con echo -e:
echo -e "Ana\nLuis\nMaría"Con printf:
printf "Ana\nLuis\nMaría\n"Ambos muestran:
Ana
Luis
María
32.4 3. Utilizar formatos
Una ventaja de printf es que permite insertar valores dentro de un texto.
nombre="Ana"
edad=20
printf "Nombre: %s, Edad: %d\n" "$nombre" "$edad"Los especificadores más comunes son:
| Símbolo | Función |
|---|---|
%s |
Insertar texto |
%d |
Insertar un número entero |
%f |
Insertar un número decimal |
%.2f |
Mostrar un decimal con dos cifras después del punto |
\n |
Salto de línea |
\t |
Tabulación |
32.5 4. Una característica muy útil para Bash
Podemos utilizar printf para imprimir varios elementos, uno por línea:
printf '%s\n' Ana Luis María CarlosResultado:
Ana
Luis
María
CarlosAquí ocurre algo interesante: printf reutiliza automáticamente el formato %s\n para cada argumento.
Con echo -e tendríamos que escribir:
echo -e "Ana\nLuis\nMaría\nCarlos"32.6 5. ¿Por qué se utiliza printf en scripts?
Porque su comportamiento es más predecible que el de echo, especialmente cuando trabajamos con caracteres especiales, opciones y formatos.
Por ejemplo, para mostrar dos decimales:
printf "%.2f\n" 3.14159Resultado:
3.14
32.7 Ejemplo: Generar una ficha de estudiante
Objetivo: Crear un script que muestre la información de un estudiante de manera organizada, utilizando printf para controlar el formato.
1. Crear el script
nano estudiante.sh2. Escribir el código
#!/bin/bash
# Información del estudiante
nombre="Ana"
materia="Matemáticas"
calificacion=9.567
grupo="A"
# Mostrar información con echo
echo "=== INFORMACIÓN DEL ESTUDIANTE ==="
echo "Nombre: $nombre"
echo "Materia: $materia"
echo "Calificación: $calificacion"
echo "Grupo: $grupo"
echo ""
# Mostrar información con printf
printf "=== INFORMACIÓN DEL ESTUDIANTE ===\n"
printf "Nombre: %s\n" "$nombre"
printf "Materia: %s\n" "$materia"
printf "Calificación: %.2f\n" "$calificacion"
printf "Grupo: %s\n" "$grupo"3. Ejecutar el script
chmod u+x estudiante.sh
./estudiante.sh32.7.1 4. Comparar los resultados
Con echo
=== INFORMACIÓN ===
Nombre: Ana
Materia: Matemáticas
Calificación: 9.567
Grupo: A
Con printf
=== INFORMACIÓN ===
Nombre: Ana
Materia: Matemáticas
Calificación: 9.57
Grupo: A
La diferencia principal es que printf permite controlar cómo se presenta la información. Por ejemplo, %.2f muestra la calificación con dos decimales.