Comando Bash Printf

Al trabajar con scripting bash, usamos principalmente el comando “echo” para imprimir cualquier salida, que es conveniente y fácil de usar y cumple con los requisitos la mayor parte del tiempo. Pero la simplicidad viene con limitación El comando echo tiene su propia limitación cuando se trata de formatear la salida, en ese caso, el comando printf ” juega su papel.

El comando printf ” en bash scripting funciona de la misma manera que ” printf () ” funciona en el lenguaje C. Esta publicación se centrará en el comando printf “, su sintaxis y ejemplos que detallan el uso de este comando. Revisemos la sintaxis del comando printf “:

printf &ltvar&gt &ltformate&gt &ltarguments…&gt

&ltvar&gt : es opcional asignar salida a una variable.
&ltformate&gt : es una cadena que puede contener diferentes especificadores de formato, como “% s”, “% b”, “% d”, “% f” y barra invertida.
&ltargumentos …&gt : los argumentos pueden ser cualquier valor o variable

Cómo usar el comando printf en scripts bash usando el editor Vim:

Estamos usando el editor Vim para esta guía debido a su rica funcionalidad y facilidad de uso. Obtenga Vim en su dispositivo usando:

$ sudo apt install vim

Inicie el editor de vim:

$ vim

Escribamos un programa simple para imprimir una cadena usando “printf”:

#! /bin/bash
printf “Hello Linuxhint”

Para guardar el archivo, presione el botón Esc ” para cambiar el modo y luego escriba “: w example.sh” y luego “ Enter r” . Ahora abra una nueva ventana de terminal y escriba:

$bash example.sh

El comando anterior ejecutará el script e imprimirá el texto “hello linuxhint” como se muestra a continuación:

Ahora, incluyamos algunos especificadores de formato:

#! /bin/bash
printf%s\n” “Hello Linuxhint”

En el ejemplo anterior, “% s” indica que el argumento correspondiente debe tratarse como una cadena y “\ n” para la nueva línea. De manera similar, si usamos “% d”, entonces el argumento se tratará como un número entero:

#! /bin/bash
printf%s\n” “Hello Linuxhint” “Learn about” “Linux”

Los tres argumentos se tratarán como una cadena y se imprimirán en una nueva línea, como se muestra en el siguiente resultado:

Otro ejemplo se menciona a continuación para comprender mejor el uso del comando “printf”:

#! /bin/bash
echo “Enter your name”
read name
echo “Enter your age”
read age
printf  “Your name : %s\nYour age : %s\n” “$name” “$age

“Tu nombre:% s \ n Tu edad:% s \ n” es el formato mientras que “$ nombre” “$ edad” son los argumentos. Mientras que “% s” apunta los argumentos.

Cómo usar especificadores de conversión con el comando printf:

Los especificadores de conversión son caracteres que se utilizan con el signo “%” para indicar cómo tratar los argumentos. Revisemos la lista de algunos especificadores de uso común:

Especificador D escripción
%% Imprime el símbolo “%”
%C Toma argumentos como un solo carácter
% e y% E Tome el argumento en número de punto flotante y se imprima en notación exponencial, % e para letra minúscula y % E para letra mayúscula
% gy% G Tome el argumento en número de punto flotante e imprima en notación normal o exponencial
%F Toma argumentos como números flotantes
%D Toma argumentos como enteros con signo
% u Toma argumentos como enteros sin signo
% o Toma el argumento como un número octal sin signo
% x y% X Toma argumentos como enteros hexadecimales sin signo

Elaboremos más los especificadores anteriores con un ejemplo en bash:

#! /bin/bash
echo “Enter a number to convert”
read number
printf  “Decimal : %d\nOctal : %o\nHex : %X\n” “$number” “$number” “$number

Cómo usar las directivas Flag, Width y Precision con el comando printf:

Las directivas de bandera vienen con uso opcional con el comando “printf”. Las directivas de banderas de uso común son

  • “-” Justifica a la izquierda la salida
  • “+” Agrega el signo “+” con un número entero
  • “0” Agrega “0” con un número en lugar de espacios

Las directivas de ancho agregan espacio con la salida que generalmente se usa después de la bandera. Entendamos con un ejemplo:

#! /bin/bash
echo “Enter your name”
read name
echo “Enter your age”
read age
printf “You name and age are: %5s %5d\n” “$name” “age”

“% 30s” significa que el espacio tiene 30 caracteres y para alinear el formulario de salida a la izquierda, use el signo “-” “% -30s”.

La directiva de precisión consta del punto “.” Siguiendo por entero positivo:

#! /bin/bash
printf%.2f” 2.56473

La salida sería:

Si el número es un entero, la directiva de precisión agregará “0” antes del número. Si el número es de tipo punto flotante, la directiva de precisión especificará el número de dígitos positivos después del punto decimal. Para cadena, especifica el número de caracteres que se mostrarán:

#! /bin/bash
printf%.2f\n” 2.468936
printf%.3d\n” 10
printf%.3s\n” “samlinux”

Parámetros de escape con barra invertida:

Los parámetros de escape de barra invertida, también llamados secuencias de escape, se utilizan con una barra invertida para formatear la cadena con el comando “printf”. Estas secuencias no se representan a sí mismas, sino que se interpretan en algunos otros personajes. Algunas secuencias de escape de uso común son:

Personaje Descripción
\\ Imprime el carácter de barra invertida
\B Imprime el carácter de retroceso
\norte Imprime la salida en una nueva línea
\ r Imprime un retorno de carro (cursor al principio de la línea)
\ t Da espacio para pestañas desde la derecha
\ v Da espacio para pestañas

Conclusión:

Cuando se trata de imprimir algo en bash scripting, el comando “echo” se usa con mayor frecuencia porque es fácil de usar y recordar. Pero el comando “echo” tiene su limitación. Por lo tanto, para formatear correctamente la salida, se puede utilizar el comando “printf” . El comando “printf” viene con muchas opciones para formatear la salida de cadenas e incluso conversiones y formateo de números básicos. Esta guía comprende a fondo la funcionalidad del comando “printf” en scripts bash con ejemplos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux