Friday 2 June 2017

Linux Printf Format Binary Options


Linux e comando Unix printf A sequência FORMAT contém três tipos de objetos: caracteres comuns. Que são copiados textualmente para a saída. Sequências de caracteres interpretadas, que escaparam com uma barra invertida (). Especificações de conversão, que definem a forma como o ARGUMENT s será expresso como parte da saída. Aqui está um exemplo rápido que usa esses três tipos de objetos: Este comando produz a saída: Aqui, FORMAT é incluído em duas citações (). Existe uma especificação de conversão: s. Que interpreta o argumento de John como uma string e insere-o na saída. Existem três seqüências de caracteres escapadas: duas ocorrências e uma ocorrência de n. A seqüência se traduz como uma dupla citações literal que é escapada com uma barra invertida para que printf conheça tratá-la como um caractere literal e não como o fim da seqüência FORMAT. N é a seqüência para um caractere de nova linha, e informa a 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 dado FORMAT, o ARGUMENT s pode ser alterado para afetar a saída. Por exemplo, a saída do comando no exemplo acima pode ser alterada apenas mudando o argumento, John. Se usado em um script. Esse argumento pode ser configurado para uma variável. Por exemplo, o comando irá inserir o valor da variável de ambiente LOGNAME. Qual é o nome de usuário de quem executou o comando. Especificações de conversão Cada especificação de conversão começa com a e termina com um caractere de conversão. Entre o e o caractere de conversão podem existir, por ordem: Um sinal de menos. Isso informa printf para ajustar a conversão do argumento para a esquerda. Um número inteiro que especifica a largura do campo printf irá imprimir uma conversão do ARGUMENTO em um campo com pelo menos números de caracteres de largura. Se for necessário, será acolchoado à esquerda (ou à direita, se for exigido o ajuste à esquerda) para compensar a largura do campo. Um período, que separa a largura do campo da precisão. 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. Estes diferenciam entre um número inteiro curto e longo, respectivamente, e geralmente são apenas necessários para a programação de computadores. Os próprios caracteres de conversão, que indicam a impressão de que tipo de argumento esperar, são os seguintes: Por favor, note que o printf requer o número de seqüências de conversão para coincidir com o número de ARGUMENTOS; ele os mapeia um a um e espera encontrar exatamente Um ARGUMENTO para cada string de conversão. A única exceção é uma seqüência de conversão que usa um asterisco, pois essas strings requerem dois argumentos cada. As cordas de conversão são sempre interpretadas da esquerda para a direita. Por exemplo, o seguinte comando printf: produz a seguinte saída: Seqüências de Caracteres Escapas Interpretadas As seguintes seqüências de caracteres são interpretadas como caracteres especiais por printf: imprime uma cotação dupla () imprime uma barra invertida () emite um alerta (reproduz um sino) imprime Um backspace instrui printf para produzir nenhuma saída adicional imprime um caractere de escape (código ASCII 27) imprime uma aba horizontal imprime uma aba vertical imprime um byte com valor octal NNN (1 a 3 dígitos) imprime um byte com valor hexadecimal HH (1 a 2 Dígitos) imprime o caractere unicode com valor hexadecimal HHHH (4 dígitos) imprime o caractere unicode com valor hexadecimal HHHHHHHH (8 dígitos) imprime ARGUMENT como uma seqüência de caracteres com escapes interpretados como listados acima, com a exceção de que escapes octal assumem o formulário 0 ou 0 NN Quoting In The Shell Tenha cuidado com a forma como seu shell interpreta as cordas citadas. Se seu shell não estiver interpretando sua string citada corretamente, tente usar aspas simples, em vez de aspas duplas. Printf examples Imprime a seguinte saída: Imprime a mesma saída que o exemplo acima. Imprime uma string informando a localização do seu diretório pessoal. Comandos relacionados awk mdash Interpreter para a linguagem de programação de processamento de texto AWK. Bc mdash Uma calculadora. Echo mdash Saída de texto. Imprima dados formatados para stdout Grava a cadeia C apontada por formato para a saída padrão (stdout). Se o formato incluir especificadores de formato (subseqüências começando com), os argumentos adicionais seguintes formato são formatados e inseridos na seqüência resultante substituindo seus respectivos especificadores. Parâmetros format C string que contém o texto a ser gravado em stdout. Ele pode opcionalmente conter especificadores de formato incorporado que são substituídos pelos valores especificados em argumentos adicionais subseqüentes e formatados conforme solicitado. Onde o caractere do especificador no final é o componente mais significativo, uma vez que define o tipo e a interpretação do seu argumento correspondente: inteiro digerido assinado inteiro decimal não assinado inteiro hexadecimal não assinado inteiro hexadecimal não assinado (maiúsculas) ponto decimal decimal, minúsculo ponto decimal decimal, Maiúsculas e minúsculas Notação científica (mantissaexponent), minúsculas Notação científica (mantissaexponent), maiúscula Use a representação mais curta: e ou f Use a representação mais curta: E ou F Ponto flutuante hexadecimal, ponto flutuante hexadecimal em minúsculas, maiúscula Cadeia de caracteres Nada impresso. O argumento correspondente deve ser um ponteiro para um int assinado. O número de caracteres escritos até agora é armazenado na localização apontada. Um seguido de outro personagem irá escrever um único no fluxo. O especificador de formato também pode conter sub-especificadores: sinalizadores. largura ..precisão e modificadores (nessa ordem), que são opcionais e seguem estas especificações: Justificação à esquerda dentro da largura do campo dado A justificação à direita é o padrão (ver sub-especificador de largura). Forças para preceder o resultado com um sinal de mais ou menos (ou -) mesmo para números positivos. Por padrão, apenas os números negativos são precedidos de um sinal. Se nenhum sinal vai ser escrito, um espaço em branco é inserido antes do valor. Usado com o. X ou X especificadores o valor é precedido com 0. 0x ou 0X respectivamente para valores diferentes de zero. Usado com a. UMA . E. E. F. F. G ou G força a saída escrita a conter um ponto decimal mesmo se não mais dígitos seguir. Por padrão, se nenhum dígito seguir, nenhum ponto decimal é gravado. Esquerda-pads o número com zeros (0) em vez de espaços quando preenchimento é especificado (ver sub-especificador de largura). Para especificadores inteiros (d. I. O. U. X. X): precisão especifica o número mínimo de dígitos a serem escritos. Se o valor a ser escrito for menor que este número, o resultado será preenchido com zeros à esquerda. O valor não é truncado, mesmo que o resultado seja maior. Uma precisão de 0 significa que nenhum caractere é escrito para o valor 0. Para um . UMA . E. E. Especificadores F e F: este é o número de dígitos a imprimir após o ponto decimal (por padrão, isto é 6). Para especificadores g e G: Este é o número máximo de dígitos significativos a serem impressos. Para s . Este é o número máximo de caracteres a serem impressos. Por padrão, todos os caracteres são impressos até que o caractere nulo final seja encontrado. Se o período for especificado sem um valor explícito para precisão. 0 é assumido. A precisão não é especificada na seqüência de caracteres de formato, mas como um argumento de valor inteiro adicional que precede o argumento que deve ser formatado. O comprimento sub-especificador modifica o comprimento do tipo de dados. Este é um gráfico que mostra os tipos usados ​​para interpretar os argumentos correspondentes com e sem especificador de comprimento (se um tipo diferente for usado, a promoção ou conversão de tipo apropriada será executada, se permitido): Nota sobre o especificador c: ele toma um int ( Ou wintt) como argumento, mas executa a conversão adequada para um valor de caracteres (ou um wchart) antes de formatá-lo para saída. Nota: As linhas amarelas indicam especificadores e sub-especificadores introduzidos por C99. Consulte ltcinttypesgt para os especificadores para tipos estendidos. . (Argumentos adicionais) Dependendo da seqüência de formato, a função pode esperar uma seqüência de argumentos adicionais, cada um contendo um valor a ser usado para substituir um especificador de formato na seqüência de formato (ou um ponteiro para um local de armazenamento, para n). Deve haver pelo menos tantos desses argumentos quanto o número de valores especificados nos especificadores de formato. Argumentos adicionais são ignorados pela função. Valor de retorno Em caso de sucesso, o número total de caracteres escritos é retornado. Se ocorrer um erro de escrita, o indicador de erro (ferror) é definido e um número negativo é retornado. Se ocorrer um erro de codificação de caracteres multibyte ao escrever caracteres largos, errno é definido como EILSEQ e um número negativo é retornado. Compatibilidade Implementações de biblioteca particulares podem suportar especificadores e sub-especificadores adicionais. Os listados aqui são suportados pelos últimos padrões C e C (ambos publicados em 2011), mas aqueles em amarelo foram introduzidos no C99 (apenas necessários para implementações C desde C11) e podem não ser suportados por bibliotecas que cumpram padrões mais antigos. Coloca a seqüência de gravação para stdout (função) scanf Leia dados formatados de stdin (função) fprintf Escreva dados formatados para transmitir (função) fwrite Escreva bloco de dados para transmitir funções (função): constantes de macro: o comando printf Estranho, isso é muito Grande tópico que precisa de experiência - preencha as informações que faltam, estenda as descrições e corrija os detalhes se você puder. Atenção: trata-se do comando print-print do Bash-builtin - no entanto, a descrição deve ser quase idêntica para um comando externo que segue POSIX . GNU Awk espera uma vírgula após a string de formato e entre cada um dos argumentos de um comando printf. Para obter exemplos, consulte: snippet de código. Ao contrário de outras documentações, não quero redirecioná-lo para a página de manual para a família de funções printf (). No entanto, se você tiver mais experiência, essa deve ser a descrição mais detalhada para as cadeias e modificadores de formato. Devido a implementações históricas conflitantes do comando echo, o POSIX recomenda que o printf seja preferido em relação ao echo. O comando printf fornece um método para imprimir texto pré-formatado semelhante à interface do sistema printf () (função C). Isso significava como sucessor do eco e tem muito mais recursos e possibilidades. Além de outros motivos, o POSIX tem um argumento muito bom para recomendá-lo: Ambos os principais sabores históricos do comando de eco são mútuos exclusivos, eles colidem. Um comando quotnewquot tinha que ser inventado para resolver o problema. O formato de texto é dado em ltFORMATgt. Enquanto todos os argumentos que a sequência de formatos pode apontar são dados depois disso, aqui, indicado por ltARGUMENTSgt. Assim, um típico printf - call se parece: onde quotNome de nome: snName: snquot é a especificação do formato, e as duas variáveis ​​são passadas como argumentos, os s nos pontos de formatos para (para cada especificador de formato que você fornece, printf aguarda um argumento) . Se dado, a saída é atribuída à variável VAR em vez de impressa para stdout (comparável a sprintf () de alguma forma). A opção - v can039t atribuir diretamente a índices de matriz em versões Bash anteriores ao Bash 4.1. Em versões mais recentes do que 4.1, é preciso ter cuidado ao realizar expansões no primeiro argumento sem opção do printf, pois isso abre a possibilidade de uma vulnerabilidade de injeção de código fácil. Onde o eco pode, obviamente, ser substituído por qualquer comando arbitrário. Se for necessário, especifique uma string de formato codificado ou use - para assinalar o fim das opções. O mesmo problema exato também se aplica a leitura. E um semelhante ao mapfile. Embora realizar expansões em seus argumentos é menos comum. É claro que, em termos de shell, os argumentos são apenas cordas, no entanto, as notações C comuns mais algumas adições para constantes de números são reconhecidas para dar um argumento de número para printf. printf (1) - página de manual do Linux printf - formato e impressão Dados Descrição Imprimir ARGUMENTO (s) de acordo com FORMAT ou executar de acordo com OPÇÃO: - Ajudar a exibir esta ajuda e sair - versão da versão de saída da versão e sair FORMAT controla a saída como em C printf. As seqüências interpretadas são: cotação dupla barra invertida um alerta (BEL) b backspace c produza nenhuma saída adicional e escape f alimentação do formulário n nova linha r retorno do carro t guia horizontal v guia vertical byte NNN com valor octal NNN (1 a 3 dígitos) byte xHH Com valor hexadecimal HH (1 a 2 dígitos) uHHHH Unicode (ISOIEC 10646) caractere com valor hexadecimal HHHH (4 dígitos) UHHHHHHHH Caractere Unicode com valor hexadecimal HHHHHHHH (8 dígitos) um único b ARGUMENTO como uma string com escapes interpretados, exceto que octal As escapes são da forma 0 ou 0NNN e todas as especificações do formato C terminam com uma das diouxXfeEgGcs, com os ARGUMENTOS convertidos primeiro no tipo apropriado. As largura variável são manuseadas. NOTA: seu shell pode ter sua própria versão do printf, que geralmente substitui a versão descrita aqui. Consulte a documentação do seu shell para detalhes sobre as opções que ele suporta. Escrito por David MacKenzie. Reporting Bugs Copyright 2010 Free Software Foundation, Inc. Licença GPLv3: GNU GPL versão 3 ou posterior ltgnu. orglicensesgpl. html gt. Este é um software livre: você é livre para mudar e redistribuí-lo. NENHUMA GARANTIA, na medida permitida por lei. A documentação completa do printf é mantida como um manual do Texinfo. Se os programas info e printf estiverem instalados corretamente em seu site, as informações do comando coreutils aqprintf invocationaq devem dar-lhe acesso ao manual completo. Referenciado por

No comments:

Post a Comment