एंड्रॉयड

Xux में Xargs कमांड

Linux Command: 'tee' - Watch & Log Command Output

Linux Command: 'tee' - Watch & Log Command Output

विषयसूची:

Anonim

Xargs की उपयोगिता आपको मानक इनपुट से कमांड बनाने और निष्पादित करने की अनुमति देती है। यह आमतौर पर पाइपिंग के माध्यम से अन्य आदेशों के संयोजन में उपयोग किया जाता है।

xargs साथ, आप mkdir और rm जैसी कमांड-लाइन उपयोगिताओं के तर्क के रूप में मानक इनपुट प्रदान कर सकते हैं।

इस ट्यूटोरियल में, हम xargs कमांड का उपयोग करने की मूल बातें कवर करेंगे।

लिनक्स xargs कमांड का उपयोग कैसे करें

xargs मानक इनपुट से तर्क पढ़ता है, रिक्त स्थान या newlines द्वारा अलग किया जाता है, और कमांड के तर्कों के रूप में इनपुट का उपयोग करके निर्दिष्ट कमांड निष्पादित करता है। यदि कोई आदेश नहीं दिया गया है, तो डिफ़ॉल्ट /bin/echo

xargs कमांड का सिंटैक्स इस प्रकार है:

xargs]

xargs का उपयोग करने का सबसे मूल उदाहरण होगा, एक तार को xargs पाइप का उपयोग करके xargs अलग किए गए कई तारों को पास करना और एक कमांड चलाना जो उन स्ट्रिंग्स को तर्कों के रूप में उपयोग करेगा।

echo "file1 file2 file3" | xargs touch

ऊपर दिए गए उदाहरण में, हम मानक इनपुट को xargs पाइप कर रहे हैं, और touch कमांड प्रत्येक तर्क के लिए चलाया जाता है, जिससे तीन फाइलें बनती हैं। यह वैसा ही है जैसे आप दौड़ेंगे:

touch file1 file2 file3

कमांड को कैसे देखें और उपयोगकर्ता को प्रॉम्प्ट करें

निष्पादित करने से पहले टर्मिनल पर कमांड प्रिंट करने के लिए -t ( --verbose ) विकल्प का उपयोग करें:

echo "file1 file2 file3" | xargs -t touch

touch file1 file2 file3

echo "file1 file2 file3" | xargs -p touch

कमांड की पुष्टि और चलाने के लिए y या Y टाइप करें:

touch file1 file2 file3 ?…y

विनाशकारी आदेशों को निष्पादित करते समय यह विकल्प उपयोगी है।

तर्क की संख्या को कैसे सीमित करें

डिफ़ॉल्ट रूप से, कमांड को दिए गए तर्कों की संख्या सिस्टम की सीमा से निर्धारित होती है।

--max-args ( --max-args ) विकल्प दिए गए कमांड को पास करने के लिए तर्कों की संख्या निर्दिष्ट करता है। जब तक सभी तर्क समाप्त नहीं हो जाते, xargs निर्दिष्ट कमांड को कई बार आवश्यक रूप से चलाता है।

निम्नलिखित उदाहरण में, मानक इनपुट से पढ़े जाने वाले तर्कों की संख्या 1 तक सीमित है।

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

जैसा कि आप नीचे दिए गए क्रिया आउटपुट से देख सकते हैं, स्पर्श कमांड को प्रत्येक तर्क के लिए अलग से निष्पादित किया जाता है:

touch file1 touch file2 touch file3

मल्टीपल कमांड कैसे चलाएं

xargs साथ कई कमांड चलाने के लिए, -I विकल्प का उपयोग करें। यह -I विकल्प के बाद एक replace-str को परिभाषित करके काम करता है और replace-str सभी घटनाओं को xggs को दिए गए तर्क से बदल दिया जाता है।

निम्न xargs उदाहरण दो कमांड चलाएगा, पहले यह touch का उपयोग करके फाइलें बनाएगा, और फिर यह फाइलों को 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

replace-str लिए एक सामान्य विकल्प % । हालाँकि, आप किसी अन्य प्लेसहोल्डर का उपयोग कर सकते हैं, उदाहरण के लिए, ARGS :

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

एक डेलीमीटर को कैसे निर्दिष्ट करें

एक कस्टम सीमांकक सेट करने के लिए -d ( --delimiter ) विकल्प का उपयोग करें, जो या तो एक एकल वर्ण या भागने का क्रम हो सकता है।

निम्नलिखित उदाहरण हम उपयोग कर रहे हैं ; एक परिसीमनकर्ता के रूप में:

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

touch file1 file2 file3

फ़ाइल से आइटम कैसे पढ़ें

Xargs कमांड मानक इनपुट के बजाय फ़ाइल से आइटम भी पढ़ सकता है। ऐसा करने के लिए, फ़ाइल नाम के बाद -a ( --arg-file ) विकल्प का उपयोग करें।

निम्नलिखित उदाहरण में, xargs कमांड ips.txt फाइल को ips.txt और प्रत्येक आईपी एड्रेस को पिंग करेगा।

ips.txt

8.8.8.8 1.1.1.1

हम -L 1 विकल्प का भी उपयोग कर रहे हैं, जो xargs को उस समय एक लाइन पढ़ने का निर्देश देता है। यदि यह विकल्प छोड़ दिया गया है, तो xargs सभी IP को एक सिंगल 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

find साथ xargs का उपयोग करना

xargs को सबसे अधिक बार कमांड के संयोजन के साथ प्रयोग किया जाता है। आप विशिष्ट फ़ाइलों को find लिए खोज का उपयोग कर सकते हैं और फिर उन फ़ाइलों पर कार्रवाई करने के लिए xargs का उपयोग कर सकते हैं।

फ़ाइल नामों के साथ समस्या से बचने के लिए जिनमें नईलाइन या अन्य विशेष वर्ण हैं, हमेशा find -print0 विकल्प का उपयोग करें, जिसके कारण पूर्ण फ़ाइल नाम एक शून्य वर्ण द्वारा मुद्रित होता है। -0 , (( --null ) विकल्प का उपयोग करके xargs द्वारा इस आउटपुट की सही व्याख्या की जा सकती है।

निम्नलिखित उदाहरण में, find /var/www/.cache निर्देशिका के अंदर सभी फ़ाइलों का पूरा नाम प्रिंट करेंगी और xargs rm कमांड में फ़ाइल पथों को पास करेगा:

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

व्हाट्सप कैरेक्टर ट्रिम करने के लिए xargs का उपयोग करना

xargs उपयोग किसी दिए गए स्ट्रिंग के दोनों ओर से व्हाट्सएप को हटाने के लिए एक उपकरण के रूप में भी किया जा सकता है। बस तार को xargs कमांड पर पाइप करें, और यह ट्रिमिंग करेगा:

echo " Long line " | xargs

Long line

शेल स्क्रिप्ट में तार की तुलना करते समय यह उपयोगी हो सकता है।

#!/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.

निष्कर्ष

xargs लिनक्स पर एक कमांड-लाइन उपयोगिता है जो आपको कमांड बनाने और निष्पादित करने में सक्षम बनाता है।

प्रत्येक xargs विकल्प के बारे में अधिक विस्तृत जानकारी के लिए, xargs man पेज पढ़ें।

xargs टर्मिनल