fbpx

Comandos Linux – Comando xargs

Comando xargs do Linux

comando xargs

Em sistemas operacionais do tipo Unix, o comando xargs cria e executa linhas de comando a partir da entrada padrão . Ele permite que você execute o mesmo comando em um grande número de arquivos.

Este documento cobre a versão Linux do xargs .

Descrição

O xargs lê itens da entrada padrão, delimitados por espaços em branco (que podem ser protegidos com aspas duplas ou simples ou uma barra invertida) ou novas linhas e executa o comando (o comando padrão é eco , localizado em / bin / echo ) uma ou mais vezes com quaisquer argumentos iniciais seguidos por itens lidos da entrada padrão. Linhas em branco na entrada padrão são ignoradas.

Como os nomes de arquivo Unix podem conter espaços em branco e novas linhas, esse comportamento padrão geralmente é problemático; nomes de arquivos contendo espaços em branco ou novas linhas são processados ​​incorretamente pelo xargs . Nessas situações, é melhor usar a opção -0 (que é zero, não capital o), o que evita esses problemas. Ao usar esta opção, você precisará garantir que o programa que produz a entrada para xargs também use um caractere nulo como separador. Se esse programa for encontrado, por exemplo, a opção -print0 fará isso por você.

Se qualquer chamada do comando sair com um status 255, o xargs será interrompido imediatamente sem ler mais nenhuma entrada. Uma mensagem de erro é emitida no stderr quando isso acontece.

Esta documentação é específica da versão GNU do xargs , que geralmente é distribuída com a maioria das variantes do Linux .

Sintaxe

xargs [-0prtx] [-E eof -str] [-e [ eof-str ]] [--eof [= eof-str ]] [--null]
      [-d delimitador ] [--delimitador delimitador ] [-I replace-str ]
      [-i [ substituir-str ]] [- substituir [= substituir-str ]] [-l [ linhas máximas ]]
      [-L max-lines ] [--max-lines [= max-lines ]] [-n max-args ]
      [--max-args = max-args ] [-s max-chars ] [--max-chars = max-chars ]
      [-P max-procs ] [--max-procs = max-procs ] [--interactive] [--verbose]
      [--exit] [--no-run-if-empty] [--arg-arquivo = arquivo ] [--show-limits]
      [--version] [--help] [ comando [ argumentos iniciais ]]

Opções

