उदाहरण "xargs" आदेशको प्रयोग

वर्णन र परिचय

Xargs आदेश सामान्यतया आदेश रेखामा प्रयोग गरिन्छ जहाँ एक आदेशको आउटपुट अर्को आदेशमा इनपुट आर्गुमेन्टहरूमा पारित हुन्छ।

धेरै अवस्थामा, कुनै विशेष आदेश जस्तै Xargs लाई यो पूरा गर्न आवश्यक छ, किनकि "पाइप" र "पुन: निर्देश" अपरेटरहरूले एउटै प्रकारको लेनदेन प्रदर्शन गर्दछ। यद्यपि, कहिलेकाहीँ त्यहाँ आधारभूत पाइपिंग र पुनर्गठन प्रणालीको साथ समस्याहरू छन्, उदाहरणका लागि, यदि तर्कहरू रिक्त ठाउँहरू हुन्छन्, त्यो xargs माथिका हुन्छ।

साथसाथै, xargs ले निर्दिष्ट आवश्यक आदेशलाई कार्यान्वयन गर्दछ, यदि आवश्यक भएमा यो सबै तर्कहरू प्रशोधन गर्नको लागि। वास्तवमा, तपाइँ निर्दिष्ट गर्न सक्नुहुन्छ कि प्रत्येक तर्कले निर्दिष्ट आदेश कार्यान्वयन गर्दा मानक इनपुट स्ट्रिमलाई कति तर्कहरू पढ्न सकिन्छ।

सामान्यमा, xargs आदेश प्रयोग गर्नु पर्छ यदि एक आदेश को आउटपुट विकल्प को भाग वा एक दोस्रो आदेश को आर्गुमेन्ट को रूप मा प्रयोग गरिन्छ जुन डेटा स्ट्रिम गरिएको छ (पाइप अपरेटर को प्रयोग गरेर "|")। यदि अर्को डेटाको मानक (इनपुट) इनपुट हुनु हो भने नियमित पाइपिंग पर्याप्त छ।

उदाहरणका लागि, यदि तपाइँले फाइल नामहरू र डाइरेक्टरीहरूको सूची उत्पन्न गर्न ls कमाण्ड प्रयोग गर्नुहुन्छ, र त्यसपछि यो सूचीले xargs आदेश कार्यान्वयन गूंजमा पाइप गर्दछ, तपाइँ निर्दिष्ट गर्न सक्नुहुन्छ कि कति फाइल नाम वा डाइरेक्टरी नामहरू प्रशोधन गरिएका छन्। :

ls | xargs -n 5 गूंज

यस अवस्थामा, गीति एक समयमा 5 फाइल वा डाइरेक्टरी नाम प्राप्त गर्दछ। चूंकि गूंजको अन्त्यमा नयाँ-रेखा वर्ण थप्छ, पाँचवटा नाम प्रत्येक रेखामा लेखिएको छ।

यदि तपाइँ एक आदेश कार्यान्वयन गर्दछ जुन ठूला र अप्रत्याशित संख्या वस्तुहरू फर्काउँछ (उदाहरणार्थ फाइल नामहरू) जुन थप प्रक्रियाको लागि अर्को आदेशमा पास पारिएको छ यो तर्कको अधिकतम संख्या नियन्त्रण गर्न एक राम्रो विचार हो कि दोस्रो कमान अधिभार र क्र्यासिङ गर्नबाट बचाउन प्राप्त हुन्छ।

निम्न आदेश रेखाले उत्पादन द्वारा फाइल नामको स्ट्रीम विभाजन गर्दछ जुन 200 वटा समूहहरू सीपी आदेशमा पास पारिएको छ, जसले तिनीहरूलाई जगेडा डाइरेक्टरीमा प्रतिलिपि गर्दछ।

फेला पार्नुहोस् ./ -प्रकार f -name "* .txt" -प्रथम | xargs -2002-c cp -f {} ./ ब्याकअप

"./" तत्त्व खोजमा तत्वले खोजको लागि हालको डाइरेक्टरी निर्दिष्ट गर्दछ। "-प्रकार f" आर्गुमेन्टले फाइलहरूलाई खोजीलाई रोक्दछ, र "-नाम" * .txt "फ्ल्यागले केहि पनि फिल्टर गर्दछ जुन" .txt "एक्सटेन्सन भएको छैन। Xargs मा -इ- फ्ल्याग संकेत गर्दछ कि { } टिप्पणीले भापको प्रत्येक फाइल नाम प्रतिनिधित्व गर्दछ।

निम्न आदेश डाइरेक्टरीमा राखिएको वा डाइरेक्टरी / tmp तल फाइलहरू फेला पार्दछ र तिनीहरूलाई मेटाउँदछ।

फेला पार्नुहोस् / tmp -name कोर -प्रकार एफ -प्रिन्ट | xargs / bin / rm -f

ध्यान दिनुहोस् कि यदि कुनै नयाँ फाइलहरू, एकल वा डबल उद्धरणहरू, वा खाली ठाउँहरू छन् भने यसले गलत काम गर्नेछ। निम्न संस्करणले फाइलनामहरू प्रशोधन गर्दछ जुन फाईल वा डाइरेक्टरी नामहरू एकल वा डबल उद्धरणहरू, स्पेसहरू वा नयाँलाइनहरूमा सही रूपमा निलम्बित छन्।

फेला पार्नुहोस् / tmp -name कोर -प्रकार f -print0 | xargs -0 / बिन / rm -f

-i विकल्पको सट्टा तपाई -आम झण्डा प्रयोग गर्न सक्नुहुन्छ जुन स्ट्रिङ निर्दिष्ट गर्दछ जुन यो आर्गनमा इनपुट आर्गन द्वारा प्रतिस्थापित गरिएको छ यस उदाहरणको रूपमा:

ls dir1 | xargs -I {} -tvv dir1 / {} dir / {} / code>

प्रतिस्थापन स्ट्रिंग "{}" को रूपमा परिभाषित गरिएको छ। यो अर्थ, "{}" को कुनै पनि घटनाहरू आदेश आर्गुमेन्टले पाइप अपरेसन मार्फत आर्गुमेन्ट फर्वार्ड इनपुट तत्व द्वारा प्रतिस्थापित गरेको छ। यसले तपाईँलाई निर्दिष्ट स्थितिमा निर्दिष्ट स्थितिहरूमा सक्षम पारेको तर्क (बारम्बार) क्रियान्वित गर्न सक्षम गर्दछ।