fbpx

Comandos Linux – Comando printf

Comando Linux printf

comando printf

Em sistemas operacionais do tipo Unix, o comando printf insere argumentos em uma sequência de texto definida pelo usuário , criando saída formatada.

Este documento cobre a versão GNU / Linux do printf .

Descrição

printf imprime uma string formatada na saída padrão. Suas raízes estão na linguagem de programação C , que usa uma função com o mesmo nome. É uma maneira útil de produzir resultados precisamente formatados a partir de argumentos numéricos ou textuais.

Sintaxe

printf FORMAT [ ARGUMENTO ] ...
OPÇÃO printf

Opções

FORMATOFORMAT controla a saída e define a maneira que os ARGUMENTOS serão expressos na saída. Veja a seção Formato abaixo.
ARGUMENTOCada ARGUMENTO será inserido na saída formatada de acordo com a definição de FORMAT .
–SocorroExiba uma mensagem de ajuda e saia.
–versãoExiba informações da versão e saia.

Formato

A sequência FORMAT contém três tipos de objetos:

  • caracteres comuns , que são copiados literalmente para a saída.
  • seqüências de caracteres interpretadas, que são escapadas com uma barra invertida (” \ “).
  • especificações de conversão, que definem a maneira pela qual ARGUMENT s será expresso como parte da saída.

Aqui está um exemplo rápido que usa esses três tipos de objetos:

printf "Meu nome é \"% s \ ". \ nÉ um prazer conhecê-lo." "John"

Este comando produz a saída:

Meu nome é John".
É um prazer conhecer você.

Aqui, FORMAT é colocado entre aspas duplas (  ). Há uma especificação de conversão: % s , que interpreta o argumento ” John “ como uma string e o insere na saída. Há três seqüências de caracteres de escape: duas ocorrências de \ “ e uma ocorrência de \ n . A sequência \ “é traduzida como aspas duplas literais; é escapada com uma barra invertida para que printf saiba tratá-la como um caractere literal, e não como o final da string FORMAT . \ N é a sequência de um caractere de nova linha , e diz printf para iniciar uma nova linha e continuar a saída a partir daí.

O poder do printf reside no fato de que, para qualquer sequência FORMAT , os ARGUMENT s podem ser alterados para afetar a saída. Por exemplo, a saída do comando no exemplo acima pode ser alterada apenas alterando o argumento “John”. Se usado em um script , esse argumento pode ser definido como uma variável . Por exemplo, o comando

printf "Olá, sou% s. \ n" $ LOGNAME

… inserirá o valor da variável de ambiente $ LOGNAME , que é o nome de usuário de quem executou o comando.

Especificações de conversão

Cada especificação de conversão começa com um % e termina com um caractere de conversão. Entre o % e o caractere de conversão, pode haver, em ordem:

Um sinal de menos. Isso diz ao printf para ajustar à esquerda a conversão do argumento.
númeroUm número inteiroS que especifica a largura do campo; printf imprimirá uma conversão de ARGUMENT em um campo com pelo menos um número de caracteres. Se necessário, será preenchido à esquerda (ou à direita, se for necessário ajuste à esquerda) para compensar a largura do campo.
.Um período que separa a largura do campo da precisão.
númeroUm número inteiro, a precisão, que especifica o número máximo de caracteres a serem impressos a partir de uma string, ou o número de dígitos após o ponto decimal de um valor de ponto flutuante ou o número mínimo de dígitos para um número inteiro.
h ou lEles diferenciam um inteiro curto e um longo, respectivamente, e geralmente são necessários apenas para a programação de computadores.

Os próprios caracteres de conversão, que informam a printf que tipo de argumento esperar, são os seguintes:

