Função Bash printf: 7 exemplos para Linux

Se você usa o shell Bash há um bom tempo, provavelmente sabe como imprimir strings no terminal Linux usando o comando echo. O comando printf, entretanto, torna a impressão de texto com formatação específica muito mais fácil.

Hoje, aprenderemos como usar a função printf para aprimorar nossas habilidades de script Bash.

O que é a função Bash printf?

Como o nome sugere, printf é uma função que imprime strings de texto formatadas. Isso significa que você pode escrever uma estrutura de string (o formato) e depois preenchê-la com valores (os argumentos).

Se você está familiarizado com as linguagens de programação C / C ++, você já deve saber como funciona o printf. Printf no shell Bash é muito semelhante, mas possui algumas pequenas diferenças.

Saiba mais: melhores sites para começar a programar C ++

Como usar printf no Bash Shell

A sintaxe básica para printf é:

 printf format [argument]

Printf imprimirá a string de formato enquanto implementa escapes ( ) e diretivas ( % ) por meio do uso de argumentos especificados. Observe a saída do seguinte comando:

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

Printf pegou o argumento world e substituiu o caractere % s na string especificada por ele.

Você pode notar que após a saída, o Bash não cria uma nova linha para você. Ao contrário do comando echo, printf não presumirá que você deseja uma nova linha após a impressão da saída. Portanto, você precisará usar o novo caractere de linha n em cada instância.

Para imprimir uma string e depois mover para uma nova linha, digite printf "Olá, mundo n" .

 Hello, world

É importante ter em mente que printf tentará reutilizar o formato para todos os seus argumentos. Você pode usar isso a seu favor, mas se não tomar cuidado, poderá obter resultados como este:

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

Você também deve estar ciente de que se um argumento estiver faltando, printf interpretará todas as diretivas como 0 (para um número) e nulo (para uma string).

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

Agora que você sabe como funciona o script Bash com printf no Linux, está pronto para começar a usá-lo em seus comandos.

Exemplos do Linux Bash printf

Printf apresenta muitos especificadores de formato que você pode usar em seus scripts. Mas hoje vamos cobrir apenas alguns dos mais comuns para a função.

1. Formatar a saída com uma string

Para formatar a saída com strings de texto, use a diretiva % s .

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

2. Formato da string de saída com decimais

Para formatar uma string com um inteiro, você pode usar a diretiva % d para um decimal com sinal.

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

Observe que se você quiser usar um decimal sem sinal na saída, terá que usar a diretiva % u .

Relacionado: O que significa "Bash" no Linux?

3. Funções matemáticas de saída usando printf

Formatar funções matemáticas com o comando printf é fácil. Basta colocar sua expressão entre parênteses duplos, como você normalmente faz no Bash, e especificar a expressão na lista de argumentos.

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

4. Formatar números hexadecimais

Se você precisar formatar um número hexadecimal, use % x para minúsculas e % X para maiúsculas.

 $ printf %X 1000
3E8C

Para imprimir a data e hora atuais, você pode combinar printf com o comando date e passar as seguintes diretivas.

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

Você pode ver os especificadores de formato para mês, dia, ano, hora, minuto e segundo na saída mencionada.

6. Formate Strings com Caracteres Unicode

Para imprimir caracteres Unicode com printf, use o escape u para Unicode de 16 bits e U para Unicode de 32 bits.

Por exemplo, você pode imprimir o símbolo de direitos autorais com o seguinte comando:

 $ printf "u00A9"
©

7. Adicione espaçamento à saída

Você pode formatar suas strings com espaçamento definindo, antes do especificador de diretiva, um número mínimo de caracteres impressos. Os caracteres não usados ​​serão preenchidos com espaços.

Por exemplo, digitar printf "% s:% 5d n" "Valor 1" 25 "Valor 2" 120 resultará em:

 Value 1: 25
Value 2: 120

O especificador de formato % 5d na saída indica que a string formatada conterá no mínimo cinco caracteres. Como 25 tem apenas dois dígitos, espaços são adicionados aos caracteres restantes.

Se você passar um número negativo como largura, a diretiva será justificada à esquerda em vez de à direita.

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

Se você quiser fazer a variável de largura, você pode passar um asterisco em vez de um número, e printf usará o próximo número que encontrar na lista de argumentos.

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

Relacionado: Tudo o que você precisa saber sobre o Bash For Loops no Linux

Aprendendo o comando printf do Linux

Com o comando printf em seu cinto de utilitários de script Bash, você está pronto para começar a imprimir strings complexas e variadas em seu terminal. Ao desenvolver seus scripts Bash, é importante certificar-se de que você está trabalhando no ambiente mais produtivo possível. Isso não apenas aprimorará suas habilidades de linha de comando, mas também aprimorará seu fluxo de trabalho em geral.