Como usar o comando Bash Printf no Linux

O comando party printf permite que você digite em uma janela de terminal Linux com controle mais preciso e mais opções de formatação do que o comando echo fornece. Mesmo as peculiaridades estranhas do printf podem ser úteis.

índice

  1. Escreva em um terminal
  2. escrever strings básicas
  3. Outros caracteres de escape
  4. Uso de variáveis
  5. strings de formato
  6. Outros truques e peculiaridades
  7. cavalos de corrida

Escreva em um terminal

É uma das partes mais básicas de interagir com um programa. O programa escreve algo na tela e você lê. Mesmo levando em consideração a convenção derivada do Unix e mantida pelo Linux de que os programas de linha de comando são os mais curtos possíveis, muitos apenas digitam no terminal se algo der errado. incorreta. Dizer ao usuário o que está acontecendo, o que está prestes a acontecer ou o que acabou de acontecer é uma primitiva de programação essencial.

O shell Bash tem o comando echo que pode escrever texto na janela do terminal. Ele pode manipular variáveis ​​e exibir seus valores se estiverem incluídos na string, e você pode usá-lo em scripts ou na linha de comando. Então, por printf existe? no echo Você já abordou o assunto da escrita de texto? Bem, printf oferece funcionalidade além do simples ato de digitar strings nas janelas do terminal. Ele permite que você formate a saída com grande flexibilidade e também possui outros truques.

O comando printf party é modelado na função printf da linguagem C, mas há diferenças. Se você conhece C, deve ter cuidado com essas diferenças.

escrever strings básicas

Vamos ver como echo e printf diferem ao escrever strings no terminal.

 eco aqui estão algumas palavras
 printf aqui estão algumas palavras

O comando echo imprime todas as palavras, mas printf imprime apenas a primeira palavra. Além disso, não há nova linha impressa por printf . A saída é executada no prompt de comando. Mas, antes de mais nada, tendo printf agindo em todas as palavras, elas precisam ser citadas.

 eco aqui estão algumas palavras
 printf "aqui estão algumas palavras"

Isso é melhor. Temos todas as palavras que estão sendo impressas, mas ainda não recebemos uma nova linha. Isso porque com printf você só obtém uma nova linha se solicitar. Isso pode parecer um aborrecimento, mas permite que você decida se deve ou não incluir um. Para fazer com que printf uma nova linha, você deve incluir " n " em sua string. Esta é a sequência de escape "nova linha".

 eco aqui estão algumas palavras
 printf "aqui estão algumas palavrasn"

Às vezes, ele usará uma nova linha e às vezes não. Aqui está um caso em que uma instrução printf usa uma nova linha e a outra não.

 printf "Como fazer" && printf "Geekn"

como o primeiro printf não imprime uma nova linha, a saída do segundo printf é colocada imediatamente após "Como fazer" e na mesma linha. O segundo printf usa n para imprimir uma nova linha. Isso faz com que o prompt de comando apareça na linha abaixo do texto impresso.

RELACIONADO: Como processar um arquivo linha por linha em um script Bash do Linux

Outros caracteres de escape

Aqui estão mais alguns caracteres de escape que você pode usar. você já viu" n "Em ação.

  • n : Mover para uma nova linha.
  • r : Imprime um retorno de carro. Isso envia o cursor de saída de volta ao início da linha atual.
  • t : Imprime um caractere de tabulação.
  • v : imprime um espaço de tabulação vertical.
  • \\ : Imprime um caractere de barra invertida.
  • " : Imprime um caractere de aspas.
  • B : Imprime um caractere de retrocesso.

O caractere de escape de retorno de carro move o cursor de volta ao início da linha atual .

 printf "O mel é a raiz de todos os malesrMoneyn"

O comando printf processa sua entrada da esquerda para a direita. A string é impressa como texto normal até que printf encontre o caractere de escape " r ". O cursor de saída volta para o início da linha atual.

O processamento de strings é retomado com a letra imediatamente após o caractere " r ". O processamento do restante faz com que printf imprima "Money", substituindo a palavra "Cario".

As aspas " " "Usam-se para citar strings e a barra invertida" "character denota seqüências de escape. Se você quiser imprimir esses caracteres, você precisa escapá-los com uma barra invertida. Isso diz ao printf para tratá-los como caracteres literais.

 printf "Esta é uma tTab, esta é uma aspa ", e este \\ é uma barra invertida"

