Función Bash printf: 7 ejemplos para Linux

Si ha estado usando el shell Bash durante una cantidad de tiempo decente, probablemente sepa cómo imprimir cadenas en la terminal de Linux usando el comando echo. Sin embargo, el comando printf facilita mucho la impresión de texto con un formato específico.

Hoy aprenderemos cómo hacer uso de la función printf para mejorar nuestras habilidades de scripting Bash.

¿Qué es la función Bash printf?

Como sugiere el nombre, printf es una función que imprime cadenas de texto formateadas. Eso significa que puede escribir una estructura de cadena (el formato) y luego completarla con valores (los argumentos).

Si está familiarizado con los lenguajes de programación C / C ++, es posible que ya sepa cómo funciona printf. Printf en el shell Bash es muy similar, pero tiene algunas pequeñas diferencias.

Más información: los mejores sitios para comenzar con la programación en C ++

Cómo usar printf en Bash Shell

La sintaxis básica de printf es:

 printf format [argument]

Printf imprimirá la cadena de formato mientras implementa escapes ( ) y directivas ( % ) mediante el uso de argumentos especificados. Tenga en cuenta el resultado del siguiente comando:

 $ printf "Hello, %s" world
Hello, world

Printf tomó el argumento mundial y reemplazó el carácter % s en la cadena especificada con él.

Puede notar que después de la salida, Bash no crea una nueva línea para usted. A diferencia del comando echo, printf no asumirá que desea una nueva línea después de que se imprima la salida. Por lo tanto, necesitará usar el carácter de nueva línea n en cada instancia.

Para imprimir una cadena y luego pasar a una nueva línea, escriba printf "Hola, mundo n" .

 Hello, world

Es importante tener en cuenta que printf intentará reutilizar el formato para todos sus argumentos. Puede usar esto para su ventaja, pero si no tiene cuidado, puede terminar con resultados como este:

 $ printf "My name is %s " Jordan Gloor
My name is Jordan My name is Gloor

También debe tener en cuenta que si falta un argumento, printf interpretará cualquier directiva como 0 (para un número) y nula (para una cadena).

 $ printf "Hello, %s."
Hello, .

Ahora que sabe cómo funciona el script Bash con printf en Linux, está listo para comenzar a usarlo en sus comandos.

Ejemplos de printf de Bash de Linux

Printf incluye muchos especificadores de formato que puede utilizar en sus scripts. Pero hoy solo cubriremos algunos comunes para la función.

1. Dar formato a la salida con una cadena

Para formatear la salida con cadenas de texto, use la directiva % s .

 $ printf "%s is one of the largest online %s." MUO "technology publications"
MUO is one of the largest online technology publications.

2. Dar formato a la cadena de salida con decimales

Para formatear una cadena con un número entero, puede usar la directiva % d para un decimal con signo.

 $ printf "MUO was founded in %d." 2007
MUO was founded in 2007.

Tenga en cuenta que si desea utilizar un decimal sin signo en la salida, tendrá que utilizar la directiva % u en su lugar.

Relacionado: ¿Qué significa "Bash" en Linux?

3. Salida de funciones matemáticas usando printf

Formatear funciones matemáticas con el comando printf es fácil. Simplemente coloque su expresión entre paréntesis dobles como lo hace normalmente en Bash, y especifique la expresión en la lista de argumentos.

 $ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2

4. Dar formato a números hexadecimales

Si necesita formatear un número hexadecimal, use % x para minúsculas y % X para mayúsculas.

 $ printf %X 1000
3E8C

Para imprimir la fecha y hora actuales, puede combinar printf con el comando date y pasar las siguientes directivas.

 $ printf "%(%m-%d-%Y %H:%M:%S)T" $(date +%s)
03-26-2021 15:27:57

Puede ver los especificadores de formato para mes, día, año, hora, minuto y segundo en la salida mencionada anteriormente.

6. Dar formato a cadenas con caracteres Unicode

Para imprimir caracteres Unicode con printf, use el escape u para Unicode de 16 bits y U para Unicode de 32 bits.

Por ejemplo, puede imprimir el símbolo de copyright con el siguiente comando:

 $ printf "u00A9"
©

7. Agregue espacio a la salida

Puede formatear sus cadenas con espaciado definiendo, antes del especificador de directiva, un número mínimo de caracteres impresos. Los caracteres no utilizados se completarán con espacios.

Por ejemplo, si escribe printf "% s:% 5d n" "Valor 1" 25 "Valor 2" 120 se producirá:

 Value 1: 25
Value 2: 120

El especificador de formato % 5d en la salida indica que la cadena formateada contendrá un mínimo de cinco caracteres. Dado que 25 tiene solo dos dígitos, se agregan espacios a los caracteres restantes.

Si pasa un número negativo como ancho, la directiva se justificará a la izquierda en lugar de a la derecha.

 $ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120

Si desea hacer que el ancho sea variable, puede pasar un asterisco en lugar de un número, y printf usará el siguiente número que encuentre en la lista de argumentos.

 $ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120

Relacionado: Todo lo que necesita saber sobre Bash For Loops en Linux

Aprendiendo el comando printf de Linux

Con el comando printf en su cinturón de herramientas de scripting Bash, está listo para comenzar a imprimir cadenas complejas y variadas en su terminal. A medida que desarrolla sus scripts Bash, es importante asegurarse de que está trabajando en el entorno más productivo posible. Esto no solo mejorará sus habilidades en la línea de comandos, sino que también mejorará su flujo de trabajo en general.