Android

Comanda Xargs în linux

Linux команда xargs.

Linux команда xargs.

Cuprins:

Anonim

Utilitarul xargs vă permite să construiți și să executați comenzi de la intrarea standard. De obicei este utilizat în combinație cu alte comenzi prin conducte.

Cu xargs , puteți furniza o introducere standard ca argument pentru utilitățile din linia de comandă precum mkdir și rm .

În acest tutorial, vom acoperi elementele de bază ale utilizării comenzii xargs .

Cum se utilizează Linux xargs Command

xargs citeste argumentele de la intrarea standard, separate prin spații necompletate sau linii noi și execută comanda specificată folosind intrarea ca argumente ale comenzii. Dacă nu este furnizată nicio comandă, implicit este /bin/echo .

Sintaxa pentru comanda xargs este următoarea:

xargs]

Cel mai de exemplu exemplu de utilizare a xargs ar fi să treceți mai multe șiruri separate cu spațiul alb, folosind o țeavă la xargs și să rulați o comandă care va folosi aceste șiruri ca argumente.

echo "file1 file2 file3" | xargs touch

În exemplul de mai sus, canalizăm intrarea standard pe xargs , iar comanda touch este rulată pentru fiecare argument, creând trei fișiere. Acest lucru este identic cu dacă ați alerga:

touch file1 file2 file3

Cum să vizualizați comanda și să promiteți utilizatorul

Pentru a imprima comanda pe terminal înainte de a o executa, utilizați opțiunea -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

Tastați y sau Y pentru a confirma și executa comanda:

touch file1 file2 file3 ?…y

Această opțiune este utilă atunci când executați comenzi distructive.

Cum să limitezi numărul de argumente

În mod implicit, numărul de argumente transmise comenzii este determinat de limita sistemului.

Opțiunea -n ( --max-args ) specifică numărul de argumente care trebuie transmise comenzii date. xargs rulează comanda specificată de câte ori este necesar, până la epuizarea tuturor argumentelor.

În exemplul următor, numărul de argumente citite din intrarea standard este limitat la 1.

echo "file1 file2 file3" | xargs -n 1 -t touch

După cum puteți vedea din ieșirea verbose de mai jos, comanda tactilă este executată separat pentru fiecare argument:

touch file1 touch file2 touch file3

Cum se execută mai multe comenzi

Pentru a rula mai multe comenzi cu xargs , utilizați opțiunea -I . Funcționează prin definirea unui replace-str după opțiunea -I și toate aparițiile de la replace-str sunt înlocuite cu argumentul transmis la xargs.

Următorul exemplu xargs va rula două comenzi, mai întâi va crea fișierele cu touch , apoi va lista fișierele cu comanda 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

O alegere comună pentru replace-str este % . Cu toate acestea, puteți utiliza un alt ARGS , de exemplu, ARGS :

echo "file1 file2 file3" | xargs -t -I ARGS sh -c '{ touch ARGS; ls -l ARGS; }'

Cum se specifică un delimitator

Utilizați opțiunea -d ( --delimiter ) pentru a seta un delimitator personalizat, care poate fi fie un singur personaj, fie o secvență de evacuare care începe cu \ .

Următorul exemplu pe care îl utilizăm ; ca delimitator:

echo "file1;file2;file3" | xargs -d ; -t touch

touch file1 file2 file3

Cum să citiți elemente din fișier

Comanda xargs poate citi și elemente dintr-un fișier în loc de introducere standard. Pentru a face acest lucru, utilizați opțiunea -a ( --arg-file ) urmată de numele fișierului.

În următorul exemplu, comanda xargs va citi fișierul ips.txt și ping fiecare adresă IP.

ips.txt

8.8.8.8 1.1.1.1

Folosim de asemenea opțiunea -L 1 , care instruiește xargs să citească o linie la acea dată. Dacă această opțiune este omisă, xargs va transmite toate IP-urile la o singură comandă 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

Folosind xargs cu find

xargs este cel mai des utilizat în combinație cu comanda find . Puteți utiliza find pentru a căuta anumite fișiere și apoi folosi xargs pentru a efectua operațiuni pe acele fișiere.

Pentru a evita problemele cu nume de fișiere care conțin linii noi sau alte caractere speciale, utilizați întotdeauna opțiunea find -print0 , care determină ca tipărirea numelui complet de fișier urmată de un caracter nul. Această ieșire poate fi interpretată corect de xargs folosind opțiunea -0 , ( --null ).

În exemplul următor, find va imprima numele complete ale tuturor fișierelor din directorul /var/www/.cache , iar xargs vor transmite căile fișierului la comanda rm :

find /var/www/.cache -type f -print0 | xargs -0 rm -f

Utilizarea xargs pentru a decupa caractere spațiu alb

xargs poate fi folosit și ca un instrument pentru a elimina spațiul alb de pe ambele părți ale unui șir dat. Pur și simplu țeava șirul la comanda xargs și va face tunderea:

echo " Long line " | xargs

Long line

Acest lucru poate fi util atunci când compară șiruri în scripturile 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.

Concluzie

xargs este o utilitate pentru linia de comandă pe Linux care vă permite să construiți și să executați comenzi.

Pentru informații mai detaliate despre fiecare opțiune xargs , citiți pagina de mana xargs.

terminalul xargs