Uso de variáveis

Usar variáveis ​​com printf é muito semelhante a usá-las com echo . Para incluir uma variável, como esta variável de ambiente, preceda-a com o cifrão " $ "como de costume.

 printf "Diretório inicial: $HOMEn"

RELACIONADO: Como trabalhar com variáveis ​​no Bash

strings de formato

As strings de formato são strings que definem o formato da saída. Você fornece texto e outros valores como argumentos para a string de formato operar.

A string de formato pode incluir texto, sequências de escape e especificadores de formato . Os especificadores de formato informam ao printf que tipo de argumento esperar, como strings, inteiros ou caracteres.

Esses são os especificadores de formato mais comuns. Todos são precedidos por um sinal de porcentagem " % ". Para imprimir um sinal de porcentagem, use dois sinais de porcentagem juntos " %% ."

  • %s : Imprime uma string.
  • %C : Imprime um único caractere.
  • %D : Imprime um número inteiro.
  • %f : imprime um número de ponto flutuante.
  • % tu : Imprime um inteiro sem sinal.
  • %o : Imprime um valor em octal.
  • %X : Imprime um valor em hexadecimal, minúsculo.
  • % X : Imprime um valor em hexadecimal, em maiúsculas.
  • %Y : Imprime um número de ponto flutuante em notação científica, em letras minúsculas.
  • %Y : Imprime um número de ponto flutuante em notação científica, em letras maiúsculas.
  • %% : Imprime um símbolo de porcentagem %.
 printf "Como fazer %sn" "Geek"
 printf "%s%s %sn" "Como" "-Para" "Geek"

A string de formato no primeiro comando inclui algum texto próprio. Passamos a string "Geek" como argumento para printf . É correspondido e impresso pelo especificador de formato " %s ". Observe que há apenas um espaço entre a string de formato e a string do argumento. Em C, você precisaria de uma vírgula para separá-los, mas com a versão Bash de printf usar um espaço é suficiente.

A segunda string de formato contém apenas especificadores de formato e a sequência de escape de nova linha. Os três argumentos string são consumidos por cada um dos especificadores de formato " %s . Novamente, em C, você deve colocar uma vírgula entre cada argumento, mas o Bash printf esquece isso.

Para imprimir diferentes tipos de argumentos, basta usar o especificador de formato apropriado. Aqui está uma rotina de conversão rápida de números criada usando printf . Vamos imprimir o valor 15 em notação decimal, octal e hexadecimal.

 printf "Dez: %dnOct: %onHex: %xn" 15 15 15

Vamos reduzir um pouco para que o exemplo fique menos confuso.

 printf "Hex: %xn" 15

A maioria de nós está acostumada a ver valores hexadecimais em maiúsculas e com valores menores que 0x10 impressos com zero à esquerda. Podemos fazer isso usando o especificador de formato hexadecimal maiúsculo " %X " e colocando um especificador de largura entre o sinal de porcentagem " % " e o caractere " X ".

isso informa ao printf a largura do campo no qual o argumento deve ser impresso. O campo é preenchido com espaços. Com este formato, os valores de dois dígitos seriam impressos sem nenhum preenchimento.

 printf "Hex: %2Xn" 15

Agora obtemos um valor em maiúsculas, impresso com um espaço à esquerda. Podemos fazer printf preencher o campo com zeros em vez de espaços colocando um zero na frente dos dois:

 printf "Hex: %02Xn" 15

O especificador de precisão permite definir o número de pontos decimais a serem incluídos na saída.

 printf "Ponto flutuante: %08.3fn" 9.243546

Isso facilita a produção de tabelas de resultados com saída perfeitamente alinhada. Este próximo comando também demonstra outra das peculiaridades do printf do Bash. Se houver mais argumentos do que especificadores de formato, os argumentos serão inseridos na string de formato em lotes até que todos os argumentos tenham sido esgotados. O tamanho do lote processado de uma vez é o número de especificadores de formato na string de formato. Em C, argumentos adicionais em chamadas de função printf são ignorados.

 printf "Float: %8.3fn" 9.243546 23.665 8.0021

Você também pode usar os especificadores de largura e precisão com strings. Este comando imprime as strings em um campo de 10 caracteres de largura.

 printf "%10s %dn" "casacos" 7 "sapatos" 22 "guarda-chuvas" 3 

