Android

Xargs utos sa linux

Using xargs in Linux

Using xargs in Linux

Talaan ng mga Nilalaman:

Anonim

Pinapayagan ka ng xargs utility na bumuo at magpatupad ng mga utos mula sa karaniwang pag-input. Karaniwang ginagamit ito kasama ang iba pang mga utos sa pamamagitan ng piping.

Sa xargs , maaari kang magbigay ng pamantayang pag-input bilang argument sa mga utility sa utos na tulad ng mkdir at rm .

Sa tutorial na ito, tatakpan namin ang mga pangunahing kaalaman sa paggamit ng utos ng xargs .

Paano Gumamit ng Linux xargs Command

Binasa ng xargs argumento mula sa karaniwang pag-input, na pinaghiwalay ng mga blangkong puwang o newlines, at isinasagawa ang tinukoy na utos gamit ang input bilang mga argumento ng command. Kung walang ibinigay na utos, ang default ay /bin/echo .

Ang syntax para sa utos ng xargs ay ang mga sumusunod:

xargs]

Ang pinaka-pangunahing halimbawa ng paggamit ng xargs ay upang maipasa ang ilang mga string na pinaghiwalay sa whitespace gamit ang isang pipe sa xargs at magpatakbo ng isang utos na gagamitin ang mga string na ito bilang mga argumento.

echo "file1 file2 file3" | xargs touch

Sa halimbawa sa itaas, piping namin ang karaniwang pag-input sa xargs , at ang touch command ay tatakbo para sa bawat argumento, na lumilikha ng tatlong mga file. Ito ay katulad ng kung tatakbo ka:

touch file1 file2 file3

Paano Makita ang Utos at igawin ang Gumagamit

Upang i-print ang utos sa terminal bago isagawa ito gamitin ang opsyon na -t ( --verbose ):

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

I-type ang y o Y upang kumpirmahin at patakbuhin ang utos:

touch file1 file2 file3 ?…y

Ang pagpipiliang ito ay kapaki-pakinabang kapag nagsasagawa ng mapanirang mga utos.

Paano Limitahan ang Bilang ng Mga Pangangatwiran

Bilang default, ang bilang ng mga argumento na ipinasa sa utos ay natutukoy sa pamamagitan ng limitasyon ng system.

Ang opsyon na -n ( --max-args ) ay tumutukoy sa bilang ng mga argumento na maipasa sa ibinigay na utos. xargs nagpapatakbo ng tinukoy na utos nang maraming beses hangga't kinakailangan hanggang sa maubos ang lahat ng mga argumento.

Sa sumusunod na halimbawa, ang bilang ng mga argumento na nabasa mula sa karaniwang pag-input ay limitado sa 1.

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

Tulad ng nakikita mo mula sa output ng pandiwa sa ibaba, ang touch command ay isinasagawa nang hiwalay para sa bawat argumento:

touch file1 touch file2 touch file3

Paano Magpatakbo ng Maramihang Mga Utos

Upang magpatakbo ng maraming mga utos na may xargs , gamitin ang pagpipilian ng -I . Gumagana ito sa pamamagitan ng pagtukoy ng isang replace-str pagkatapos ng pagpipilian ng -I at ang lahat ng mga pangyayari ng replace-str ay pinalitan ng argumento na ipinasa sa xargs.

Ang sumusunod na halimbawa ng xargs ay magpapatakbo ng dalawang utos, una itong lilikha ng mga file gamit ang touch , at pagkatapos ay ililista nito ang mga file na may utos ng 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

Ang isang karaniwang pagpipilian para sa replace-str ay % . Gayunpaman, maaari kang gumamit ng isa pang placeholder, halimbawa, ARGS :

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

Paano Tukuyin ang isang Delimiter

Gamitin ang opsyon na -d ( --delimiter ) upang magtakda ng isang pasadyang delimiter, na maaaring maging isang solong character o isang pagkakasunud-sunod na pagtakas na nagsisimula sa \ .

Ang sumusunod na halimbawa na ginagamit namin ; bilang isang delimiter:

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

touch file1 file2 file3

Paano Magbasa ng Mga item mula sa File

Ang utos ng xargs ay maaari ring magbasa ng mga item mula sa isang file sa halip na karaniwang input. Upang gawin ito, gamitin ang opsyon na -a ( --arg-file ) na sinusundan ng pangalan ng file.

Sa sumusunod na halimbawa, babasahin ng xargs utos ang ips.txt file at ping bawat IP Address.

ips.txt

8.8.8.8 1.1.1.1

Ginagamit din namin ang pagpipilian na -L 1 , na nagtuturo sa xargs na basahin ang isang linya sa oras. Kung ang pagpipiliang ito ay tinanggal na xargs ay ipapasa ang lahat ng mga IP sa isang solong utos ng 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

Paggamit ng xargs may find

xargs ay madalas na ginagamit sa pagsasama sa find command. Maaari kang gumamit ng find upang maghanap para sa mga tukoy na file at pagkatapos ay gumamit ng xargs upang maisagawa ang mga operasyon sa mga file na iyon.

Upang maiwasan ang mga isyu sa mga pangalan ng file na naglalaman ng mga newlines o iba pang mga espesyal na character, palaging gamitin ang pagpipilian na find -print0 , na nagiging sanhi ng pag-print ng buong pangalan ng file na sinundan ng isang null character. Ang output na ito ay maaaring wastong bigyang kahulugan ng xargs gamit ang -0 , ( --null ) na pagpipilian.

Sa sumusunod na halimbawa, find mai-print ang buong pangalan ng lahat ng mga file sa loob ng /var/www/.cache direktoryo at xargs ay ipapasa ang mga landas ng file sa utos ng rm :

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

Paggamit ng xargs sa Trim Whitespace Character

xargs maaari ding magamit bilang isang tool upang alisin ang whitespace mula sa magkabilang panig ng isang naibigay na string. I-pipe lamang ang string sa utos ng xargs , at gagawin nito ang pag-trim:

echo " Long line " | xargs

Long line

Ito ay maaaring maging kapaki-pakinabang kapag paghahambing ng mga string sa mga script ng 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.

Konklusyon

xargs ay isang utility-line utility sa Linux na nagbibigay-daan sa iyo upang makabuo at magpatupad ng mga utos.

Para sa mas detalyadong impormasyon tungkol sa bawat pagpipilian sa xargs , basahin ang pahina ng xargs man page.

xargs terminal