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.
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 .
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
5. Imprimir data e hora
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
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.