Por padrão, os valores são justificados à direita em seus campos. Para justificá-los à esquerda, use um sinal de menos " - "Imediatamente após o sinal de porcentagem " % ".

 printf "%-10s %d" "casacos" 7 "sapatos" 22 "guarda-chuvas" 3

O especificador de precisão pode ser usado para definir o número máximo de caracteres que são impressos. Estamos usando os caracteres dois pontos " : " para mostrar os limites da largura do campo. Não como a palavra "Umbrella" é truncada.

 printf ":%10.6s:n" "casacos" "sapatos" "guarda-chuvas"
 printf ":%-10.6s:n" "casacos" "sapatos" "guarda-chuvas"

O especificador de largura pode até ser passado como um argumento . Use um asterisco " * " em vez de um especificador numérico e passe a largura como um argumento inteiro.

 printf "%*sn" 20 "Mais à direita" 12 "Médio" 5 "mais à esquerda"

Outros truques e peculiaridades

Os especificadores de formato dentro da string de formato funcionarão com valores do tipo apropriado, sejam fornecidos na linha de comando como argumentos regulares ou gerados como saída de uma expressão .

Isso imprime a soma de dois números:

 printf "23+32=%dn" $((23+32))

Este comando imprime o número de diretórios no diretório de trabalho atual:

 printf "Existem %d diretórios" $(ls -d */ | wc -l)

Este comando printf imprime uma string retornada de uma chamada para outro comando.

 printf "Usuário atual: %sn" $(whoami)

Se um especificador de formato de string " %s "não for fornecido com um argumento, printf não imprime nada.

 printf "Um: %s dois: %sn" "Alfa"

Se um especificador de formato de string " %s " receber um valor numérico por engano, ele o imprime como uma string e não reclama. Não tente isso com C printf Coisas muito ruins acontecerão. Seu programa provavelmente irá travar. Mas o hit printf lida com isso sem reclamar.

 printf "Um: %s dois: %sn" "Alfa" 777

Se um especificador de formato inteiro " %d " não receber argumentos, imprima zero.

 printf "Inteiro: %dn"

Se um especificador de formato inteiro " %d receber um argumento de string por engano, o Bash imprimirá uma mensagem de erro e printf imprimirá zero.

 printf "Inteiro: %dn" "Sete"

Símbolos complicados podem ser gerados usando seu número Unicode ou "ponto de código". Eles são escapados usando a letra "u" seguida de seu valor Unicode.

 printf "O símbolo do Euro: u20ACn"

Para incluir seqüências de escape em argumentos de string , você deve usar o especificador de formato " %b "na string de formato, não o especificador de formato " %s String.

 printf "%s" "u20ACn"
 printf "%b" "u20ACn"

O primeiro printf não processa o valor Unicode e não reconhece a sequência de escape de nova linha. A segunda instrução printf usa o especificador de formato " %b ". Isso manipula corretamente o caractere Unicode e uma nova linha é impressa.

RELACIONADO: O que são codificações de caracteres como ANSI e Unicode e como elas são diferentes?

cavalos de corrida

Às vezes, tudo o que você precisa fazer é echo algum texto para a janela do terminal. Mas quando você precisa aplicar algum posicionamento e formatação, printf é a ferramenta certa para o trabalho.

 printf "%b" "Tha-" "tha-" "tha-" "isso é tudo pessoal.n"
  • Melhores alternativas ao Samsung Galaxy S22 – Revisão Geek
  • Como multiplicar números no Microsoft Excel

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão geek

Os comandos Bash são um conjunto de parâmetros usados ​​para administração e configuração do sistema, bem como um conjunto de combinações de teclas especiais para executar tarefas específicas em ambientes Linux/Unix usando um shell Bash.

Como usar o comando Bash no Linux?

Usando o bash na linha de comando

Para começar a usar o Linux no bash na maioria dos sistemas operacionais Linux e OS X, abra um terminal. Vamos considerar um exemplo simples de "hello world!" para começar. Abra seu terminal e digite a seguinte linha (tudo depois do sinal $): $ echo "Hello world!"

O que pode ser feito no Bash?

O potencial do Bash para Windows 10 nos permite instalar bibliotecas como python-pip e python dev para que possamos executar programas e executar nossos próprios projetos para executar qualquer um dos exemplos incluídos nas bibliotecas e qualquer programa escrito em esta linguagem de programação .programação.

Ir arriba