Introducción
El comando printf es una herramienta esencial en la línea de comandos de Linux que permite formatear y mostrar texto de manera controlada. A diferencia de echo, printf interpreta secuencias de escape y acepta especificadores de formato similares a los del lenguaje C, lo que lo hace ideal para generar salida estructurada en scripts y automatizaciones.
Sintaxis básica
La forma general de printf es:
printf FORMATO [ARGUMENTOS...]
Donde FORMATO es una cadena que puede contener texto literal y especificadores de formato, y ARGUMENTOS son los valores que se sustituirán en esos especificadores. Si se proporcionan más argumentos que especificadores, el formato se reutiliza hasta consumirlos todos.
Especificadores de formato más usados
%s– cadena de texto.%do%i– entero decimal con signo.%f– número de punto flotante.%xo%X– entero en hexadecimal (minúsculas/mayúsculas).%o– entero en octal.%%– imprime el signo de porcentaje literal.
Estos especificadores pueden ir acompañados de modificadores que controlan ancho, precisión y alineación.
Ejemplos simples
Mostrar un saludo:
printf "Hola, %s\n" "Mundo"Salida:
Hola, MundoMostrar varios números:
printf "%d %d %d\n" 10 20 30Salida:
10 20 30Anchura y precisión
Se puede especificar un ancho mínimo con un número entre el
%y el especificador. Por ejemplo,%5dreserva al menos 5 caracteres, alineando a la derecha por defecto. Para alinear a la izquierda se usa el signo menos:%-5s.La precisión para números de punto flotante se indica con un punto seguido de la cantidad de decimales:
%.2fmuestra dos decimales.
printf "Valor: %8.2f\n" 123.456Salida:
Valor: 123.46Secuencias de escape
Al igual que en C,
printfinterpreta secuencias como:
\n– salto de línea.\t– tabulación horizontal.\r– retorno de carro.\\– barra invertida literal.\"– comilla doble literal.
Estas secuencias permiten crear diseños más complejos sin necesidad de múltiples llamadas.
Diferencias con echo
Aunque echo es más sencillo para imprimir texto plano, tiene un comportamiento variable respecto a las opciones -e y -n según la shell. printf es más portátil y predecible, ya que siempre interpreta las secuencias de escape y no agrega automáticamente un salto de línea al final (a menos que se incluya \n en el formato). Esto lo hace preferible en scripts donde se requiere control preciso de la salida.
Buenas prácticas
- Utilizar comillas simples alrededor del formato cuando no se necesite expansión de variables, evitando sorpresas.
- Preferir
%spara cadenas y validar que los argumentos coincidan con los especificadores para evitar errores de formato. - En bucles, reutilizar el mismo formato para mantener consistencia y mejorar legibilidad.
- Cuando se imprima solo texto sin formato, considerar
printf '%s\n' "texto"para evitar la interpretación inesperada de secuencias de escape.
Conclusión
Dominar printf permite generar salida formateada, alineada y con precisión numérica en cualquier entorno de Linux. Su sintaxis, heredada de C, brinda flexibilidad que supera a echo en la mayoría de los casos de uso profesional, desde simples mensajes hasta la creación de tablas y reportes automatizados.


