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

FORMATO FORMAT controla a saída e define a maneira que os ARGUMENTOS serão expressos na saída. Veja a seção Formato abaixo.
ARGUMENTO Cada ARGUMENTO será inserido na saída formatada de acordo com a definição de FORMAT .
–Socorro Exiba uma mensagem de ajuda e saia.
–versão Exiba 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úmero Um 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úmero Um 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 l Eles 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ão tipo de argumento
d , i Um número inteiro, expresso como um número decimal.
o Um número inteiro, expresso como um número octal não assinado .
x , x Um 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.
c Um número inteiro, expresso como um caractere. O número inteiro corresponde ao código ASCII do caractere .
s Uma linha.
f Um número de ponto flutuante, com uma precisão padrão de 6.
e , E Um número de ponto flutuante expresso em notação científica, com uma precisão padrão de 6.
p Um 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 string ARGUMENT string string 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 ( \ )
\uma emite um alerta (toca uma campainha)
\ b imprime um backspace
\ c instrui o printf a não produzir mais saída
\ e imprime um caractere de escape (código ASCII 27)
\ f imprime um feed de formulário
\ n imprime uma nova linha
\ r imprime um retorno de carro
\ t imprime uma guia horizontal
\ v imprime uma guia vertical
NNN imprime um byte com valor octal NNN (1 a 3 dígitos)
\ x HH imprime um byte com valor hexadecimal HH (1 a 2 dígitos)
\ u HHHH imprime o caractere unicode com valor hexadecimal HHHH (4 dígitos)
\ U HHHHHHHH imprime o caractere unicode com valor hexadecimal HHHHHHHH (8 dígitos)
% b imprime 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.

Categorias
Compartilhe esse post

Posts populares

Linux Force Security Cursos de linux e segurança da informação

Seu futuro na tecnologia começa agora! Não deixe essa chance escapar.