वर्णन आणि परिचय
Xargs कमांड विशेषतः कमांड लाईनमध्ये वापरले जाते जेथे एका कमांडचे आऊटपुट दुसर्या आज्ञेत इनपुट आर्ग्यूमेंट्स म्हणून पाठवले जाते.
बर्याच बाबतीत, "पारप" आणि "रीडायरेक्शन" ऑपरेटर समान प्रकारचे व्यवहार करत असल्यामुळे कोणतेही विशेष आदेश जसे की xargs हे आवश्यक करण्यासाठी आवश्यक नसते. तथापि, काहीवेळा मूलभूत पाइपिंग आणि पुनर्निर्देशन पद्धतीसह समस्या आहेत, उदा. आर्ग्युमेंट्समध्ये रिक्त स्थान असल्यास, त्या शब्दांचे परिक्षण होते
याव्यतिरिक्त, xargs त्यास दिलेली सर्व आर्ग्युमेंट्स प्रक्रिया करण्यासाठी, आवश्यक असल्यास, वारंवार निर्दिष्ट आदेश चालवते. खरेतर, xargs निर्दिष्ट केलेल्या आज्ञा कार्यान्वीत करतेवेळी आपण प्रत्येक मानक आऊटपुट स्ट्रीममधून किती आर्ग्युमेंट्स वाचता येतील ते निर्दिष्ट करू शकता.
सामान्यतः, xargs कमांडचा उपयोग केला पाहिजे जर एका कमांडचे आऊटपुट पर्यायाचा भाग म्हणून वापरला जाणे किंवा दुसऱ्या कमांडचा डेटा जो प्रवाहित (ऑब्जेक्ट पाईप ऑपरेटर "|" वापरुन) आर्ग्यूमेंट दुसऱ्या कमांडच्या (मानक) इनपुटचा उद्देश असतांना नियमित पाइपिंग पुरेसे आहे
उदाहरणार्थ, आपण फाइल नावे आणि निर्देशिकांची सूची निर्माण करण्यासाठी ls आदेश वापरत असल्यास, आणि नंतर या सूचीस echo निष्पादित केलेल्या xargs कमांडमध्ये पाईप करा, खालीलप्रमाणे प्रत्येक पुनरावृत्तीवर प्रतिलिपी किती फाइल नावे किंवा निर्देशिका नावांवर प्रक्रिया केली जाऊ शकते हे निर्दिष्ट करू शकता. :
ls | xargs -n 5 प्रतिध्वनीया बाबतीत, प्रतिध्वनी एका वेळी पाच फाईल किंवा निर्देशिका नावा स्वीकारते. प्रतिध्वनी शेवटी एक नवीन-रेखा वर्ण जोडते, प्रत्येक नावावर पाच नावे लिहीली जातात.
पुढील आज्ञा देण्याकरीता दुसर्या आदेशावर मोठ्या आणि अप्रत्याशित संख्या आयटम (उदा. फाइल नावे) परत करणाऱ्या कमांड कार्यान्वित केल्यास ओव्हरलोड आणि क्रॅशिंग टाळण्यासाठी दुसरी कमांडची कमाल संख्येची नियंत्रणे ठेवणे ही एक चांगली कल्पना आहे.
खालील कमांड लाईन विभाजने cp कमांड कडे पाठवल्या जाण्यापूर्वी 200 च्या समूहांना शोध int द्वारे निर्मीत फाइल नावांचा प्रवाह दाखवतो , जे त्यांना बॅकअप निर्देशिकेत प्रतिलिपीत करते.
शोधा ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backupशोध आदेशातील "./" घटक दर्शवण्यासाठी वर्तमान निर्देशिका निर्दिष्ट करतो. "-प्रकार f" आर्ग्युमेंटने फाइल्सला शोध प्रतिबंधित केले आहे आणि ".name" * .txt "ध्वजांकित कोणत्याही ध्वनीकडे" .txt "एक्सटेन्शन नसलेल्या काही गोष्टी फिल्टर करते. } नोटेशन स्टीमचे प्रत्येक फाइल नाव दर्शवते.
खालील आदेश / tmp डिरेक्ट्री अंतर्गत किंवा खाली कोर नावाची फाइल्स शोधते आणि त्यास डिलिट करते.
/ tmp -name कोर -प्रकार f-print शोधा xargs / bin / rm -f
लक्षात घ्या की हे नवीन ओळी, एकल किंवा दुहेरी अवतरण, किंवा रिकामटे असलेले फाईलनाव असतील तर चुकीचे कार्य करेल. खालील आवृत्ती फाईलनेम अशा पद्धतीने प्रक्रिया करते की फाइल किंवा निर्देशिका नावांमध्ये ज्यामध्ये सिंगल किंवा दुहेरी अवतरण चिन्हे, रिक्त स्थान किंवा नवीन ओळी समाविष्ट आहेत ती व्यवस्थित हाताळली जातात.
शोधा / tmp -name कोर -प्रकार f -print0 | xargs -0 / bin / rm -f
-i पर्याय ऐवजी तुम्ही -आय फ्लॅग चा वापर करू शकता जे या उदाहरणात आज्ञेच्या आर्ग्युमेंट्समध्ये इनपुट लाईनद्वारे बदललेली स्ट्रिंग निर्दिष्ट करते:
ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>
बदलीची स्ट्रिंग "{}" अशी परिभाषित केली आहे. याचा अर्थ, कमांड आर्ग्यूमेंटमधील "{}" च्या कोणत्याही घटना पाईप ऑपरेशन्सच्या माध्यमातून अग्रेषित केलेल्या इनपुट एलिमेंट द्वारा बदलण्यात येतात. हे आपल्याला कार्यान्वित (वारंवार) आदेश च्या आर्ग्यूमेंट्स मध्ये विशिष्ट पदांवर इनपुट घटक ठेवण्यासाठी सक्षम करते