উদাহরণ "xargs" কমান্ডের ব্যবহার

বর্ণনা এবং ভূমিকা

Xargs কমান্ড সাধারণত একটি কমান্ড লাইন ব্যবহার করা হয় যেখানে অন্য কমান্ডের ইনপুট আর্গুমেন্ট হিসাবে এক কমান্ডের আউটপুট প্রেরণ করা হয়।

অনেক ক্ষেত্রে, কোনও বিশেষ কমান্ড যেমন xargs এটি সম্পন্ন করার প্রয়োজন হয়, যেহেতু "পাইপ" এবং "পুনঃনির্দেশকরণ" অপারেটর একই ধরনের লেনদেন করেন। যাইহোক, কখনও কখনও মৌলিক পাইপ এবং পুনঃনির্দেশকরণ প্রক্রিয়া সঙ্গে সমস্যা আছে, উদাহরণস্বরূপ, আর্গুমেন্ট স্পেস ধারণ করে, যে xargs অতিক্রম করে

উপরন্তু, xargs নির্দিষ্ট কমান্ডটি চালিত করে, যদি প্রয়োজন হয় তবে সমস্ত আর্গুমেন্টগুলি প্রক্রিয়া করার জন্য। বাস্তবিকপক্ষে, আপনি নির্দিষ্ট ইঙ্গিতটি নির্দিষ্ট ইঞ্চি স্ট্রিংটি থেকে কতগুলি আর্গুমেন্ট পড়তে পারেন তা নির্দিষ্ট করতে পারেন যখন এক্সার্সগুলি নির্দিষ্ট কমান্ডটি চালায়।

সাধারণভাবে, xargs কমান্ডটি ব্যবহার করা উচিত যদি একটি কমান্ডের আউটপুট বিকল্পগুলির অংশ হিসাবে ব্যবহৃত হয় বা দ্বিতীয় কমান্ডের আর্গুমেন্টগুলির সাথে ডাটা প্রবাহিত হয় (পাইপ অপারেটর "|" ব্যবহার করে)। দ্বিতীয়টি কমান্ডের (মান) ইনপুট হিসেবে ডেটা ব্যবহার করার উদ্দেশ্যে নিয়মিত পাইপ করা যথেষ্ট।

উদাহরণস্বরূপ, যদি আপনি ls কমান্ডটি ফাইলের নাম ও ডিরেক্টরিগুলির একটি তালিকা তৈরি করতে ব্যবহার করেন, এবং তারপর echo কমান্ড নির্বাহ করে xargs কমান্ডের মধ্যে এই তালিকাটি পাইপ, তাহলে নিম্নোক্ত প্রতি পুনরাবৃত্তির উপর ইকো দ্বারা কতগুলি ফাইল নাম বা ডিরেক্টরি নাম প্রক্রিয়া করা হয় তা নির্দিষ্ট করতে পারেন। :

ls | xargs -n 5 echo

এই ক্ষেত্রে, প্রতিধ্বনি একটি সময়ে পাঁচটি ফাইল বা ডিরেক্টরি নাম গ্রহণ করে। যেহেতু ইকো শেষে একটি নতুন লাইন চরিত্র যোগ করে, পাঁচটি নাম প্রতিটি লাইনে লেখা হয়।

যদি আপনি একটি কমান্ড চালান যা একটি বৃহৎ এবং অনির্দেশ্য সংখ্যা আইটেম (যেমন ফাইলের নাম) প্রদান করে যা পরবর্তী প্রক্রিয়াকরণের জন্য অন্য কমান্ডে প্রেরণ করা হয়, তাহলে সর্বোচ্চ আর্গুমেন্ট নিয়ন্ত্রণ করা একটি ভাল ধারণা যা দ্বিতীয় কমান্ড ওভারলোড এবং ক্র্যাশিং এড়াতে পায়।

নিম্নোক্ত কমান্ড লাইনের পার্টিশনগুলি cp কমান্ডের কাছে প্রেরণ করার পূর্বে 200 এর গোষ্ঠীগুলি অনুসন্ধান int দ্বারা উত্পাদিত ফাইলের নামর প্রবাহ, যা তাদের ব্যাকআপ ডিরেক্টরীতে অনুলিপি করে।

খুঁজে ./-টাইপ F- নাম "* .txt" - মুদ্রণ | xargs -l200 -i cp -f {} ./backup

অনুসন্ধান কমান্ডের "./" উপাদান বর্তমান অনুসন্ধানকে নির্দেশ করে। "-type f" আর্গুমেন্ট ফাইলে অনুসন্ধানগুলিকে সীমিত করে এবং "-name" * .txt "ফ্ল্যাশকে আরও কিছু ফিল্টারের উপর নিষেধাজ্ঞা দেয় যা" .txt "এক্সটেনশন না। } সংকেতটি বাষ্পের প্রতিটি ফাইলের নাম প্রকাশ করে।

নিম্নোক্ত কমান্ডটি ডিরেক্টরী / টি এম এম এর নীচের বা নীচে কোর নামে ফাইল খুঁজে পায় এবং তাদের ডিলিট করে দেয়।

Find / tmp -name core -type f-print | xargs / বিন / rm -f

নোট করুন যে এটি ভুল কাজ করবে যদি কোনও ফাইলের নাম newlines, একক বা দ্বিগুণ উদ্ধৃতি বা স্পেস থাকে। নিম্নোক্ত সংস্করণটি ফাইলের নামগুলি এমনভাবে পরিচালনা করে যে ফাইল বা ডিরেক্টরিগুলি একক বা দ্বিগুণ উদ্ধৃতি, স্পেস বা নতুন লাইনগুলি সমন্বিত করে সঠিকভাবে পরিচালনা করা হয়।

Find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

-i বিকল্পের পরিবর্তে আপনি -আই পতাকাটি ব্যবহার করতে পারেন যা এই উদাহরণের মধ্যে কমান্ড আর্গুমেন্টের ইনপুট লাইন দ্বারা প্রতিস্থাপিত স্ট্রিংটি নির্দিষ্ট করে:

ls dir1 | xargs -I {} -t এমভি dir1 / {} dir / {} / কোড>

প্রতিস্থাপন স্ট্রিং "{}" হিসাবে সংজ্ঞায়িত করা হয়। এর অর্থ, কমান্ড আর্গুমেন্টের "{}" এর কোনও সংঘাতে পাইপ অপারেশনের মাধ্যমে ইঙ্গিত করার জন্য ইনপুট এলিমেন্ট দ্বারা প্রতিস্থাপিত হয়। এটি আপনাকে সঞ্চালিত (বারবার) কমান্ডের আর্গুমেন্টগুলিতে নির্দিষ্ট অবস্থানগুলিতে ইনপুট উপাদান স্থাপন করতে সক্ষম করে।