Comando xargs - Construir e executar linhas de comando no Linux
Índice:
- Como usar o comando
xargsLinux - Como exibir o comando e solicitar ao usuário
- Como limitar o número de argumentos
- Como executar vários comandos
- Como especificar um delimitador
- Como ler itens do arquivo
- Usando
xargscomfind - Usando xargs para aparar caracteres de espaço em branco
- Conclusão
O utilitário
xargs
permite criar e executar comandos a partir da entrada padrão. Geralmente é usado em combinação com outros comandos através da tubulação.
Com o
xargs
, você pode fornecer entrada padrão como argumento para utilitários de linha de comando como
mkdir
e
rm
.
Neste tutorial, abordaremos o básico do uso do comando
xargs
.
Como usar o comando
xargs
Linux
xargs
lê argumentos da entrada padrão, separados por espaços em branco ou novas linhas, e executa o comando especificado usando a entrada como argumentos do comando. Se nenhum comando for fornecido, o padrão é
/bin/echo
.
A sintaxe para o comando
xargs
é a seguinte:
xargs]
O exemplo mais básico de uso de
xargs
seria passar várias strings separadas por espaço em branco usando um pipe para
xargs
e executar um comando que utilizará essas strings como argumentos.
echo "file1 file2 file3" | xargs touch
No exemplo acima, estamos canalizando a entrada padrão para
xargs
e o comando
touch
é executado para cada argumento, criando três arquivos. É o mesmo que se você executasse:
Como exibir o comando e solicitar ao usuário
Para imprimir o comando no terminal antes de executá-lo, use a opção
-t
(
--verbose
):
echo "file1 file2 file3" | xargs -t touch
touch file1 file2 file3
echo "file1 file2 file3" | xargs -p touch
Digite
y
ou
Y
para confirmar e executar o comando:
touch file1 file2 file3 ?…y
Esta opção é útil ao executar comandos destrutivos.
Como limitar o número de argumentos
Por padrão, o número de argumentos transmitidos para o comando é determinado pelo limite do sistema.
A opção
-n
(
--max-args
) especifica o número de argumentos a serem passados para o comando fornecido.
xargs
executa o comando especificado quantas vezes forem necessárias até que todos os argumentos estejam esgotados.
No exemplo a seguir, o número de argumentos lidos a partir da entrada padrão é limitado a 1.
echo "file1 file2 file3" | xargs -n 1 -t touch
Como você pode ver na saída detalhada abaixo, o comando touch é executado separadamente para cada argumento:
touch file1 touch file2 touch file3
Como executar vários comandos
Para executar vários comandos com
xargs
, use a opção
-I
. Ele funciona definindo um
replace-str
após a opção
-I
e todas as ocorrências do
replace-str
são substituídas pelo argumento passado para xargs.
O exemplo de
xargs
seguir executará dois comandos, primeiro criará os arquivos usando o
touch
e, em seguida, listará os arquivos com o comando
ls
:
echo "file1 file2 file3" | xargs -t -I % sh -c '{ touch %; ls -l %; }'
-rw-r--r-- 1 linuxize users 0 May 6 11:54 file1 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file2 -rw-r--r-- 1 linuxize users 0 May 6 11:54 file3
Uma escolha comum para
replace-str
é
%
. No entanto, você pode usar outro espaço reservado, por exemplo,
ARGS
:
echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'
Como especificar um delimitador
Use a opção
-d
(
--delimiter
) para definir um delimitador personalizado, que pode ser um único caractere ou uma sequência de escape iniciando com
\
.
O exemplo a seguir estamos usando
;
como delimitador:
echo "file1;file2;file3" | xargs -d ; -t touch
Como ler itens do arquivo
O comando xargs também pode ler itens de um arquivo em vez da entrada padrão. Para fazer isso, use a opção
-a
(
--arg-file
) seguida pelo nome do arquivo.
No exemplo a seguir, o comando
xargs
lê o arquivo
ips.txt
e
ips.txt
ping em cada endereço IP.
8.8.8.8 1.1.1.1
Também estamos usando a opção
-L 1
, que instrui os
xargs
a ler uma linha por vez. Se essa opção for omitida, o
xargs
passará todos os IPs para um único comando
ping
.
xargs -t -L 1 -a ips.txt ping -c 1
ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=68.1 ms… ping -c 1 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=21.4 ms
Usando
xargs
com
find
xargs
é usado com mais frequência em combinação com o comando
find
. Você pode usar o
find
para procurar arquivos específicos e, em seguida, o
xargs
para executar operações nesses arquivos.
Para evitar problemas com nomes de arquivos que contenham novas linhas ou outros caracteres especiais, sempre use a opção find
-print0
, que faz com que
find
imprima o nome completo do arquivo seguido por um caractere nulo. Esta saída pode ser corretamente interpretada pelo
xargs
usando a opção
-0
, (
--null
).
No exemplo a seguir, o
find
imprimirá os nomes completos de todos os arquivos dentro do diretório
/var/www/.cache
e o
xargs
passará os caminhos do arquivo para o comando
rm
:
find /var/www/.cache -type f -print0 | xargs -0 rm -f
Usando xargs para aparar caracteres de espaço em branco
xargs
também pode ser usado como uma ferramenta para remover espaços em branco de ambos os lados de uma determinada string. Basta canalizar a string para o comando
xargs
, e ele fará o corte:
echo " Long line " | xargs
Long line
Isso pode ser útil ao comparar seqüências de caracteres em scripts de shell.
#!/bin/bash VAR1=" Linuxize " VAR2="Linuxize" if]; then echo "Strings are equal." else echo "Strings are not equal." fi ## Using xargs to trim VAR1 if]; then echo "Strings are equal." else echo "Strings are not equal." fi
Strings are not equal. Strings are equal.
Conclusão
xargs
é um utilitário de linha de comando no Linux que permite criar e executar comandos.
Para informações mais detalhadas sobre cada opção
xargs
, leia a página do manual xargs.
A Dell busca expandir sua oferta no Linux Para expandir suas ofertas no Linux, a Dell está pesquisando novos dispositivos do tipo netbook e em breve oferecerá atualizações do sistema operacional Linux Em um esforço para expandir suas ofertas de Linux, a Dell está pesquisando novos dispositivos do tipo netbook e em breve oferecerá atualizações de netbooks para o Linux, disse uma autoridade da empresa na quarta-feira. A empresa está pesquisando a possibilidade de oferecer novos produtos Linux. bas
Smartbooks são dispositivos do tipo netbook que são alimentados por chips projetados pela Arm. Os dispositivos suportam principalmente o sistema operacional Linux e são projetados para aqueles que dependem da Web para a maior parte de sua computação. A Dell não pôde dizer se ofereceria um livro inteligente.
Aproveite a linha de comando com o comando Take
Integre o prompt de comando, a GUI e uma poderosa linguagem de lote com o potente kit de ferramentas Take Command. > Você não adora quando procura um programa que precisa para executar uma função, encontrá-la e depois descobrir que ela faz muito mais? Eu encontrei o Take Command ($ 100, 30 dias de teste gratuito) depois de ter sido frustrado com a linha de comando ruim no Windows. Eu descobri que isso me deu o que eu queria, e muitas coisas que eu não sabia que queria - mas agora eu definitivame
Comando Chmod no linux (permissões de arquivo)
No Linux, o acesso aos arquivos é gerenciado através das permissões, atributos e propriedade do arquivo. Este tutorial aborda como usar o comando chmod para alterar as permissões de acesso de arquivos e diretórios.







