ঠিক আছে, ডেনিজেনস তাই আমি বেশ কিছু সময়ের জন্য কমান্ড লাইনের দৈর্ঘ্যের সীমাটিকে সুসমাচার হিসাবে গ্রহণ করেছি। তাহলে, কারও অনুমান নিয়ে কী করব? স্বাভাবিকভাবেই- এগুলি পরীক্ষা করে দেখুন।
আমার কাছে আমার ফেডোরা 22 মেশিন রয়েছে (অর্থাত: ব্যাশ 4 সহ লিনাক্স)। আমি এটির মধ্যে 18 টি অক্ষরের দীর্ঘ প্রতিটি 500,000 ইনোড (ফাইল) দিয়ে একটি ডিরেক্টরি তৈরি করেছি। কমান্ড লাইনের দৈর্ঘ্য 9,500,000 টি অক্ষর। এইভাবে তৈরি:
seq 1 500000 | while read digit; do
touch $(printf "abigfilename%06d\n" $digit);
done
এবং আমরা দ্রষ্টব্য:
$ getconf ARG_MAX
2097152
নোট তবে আমি এটি করতে পারেন:
$ echo * > /dev/null
তবে এটি ব্যর্থ:
$ /bin/echo * > /dev/null
bash: /bin/echo: Argument list too long
আমি লুপের জন্য চালাতে পারি:
$ for f in *; do :; done
এটি অন্য শেল অন্তর্নির্মিত।
রাজ্যগুলির জন্য ডকুমেন্টেশনেরARG_MAX
যত্ন সহকারে পড়া, নির্বাহী কার্যগুলির পক্ষে যুক্তির সর্বাধিক দৈর্ঘ্য । এর অর্থ: কল না করে exec
কোনও ARG_MAX
সীমাবদ্ধতা নেই। সুতরাং এটি শেল বিল্টিনগুলি কেন সীমাবদ্ধ নয় তা ব্যাখ্যা করবে ARG_MAX
।
এবং প্রকৃতপক্ষে, আমি ls
যদি আমার যুক্তি তালিকার 109948 ফাইল দীর্ঘ বা প্রায় 2,089,000 অক্ষর (দিতে বা নিতে পারি) তবে আমি আমার ডিরেক্টরিটি করতে পারি। একবার আমি আরও একটি 18-চরিত্রের ফাইলের নাম ফাইল যুক্ত করি, তবুও আমি একটি দীর্ঘ ত্রুটি পেয়েছি । তাই ARG_MAX
বিজ্ঞাপনে হিসেবে কাজ হয়: Exec বেশি ব্যর্থ হচ্ছে ARG_MAX
সহ তালিকা- যুক্তি উপর অক্ষর, এটা উল্লেখ করা উচিত, পরিবেশ ডেটা।