উত্তর:
একটি পার্থক্য হ'ল পাইপের পরিবর্তে কমান্ড সাবস্টিটিউশন ব্যবহার করার সময়, পাস করা ডেটার আকার কমান্ড বাফারের আকারের দ্বারা সীমাবদ্ধ থাকে, তাই এটি কোনও ক্ষেত্রে কোনও সতর্কতা ছাড়াই কাটা হয়। এর অর্থ হ'ল পুরো কমান্ড আউটপুটটি অবশ্যই পরবর্তী কমান্ডে প্রেরণ করার আগে তৈরি করা উচিত এবং মেমরির মধ্যে সংরক্ষণ করা উচিত, সুতরাং বড় আউটপুটগুলির জন্য আপনি প্রয়োজনের তুলনায় অনেক বেশি মেমরি ব্যবহার করতে পারেন।
প্রথম পদ্ধতির সাথে আরেকটি সমস্যা হ'ল আউটপুটটি সাদা স্পেসে বিভক্ত হয়, তাই আপনি কোনও ফাঁকে ফাঁকে ফাইলের নাম ব্যবহার করতে পারবেন না। xargs
হোয়াইটস্পেস সমস্যা দ্বারা প্রভাবিত হয়, তবে এটি ব্যবহৃত ডিলিমিটার পরিবর্তন করে এটি ঠিক করা যেতে পারে। উপায় দ্বারা ফাইলের নামগুলি সঠিকভাবে পরিচালনা করার জন্য, আপনাকে দ্বিতীয় উদাহরণে ডিলিমেটার হিসাবে নাল বাইট ব্যবহার করতে হবে।
তৃতীয় ইস্যুটি হ'ল গ্লোবগুলি প্রসারিত হয়, সুতরাং কোনও ফাইলের নামে যদি তারকাচিহ্ন বা প্রশ্ন চিহ্ন থাকে তবে অপ্রত্যাশিত ফলাফল আসবে।
আপনি এখানে ইস্যুতে একটি চমৎকার আলোচনা খুঁজে পেতে পারেন: http://mywiki.wooledge.org/ পার্সিংএল
সঠিক বাক্য গঠন হবে
echo rm *
বা যদি আপনার অবশ্যই জার্গস ব্যবহার করা হয়,
find . -maxdepth 1 -print0 | xargs -0 echo rm
echo
আউটপুটটি সঠিক দেখলে অপসারণ করুন ।
-l
পতাকাটি ব্যবহার করতে পারেন , পছন্দ করুন find . -maxdepth 1 -print0 | xargs -0 -l rm
। দ্বিতীয় প্রশ্ন, যদি আপনি ব্যবহার করতে পারবেন না ls
সঙ্গে xargs -0
কারণ ম নাল Bute আউটপুট বিভক্ত করে না, কিন্তু নতুন লাইন (যা BTW ফাইলের নামের মধ্যে বৈধ) সঙ্গে
-0
বিকল্প ব্যতীত জার্গেজগুলি হোয়াইটস্পেসের সমস্যায় ভুগছে।
man xargs
, echo
পরীক্ষার জন্য ব্যবহার করুন , না rm
। xargs
আমাদের শেল সীমা অতিক্রম করতে দেয় (কিছু বাফার 65K এর মধ্যে সীমাবদ্ধ, ফাইলের নামের একটি তালিকা নয়)।
xargs --show-limits
এবং আপনার সিস্টেমে যে সীমা নির্ধারণ করা হয়েছে তা আপনি দেখতে পাবেন
xargs
কারণে সাবসেলেও চালিত হয়, যদি না আপনি সক্ষম হনshopt -s lastpipe
, তবে এটি বর্তমান শেলটিতে চলবে। আপনি কোনও ভেরিয়েবল পরিবর্তন করছেন না বলে আমি মনে করি না যে এই ক্ষেত্রে সাবসিলে চালানো সমস্যা।