caractere de conversãotipo de argumento
d , iUm número inteiro, expresso como um número decimal.
oUm número inteiro, expresso como um número octal não assinado .
x , xUm número inteiro, expresso como um número hexadecimal não assinado
vocêUm número inteiro, expresso como um número decimal não assinado.
cUm número inteiro, expresso como um caractere. O número inteiro corresponde ao código ASCII do caractere .
sUma linha.
fUm número de ponto flutuante, com uma precisão padrão de 6.
e , EUm número de ponto flutuante expresso em notação científica, com uma precisão padrão de 6.
pUm ponteiro de endereço de memória.
%Sem conversão; um sinal de porcentagem literal (” % “) é impresso.

Uma largura ou precisão pode ser representada com um asterisco (” * “); Nesse caso, o asterisco lê um argumento, que deve ser um número inteiro, e usa esse valor. Por exemplo,

printf "%. * s" 5 "abcdefg"

… produz a seguinte saída:

abcde

A tabela a seguir representa a maneira que printf produziria seu ARGUMENT , ” computerhope “, usando várias seqüências de caracteres FORMAT . Cada sequência é colocada entre aspas, para que seja mais fácil ver a extensão exata de cada uma:

FORMAT stringARGUMENT stringstring de saída
“% s”“computerhope”
"computerhope"
“% 8s”“computerhope”
"computerhope"
“% .8s”“computerhope”
"computador"
“% -8s”“computerhope”
"computerhope"
“% -15s”“computerhope”
"computerhope"
“% 15,8s”“computerhope”
"computador"
“% -15,8”“computerhope”
"computador"
“% -15,2”“computerhope”
"co"

Observe que printf requer que o número de cadeias de conversão corresponda ao número de ARGUMENT s; ele os mapeia individualmente e espera encontrar exatamente um ARGUMENT para cada sequência de conversão. A única exceção é uma string de conversão que usa um asterisco; essas cadeias requerem dois argumentos cada.

As seqüências de conversão são sempre interpretadas da esquerda para a direita. Por exemplo, o seguinte comando printf :

printf "% d mais% 5f% s%. * f." 5 5,05 "iguais" 3 10,05

… produz a seguinte saída:

5 mais 5,050000 é igual a 10,050.

Sequências de caracteres com escape interpretados

As seguintes seqüências de caracteres são interpretadas como caracteres especiais por printf :

\ “imprime aspas duplas (  )
\\imprime uma barra invertida ( \ )
\umaemite um alerta (toca uma campainha)
\ bimprime um backspace
\ cinstrui o printf a não produzir mais saída
\ eimprime um caractere de escape (código ASCII 27)
\ fimprime um feed de formulário
\ nimprime uma nova linha
\ rimprime um retorno de carro
\ timprime uma guia horizontal
\ vimprime uma guia vertical
NNNimprime um byte com valor octal NNN (1 a 3 dígitos)
\ x HHimprime um byte com valor hexadecimal HH (1 a 2 dígitos)
\ u HHHHimprime o caractere unicode com valor hexadecimal HHHH (4 dígitos)
\ U HHHHHHHHimprime o caractere unicode com valor hexadecimal HHHHHHHH (8 dígitos)
% bimprime ARGUMENT como uma string com escapes ” \ ” interpretados conforme listado acima, com a exceção de que escapes octais assumem o formato \ 0 ou \ 0 NN

Citando no Shell

Tenha cuidado com a maneira como seu shell interpreta as seqüências de caracteres citadas. Se o seu shell não estiver interpretando corretamente sua cadeia de caracteres entre aspas, tente usar aspas simples em vez de aspas duplas.

Exemplos

printf 'olá \ nworld \ n!'

Imprime a seguinte saída:

Olá 
mundo 
!
printf "% b" 'olá \ nworld \ n!'

Imprime a mesma saída que o exemplo acima.

printf "Sua pasta pessoal é% s. \ n" $ HOME

Imprime uma string informando o local do diretório inicial .

awk – Intérprete para a linguagem de programação de processamento de texto AWK.
bc – Uma calculadora.
eco – Texto de saída.

21 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.