–arg-file = arquivo , -a arquivoLeia itens do arquivo em vez da entrada padrão. Se você usar esta opção, o stdin permanecerá inalterado quando os comandos forem executados. Caso contrário, o stdin será redirecionado de / dev / null .
– nulo , -0Os itens de entrada são finalizados por um caractere nulo em vez de espaço em branco , e as aspas e a barra invertida não são especiais (todos os caracteres são literalmente). Desativa a sequência de fim de arquivo , que é tratada como qualquer outro argumento . Útil quando itens de entrada podem conter espaço em branco, aspas ou barras invertidas. A opção find -print0 produz entrada adequada para este modo.
–delimiter = delim , -d delimOs itens de entrada são finalizados pelo caractere especificado. Citações e barra invertida não são especiais; todo caractere na entrada é interpretado literalmente. Desativa a sequência de fim de arquivo , que é tratada como qualquer outro argumento. Isso pode ser usado quando a entrada consiste em itens separados por nova linha, embora quase sempre seja melhor projetar seu programa para usar – nulo onde isso for possível. O delimitador especificado pode ser um caractere único, um escape de caractere no estilo C , como \ n , ou um código de escape octal ou hexadecimal . Os códigos de escape octais e hexadecimais são entendidos como para o comando printf . Caracteres multibyte não são suportados.
-E eof-strDefina a sequência de fim de arquivo como eof-str . Se a sequência de final de arquivo ocorrer como uma linha de entrada, o restante da entrada será ignorado. Se nem -E nem -e for usado, nenhuma sequência de fim de arquivo será usada.
–eof [ eof-str ], -e [ eof-str ]Esta opção é um sinônimo para a opção -E . Use -E , pois é compatível com POSIX, enquanto essa opção não é. Se eof-str for omitido, não haverá sequência de fim de arquivo. Se nem -E nem -e for usado, nenhuma sequência de fim de arquivo será usada.
–SocorroExiba uma mensagem de ajuda resumindo as opções xargs e saia.
-I substitui-strSubstitua ocorrências de replace-str nos argumentos iniciais pelos nomes lidos na entrada padrão. Além disso, espaços em branco não citados não finalizam itens de entrada; em vez disso, o separador é o caractere de nova linha. Implica -x e -L 1 .
–replace [ substituir-str ], -i [ substituir-str ]Esta opção é sinônimo de -I replace-str se replace-str for especificado e, para -I {}, do contrário. Esta opção está obsoleta; use -I em vez disso.
-L max-linesUse no máximo linhas máximas de linhas de entrada não vazias por linha de comando. Espaços em branco à direita fazem com que uma linha de entrada continue logicamente na próxima linha de entrada. Implica -x .
–max-lines [ max-lines ], -l [ max-lines ]Sinônimo para a opção -L . Ao contrário de -L , o argumento max-lines é opcional. Se max-lines não for especificado, o padrão será um. A opção -l está obsoleta, pois o padrão POSIX especifica -L .
–max-args = max-args , -n max-argsUse no máximo argumentos max-args por linha de comando. Menos argumentos do que max-args serão usados ​​se o tamanho (consulte a opção -s ) for excedido, a menos que a opção -x seja fornecida. Nesse caso, o xargs será encerrado.
–interativo , -pAvise o usuário sobre a execução de cada linha de comando e a leitura de uma linha no terminal. Somente execute a linha de comando se a resposta começar com ” y ” ou ” Y “. Implica -t .
–max-chars = max-chars , -s max-charsUse no máximo caracteres max-chars por linha de comando, incluindo o comando e os argumentos iniciais e os nulos finais no final das cadeias de argumentos. O maior valor permitido depende do sistema e é calculado como o limite de comprimento do argumento para exec , menos o tamanho do seu ambiente, menos 2048 bytes de espaço livre. Se esse valor for superior a 128 KiB , 128 Kib será usado como o valor padrão; caso contrário, o valor padrão é o máximo. 1 KiB é 1024 bytes.
–verbose , -tImprima a linha de comando na saída de erro padrão antes de executá-la.
–versãoImprima o número da versão de xargs e saia.
–show-limitsExiba os limites no comprimento da linha de comando impostos pelo sistema operacional , a escolha do tamanho do buffer do xargs e a opção -s . Canalize a entrada de / dev / null (e talvez especifique –no-run-if-empty ) se você não quiser que o xargs faça nada.
–exit , -xSaia se o tamanho (consulte a opção -s ) for excedido.
–max-procs = max-procs , -P max-procsExecute até max-procs processos por vez; o padrão é 1 . Se max-procs for 0 , o xargs executará o maior número possível de processos por vez. Use a opção -n com -P ; caso contrário, é provável que apenas um executivo seja executado.

Status de saída

O xargs sai com o seguinte status:

0 0Sucesso.
123Parte da invocação do comando retornou um status entre 1 e 125 .
124O comando saiu com um status 255 .
125O comando foi morto por um sinal .
126O comando não pôde ser executado.
127O comando não foi encontrado.
1Ocorreu outro erro de algum tipo.

Exemplos

encontre / tmp -name core -type f -print | xargs / bin / rm -f

Encontre os arquivos denominados core no diretório / tmp ou abaixo dele e exclua-os. Observe que isso funcionará incorretamente se houver algum nome de arquivo que contenha novas linhas ou espaços.

encontre / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Localize os arquivos denominados core no diretório / tmp ou abaixo dele e exclua-os, processando os nomes de arquivos de forma que os nomes de arquivos ou diretórios que contenham espaços ou linhas de nova sejam tratados corretamente.

Encontre / tmp -depth -name core -type f -delete

Localize os arquivos denominados core no diretório / tmp ou abaixo dele e exclua-os, mas com mais eficiência do que no exemplo anterior (porque evitamos a necessidade de usar fork e exec rm e não precisamos do processo extra xargs ).

cut -d: -f1 </ etc / passwd | ordenar | xargs echo

Usa corte para gerar uma lista compacta de todos os usuários no sistema.

xargs sh -c 'emacs " $ @ " </ dev / tty' emacs

Inicia o número mínimo de cópias do Emacs necessárias, uma após a outra, para editar os arquivos listados na entrada padrão do xargs .

find – Encontre arquivos dentro de uma hierarquia de diretórios.
localizar – Pesquise um banco de dados local para encontrar arquivos por nome.

22 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

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.