এটি আপনার লিনাক্স কার্নেলের সংস্করণে নির্ভর করে।
আপনার সিস্টেমে চালিয়ে যাওয়ার সীমাটি দেখতে সক্ষম হওয়া উচিত
getconf ARG_MAX
শেল দ্বারা প্রসারিত হওয়ার পরে একটি কমান্ড লাইনের সর্বাধিক সংখ্যক বাইট বলতে পারে।
লিনাক্স <2.6.23 এ, সীমাটি সাধারণত 128 কেবি হয়।
লিনাক্স> = 2.6.25 এ সীমাটি হয় 128 কেবি বা আপনার স্ট্যাকের আকারের (1/4 ulimit -s
) যেকোন বৃহত্তর is
দেখুন execve (2) man পৃষ্ঠা সব বিস্তারিত জানার জন্য।
দুর্ভাগ্যক্রমে, পাইপিং ls *.txt
সমস্যাটি ঠিক করতে যাচ্ছে না, কারণ সীমাটি অপারেটিং সিস্টেমে রয়েছে, শেল নয়।
শেলটি প্রসারিত করে *.txt
, তারপরে কল করার চেষ্টা করে
exec("ls", "a.txt", "b.txt", ...)
এবং আপনার কাছে এতগুলি ফাইলের মিল রয়েছে *.txt
যে আপনি 128 কেবি সীমা ছাড়িয়ে গেছেন।
আপনাকে এরকম কিছু করতে হবে
find . -maxdepth 1 -name "*.txt" | wc -l
পরিবর্তে.
(এবং নতুন লাইনে থাকা ফাইলের নাম সম্পর্কে শন জে গফের মন্তব্যগুলি নীচে দেখুন))
ls
আউটপুট হিসাবে বিবেচনা করা হয় , যা একটি খারাপ ধারণা, সুতরাং এটি এড়ানো ভাল avoid গণনা করার জন্য দেখুন ডিরেক্টরিতে ফাইল সংখ্যা গণনা করার সেরা উপায় কী? , একটি কৌশলপূর্ণ কাজের জন্য দেখুন কেন লুপের জন্য "তর্ক খুব দীর্ঘ" ত্রুটি বাড়ে না? ।