Como usar XARGs no Linux

Como usar XARGs no Linux
Xargs é uma ferramenta de linha de comando. Se você deseja redirecionar a saída de um comando como argumento de outro comando, então Xargs é a ferramenta para você. É uma ferramenta muito útil para fazer muitas coisas facilmente na linha de comando. Neste artigo, vou mostrar como usar XARGs no Linux. Então vamos começar.

Como funciona o XARGS:

O formato em que você usa o comando XARGS é:

$ command1 | comando xargs2

Você também pode modificar o comportamento de Xargs com algumas opções. Nesse caso, o formato do comando XARGS será:

$ command1 | XARGS [Options] Command2

Aqui, a saída do comando1 será usado como argumento de Command2. A saída de comando1 é dividido em muitos argumentos por Xargs, dependendo de um personagem chamado delimitador. Então, Xargs executa o comando Command2 para cada um desses argumentos e esse argumento é passado como o argumento do comando Command2.

Por exemplo, digamos, a saída de comando1 é o seguinte:

Valor1 Value2 Value3

Digamos que o personagem delimitador é espaço. Agora, a saída de comando1 será dividido em 3 argumentos, valor1, valor2, e valor3.

Agora, Xargs executa o comando Command2 para cada um dos 3 argumentos uma vez.

$ command2 value1
$ command2 value2
$ command2 valor3

Aqui, valor1, valor2, e valor3 são os argumentos analisados ​​por Xargs da saída do comando comando1.

Você pode obter o mesmo efeito usando loops em um script de shell. Mas Xargs é apenas uma maneira mais fácil de fazer as coisas sem loops, especialmente na linha de comando.

Por padrão, o delimitador de Xargs é novo/caractere espacial. Mas você pode mudar o personagem delimitador com o -d ou -delimitador Opção de Xargs.

Por padrão, Xargs trabalha com um argumento de cada vez. Se você quiser executar o comando Command2 com vários argumentos da saída do comando comando1, Então você pode usar o -n ou -Max-ARGS Opção de Xargs. Às vezes, você terá que dizer a Xargs especificamente para trabalhar com um argumento de cada vez com o -n ou -Max-ARGS opção.

Você também pode anexar ou prender outras seqüências aos argumentos passados ​​para o comando Command2 usando o -EU Opção de Xargs.

Existem muitas outras opções de Xargs, mas esses 3 são os mais importantes e úteis. Então, vou cobrir apenas esses 3 argumentos XARGS neste artigo.

Isso é suficiente revoltar. Vamos passar por alguns exemplos.

Exemplo 1: Criando e removendo arquivos listados em um arquivo de texto

Digamos que você tem uma lista de nomes de arquivos em um arquivo de texto arquivos.TXT.

Você pode ver o conteúdo do arquivo de texto arquivos.TXT como mostrado na captura de tela abaixo.

$ CAT Arquivos.TXT

Agora, você pode criar todos os arquivos listados no arquivos.TXT arquivo de texto usando o tocar comando com Xargs do seguinte modo:

$ CAT Arquivos.txt | Xargs toque

Como você pode ver, os arquivos são criados conforme listado no arquivos.TXT.

Agora, digamos, você deseja remover os arquivos listados no arquivos.TXT arquivo de texto. Você pode usar o rm comando com Xargs do seguinte modo:

$ CAT Arquivos.txt | XARGS RM -V

Somente os arquivos listados no arquivos.TXT O arquivo é removido como você pode ver na captura de tela abaixo.

Este é um exemplo muito simples de xargs.

Exemplo 2: Redirecionar o stdout para comandos que não suportam Pipe

Você pode redirecionar o stdout de um comando comando1 como o stdin de outro comando Command2 se comando Command2 Suporta o tubo Linux. Mas se o comando não suportar tubo, você não poderá fazer isso.

Por exemplo, o eco O comando não suporta o tubo. Portanto, o comando a seguir não imprimirá nada como você pode ver na captura de tela abaixo.

$ data | eco

O comando XARGS pode ajudá -lo a redirecionar o stdout de comando1 (nesse caso data) para o stdin de Command2 (nesse caso eco) como você pode ver na captura de tela abaixo.

$ data | Xargs eco

Exemplo 3: Alteração do delimitador de Xargs

Aqui, eu imprimi uma corda 123-456-7890 (um número de telefone fictício) usando XARGS. Como você pode ver, toda a saída é tratada como um único argumento e Xargs executa o eco comando apenas uma vez.

$ echo -n 123-456-7890 | Xargs eco

Aqui, eu mudei o delimitador para - usando o -d Opção de Xargs. Como você pode ver, a saída 123-456-7890 agora é tratado como 3 argumentos diferentes 123, 456, e 7890.

$ echo -n "123-456-789" | XARGS -N 1 -D -ECHO

Exemplo 4: Anexando ou preendendo argumentos XARGS

Você pode anexar (adicionar ao final do argumento) ou prenda (adicione à frente do argumento) string ao argumento passado para o comando Command2 usando XARGS. Antes de mostrar como fazer isso, mostrarei como usar o -EU Opção de Xargs.

O -EU A opção de Xargs permite definir um símbolo para o argumento XARGS que é passado para o comando Command2. Funciona como uma variável.

Por exemplo,

$ echo -n "123-456-789" | Xargs -d --n 1 -i echo

Aqui, -i opção define como o símbolo do argumento em que Xargs está atualmente trabalhando. Uma vez o símbolo é definido, o símbolo pode ser usado para passar o argumento para o comando Command2, Qual (o símbolo ) será substituído pelo valor do argumento.

Agora, para anexar a string .TXT (digamos) Para cada argumento, você pode usar XARGs da seguinte maneira:

$ echo -n "123-456-789" | Xargs -d --n 1 -i echo .TXT

Da mesma maneira, você pode prender a string olá (digamos) a cada argumento da seguinte maneira:

$ echo -n "123-456-789" | xargs -d --n 1 -i echo "hello "

Exemplo 5: Alteração de extensões de arquivos específicos

Este é um pouco complicado. Mas vou explicar como funciona. Não se preocupe.

Digamos que você tem alguns arquivos em seu diretório de trabalho atual com diferentes extensões de arquivo. Agora, você quer mudar todos eles para png extensão.

Você pode alterar a extensão do arquivo de todos os arquivos no seu diretório de trabalho atual para PNG com XARGs da seguinte maneira:

$ ls | xargs -i Bash -c 'arquivo = && mv -v $ arquivo $ file %%.*.png '

Como você pode ver, toda a extensão de arquivo mudou para PNG.

Aqui, Xargs inicia um Bash Sub Shell e executa o comando Bash

Arquivo = && mv -v $ arquivo $ arquivo %%.*.png

Primeiro, Arquivo = Atribui o símbolo valor, que é o nome do arquivo (o valor do argumento de Xargs) para o ARQUIVO variável de shell.

Então, MV O comando é usado para alterar a extensão do arquivo.

O $ Arquivo A variável shell contém o nome do arquivo original.

$ Arquivo %%.* remove a extensão do nome do arquivo (incluindo . personagem) e então .png A string é anexada ao nome do arquivo despojado.

Xargs pode fazer muito mais coisas complexas. Continue experimentando coisas novas com Xargs. O céu é o seu limite.

Se você precisar de ajuda no XARGS, poderá verificar a página do homem do XARGS da seguinte forma:

$ Man Xargs

Então, é assim que você usa Xargs no Linux. Obrigado por ler este artigo.