El comando printf en Linux: formatear y mostrar texto

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.
  • %d o %i – entero decimal con signo.
  • %f – número de punto flotante.
  • %x o %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, Mundo

Mostrar varios números:

printf "%d %d %d\n" 10 20 30

Salida:

10 20 30

Anchura y precisión

Se puede especificar un ancho mínimo con un número entre el % y el especificador. Por ejemplo, %5d reserva 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: %.2f muestra dos decimales.

printf "Valor: %8.2f\n" 123.456

Salida:

Valor:   123.46

Secuencias de escape

Al igual que en C, printf interpreta 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 %s para 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.