কমান্ড শেলে `cd` টাইপ করে আপনি যে ডিরেক্টরিতে যেতে চান সেটি প্রবেশ করার সময় "bash: cd: too many arguments" বা "zsh: cd: too many arguments" এরর কোড দেখে আপনি অবশ্যই বিভ্রান্ত হয়েছেন।
চিন্তা করবেন না। এই আর্টিকেলটি ব্যাখ্যা করবে কেন cd: too many arguments হয় এবং zsh/bash cd: too many arguments কীভাবে ফিক্স করবেন ৫টি হ্যান্ডি ফিক্সের সাথে।
Zsh/Bash: cd: too many arguments এরর কেন হয়?
সাধারণত, কমান্ড শেলটি ডিরেক্টরি সরাসরি খুলে দিতে হবে আপনি cd কমান্ড লাইন এরপর ফাইল পাথ দিলে। এটি একটি ডিরেক্টরি নাম আর্গুমেন্ট হিসেবে গ্রহণ করে এবং করেন্ট শেল এনভায়রনমেন্টের ওয়ার্কিং ডিরেক্টরিটি প্রদত্ত ডিরেক্টরির সাথে রিপ্লেস করে।
যদি কোনো আর্গুমেন্ট দেওয়া না থাকে, তবে cd কমান্ড এইভাবে আচরণ করে যেন HOME এনভায়রনমেন্ট ভেরিয়েবলে নাম করা ডিরেক্টরিটি আর্গুমেন্ট হিসেবে স্পেসিফাই করা হয়েছে। কিন্তু যখন আপনি ইউনিক্স শেলে স্পেস বা স্পেশ্যাল ক্যারেক্টার ধারণকারী ডিরেক্টরির নাম ইনপুট করেন, তবে এটি সেগুলো একাধিক আর্গুমেন্ট হিসেবে চিনতে পারে। তাই এটি আপনার bash কমান্ড শেলে cd: too many arguments এরর কোড থ্রো করে।
নোট: আপনি যদি zsh কমান্ড শেল চালান, তবে আপনি "cd: string not in pwd:" এরর পেতে পারেন যখন আপনি স্পেস ধারণকারী পাথে cd করার চেষ্টা করেন।

কিছু লোক জানতে চায় কি ইউনিক্স শেল একবারে একাধিক ডিরেক্টরিতে যেতে পারে, উত্তর হলো একদম না। আপনি যদি একাধিক ডিরেক্টরিতে যেতে চান, তবে আপনাকে cd কমান্ড একে একে রান করতে হবে।
এই পোস্টটি কেন too many arguments হয় সে সম্পর্কে আপনার সন্দূর দূর করতে পারলে, নিচের শেয়ার বাটনে ক্লিক করুন আরও মানুষের সাহায্য করতে!
bash: cd: too many arguments এবং zsh: cd: string not in pwd: কীভাবে ফিক্স করবেন?
উপর আলোচনা করা হয়েছে, ইউনিক্স শেল স্পেস এবং স্পেশ্যাল ক্যারেক্টার ধারণকারী আপনার ডিরেক্টরিতে একাধিক আর্গুমেন্ট রিকগনাইজ করে, তাই এটি ডিরেক্টরিতে সইচ করতে ব্যর্থ হয়। এমন কেস ফেস করলে, আপনাকে পড়তে থাকুন এবং এই আর্টিকেলটি আপনাকে cd কে সঠিকভাবে কাজ করার জন্য চারটি সহজ সমাধান উপস্থাপন করবে।
সমাধান ১: ডিরেক্টরির নাম ডাবল কোটে র্যাপ করুন
cd কমান্ডকে স্পেশালাইজড ডিরেক্টরিতে সফলভাবে সইচ করার জন্য একটি সহজ সমাধান হলো ডিরেক্টরির নাম ডাবল কোটে র্যাপ করা।
- আপনার কম্পিউটারে টার্মিনাল লঞ্চ করুন।
- cd টাইপ করুন এবং তারপর ডাবল কোট সিম্বল টাইপ করুন।
- স্পেস বা স্পেশ্যাল ক্যারেক্টার ধারণকারী ফাইল পাথটি ডাবল কোটের ভিতরে ইনপুট করুন।
- cd "my new folder"
- Enter/Return কী চাপুন cd কমান্ড লাইন রান করতে এবং তারপর আপনি দেখতে পাবেন ডিরেক্টরি আপনার ইনপুট করা ডিরেক্টরিতে চেঞ্জ হয়েছে, যেখানে আপনাকে নতুন ডিরেক্টরিতে যেকোনো ফर्दার অ্যাকশন করার অনুমতি থাকবে।

পাশাপাশি, আপনি ডিরেক্টরির পুরো পাথ বা শুধু স্পেস বা স্পেশ্যাল ক্যারেক্টার ধারণকারী পাথ কম্পোনেন্টগুলো ডাবল কোটে র্যাপ করতে পারেন।
সমাধান ২: স্পেস এড়াতে ব্যাকস্ল্যাশ ব্যবহার করুন
ডিরেক্টরিতে যদি কোনো স্পেস থাকে, তবে ইউনিক্স শেলে cd কমান্ড লাইন সেগুলো দুটি বা অধিক আর্গুমেন্টে ভাগ করে দেবে। তাই, এখানে ব্যাকস্ল্যাশ আসে স্পেস এস্কেপ করার জন্য, যা কমান্ড শেলকে স্পেসকে একটি লিটারেল স্পেস ক্যারেক্টার হিসেবে বুঝতে বাধ্য করে কিন্তু আর্গুমেন্টের মাঝপথে সেপারেটর হিসেবে না।
- আপনার মেশিনে টার্মিনাল রান করুন।
- cd টাইপ করুন এবং আপনি যে ডিরেক্টরিতে সইচ করতে চান সেটি ফলো করুন।
- ডিরেক্টরির নামের স্পেসগুলোতে ব্যাকস্ল্যাশ যোগ করুন। মনে রাখবেন যে একটি ফরোয়ার্ড স্ল্যাশ পাথ কম্পোনেন্টের মাঝপথে সেপারেটর হিসেবে কাজ করে এবং ব্যাকস্ল্যাশ একটি স্পেস-এস্কেপিং টুলসেট হিসেবে ফাংশন করে।
- cd desktop/my\ new\ folder
- Return/Enter কী চাপুন cd কে আপনাকে একটি নতুন ডিরেক্টরিতে নিয়ে যেতে দিতে।

সমাধান ৩: অটো-কমপ্লিশনের জন্য Tab কী ব্যবহার করুন
উইন্ডোজ, লিনাক্স, এবং macOS-এ কমান্ড লাইন প্রোগ্রামগুলোতে, আপনি Tab কী দিয়ে দেওয়া কমান্ডগুলো অটোমেটিক্যালি কমপ্লিট করতে পারেন। উদাহরণস্বরূপ, ইউনিক্স কমান্ড প্রম্পটে, এটি একটি ভালো উপায় হতে পারে একটি ভিন্ন ডিরেক্টরিতে দ্রুত সইচ করতে।
- আপনার ডিভাইসে কমান্ড শেল খুলুন।
- আপনি যে পাথে যেতে চান সেটি টাইপ করা শুরু করুন।
- আপনার কীবোর্ডের Tab কী চাপুন এর অটো-কমপ্লিশন ফাংশন সরাসরি ব্যবহার করতে।
আপনার যদি একই টাইপের নামवाले একাধিক ফোল্ডার থাকে, তবে আপনাকে নামের প্রথম কয়েকটি ক্যারেক্টার টাইপ করতে হবে সেটি আইডেন্টিফাই করতে যা আপনি cd করতে চান। অটো-কমপ্লিশন যদি ফেইল করে, তবে এটি ইঙ্গিত দেয় যে স্পেসিফাইড পাথ অস্তিত্বে নেই।
সমাধান ৪: গন্তব্য ডিরেক্টরিতে আপনার টার্মিনাল খুলুন
যেহেতু আপনি কমান্ড শেলে ডিরেক্টরি খোলার লক্ষ্য রাখেন ফরদার বিজনেসের জন্য, cd-এ আটকে থাকবেন না, দয়া করে। গন্তব্য ডিরেক্টরিতে একটি টার্মিনাল খোলার একই ইফেক্ট থাকে।
আপনি যদি লিনাক্স চালান, তবে নিচের ধাপে ধাপে ইনস্ট্রাকশন পড়ুন:
- এক্সপ্লোরারে ডিরেক্টরি খুলুন।
- রাইট-ক্লিক করুন এবং Open in Terminal সিলেক্ট করুন এবং তারপর কমান্ড শেলে ফিরে যান এগিয়ে যেতে।
আপনি যদি একটি macOS ডিভাইস চালান, তবে নিচে উললিখিত ধাপগুলো অনুসরণ করুন:
- একটি ফাইন্ডার উইন্ডো খুলুন এবং ফোল্ডারে নেভিগেট করুন। আপনি যদি ফাইন্ডার উইন্ডোর নিচে পাথবার না দেখেন, তবে View -> Show Path Bar বেছে নিন।
- আপনি যে ফোল্ডার ডিরেক্টরিতে প্রবেশ করতে চান সেটি রাইট-ক্লিক করুন এবং New Terminal at Folder বেছে নিন।

তখন আপনি দেখতে পাবেন টার্মিনাল আপনার কাজ কর रहे ডিরেক্টরিতে সইচ করেছে।
সমাধান ৫: ফোল্ডারটি টার্মিনাল উইন্ডোতে ড্র্যাগ করুন
উপরোক্ত সকল সমাধান আপনার পছন্দে না হলে, চেষ্টা করার যোগ্য চূড়ান্ত সমাধান হলো সিম্পলি ফোল্ডার ডিরেক্টরিটি আপনার টার্মিনাল উইন্ডোতে ড্র্যাগ করা। কেবল টার্মিনাল লঞ্চ করুন এবং লेफ্ট-ক্লিক করে ফোল্ডার ডিরেক্টরিটি উইন্ডোতে ড্র্যাগ করুন, তারপর আপনি নতুন ডিরেক্টরি পাথে থাকবেন।
আপনি যদি সফলভাবে bash: cd: too many arguments/zsh: cd: string not in pwd: সমাধান করতে পারেন, তবে কেন এই আর্টিকেলটি শেয়ার করবেন না আরও মানুষের সাহায্য করতে?
বোনাস টিপ: cd কীভাবে সেরা ব্যবহার করবেন?
আপনি যদি কমান্ড শেলে বিগিনার হন বা টার্মিনালের প্রতি বড় জিজ্ঞাসা ও আগ্রহ থাকে, তবে এই আর্টিকেলে আলোচিত বিভিন্ন cd কমান্ড লাইনগুলো অবশ্যই উপকারী হবে। একবার দ্রুত এখানে দেখুন:
- cd: cd নিজে বা cd ~ সবসময় ইউজারকে তাদের হোম ডিরেক্টরিতে রাখে।
- cd .: cd . ইউজারকে একই ডিরেক্টরিতে রাখে যেখানে সে বর্তমানে আছে (অর্থাৎ করেন্ট ডিরেক্টরি চেঞ্জ হয় না)। এটি উপকারী হতে পারে যদি ইউজার শেলের ইন্টারনাল কোড 그들이 যে ডিরেক্টরিতে আছে সেটি রিক্রিয়েট হলে ডিল করতে না পারে। cd . রান করলে তাদের শেল রিক্রিয়েটেড ডিরেক্টরিতে প্লেস হবে।
- cd ~username: cd ~ username ইউজারকে username-এর হোম ডিরেক্টরিতে রাখে।
- cd dir (বिना /): cd dir ইউজারকে একটি সাবডিরেক্টরিতে রাখে; উদাহরণস্বরূপ, যদি তারা /usr-এ থাকে, cd bin টাইপ করলে সেদের /usr/bin-এ রাখবে, যখন cd /bin সেদের /bin-এ রাখবে।
- cd ..: cd.. ইউজারকে এক লেভেল আপ ডিরেক্টরিতে নিয়ে যাবে। তাই, যদি তারা /usr/bin/tmp-এ থাকে, cd .. সেদের /usr/bin-এ নিয়ে যাবে, যখন cd ../.. সেদের /usr-এ নিয়ে যাবে (অর্থাৎ দুটি লেভেল আপ)। ইউজার এই ইনডাইরেকশন ব্যবহার করে সাবডিরেক্টরিও অ্যাক্সেস করতে পারেন। তাই, /usr/bin/tmp থেকে, তারা cd ../../local ব্যবহার করে /usr/local-এ যেতে পারেন।
- cd -: cd - ইউজারকে প্রিভিয়াস ডিরেক্টরিতে সইচ করবে। উদাহরণস্বরূপ, যদি তারা /usr/bin/tmp-এ থাকে, এবং /etc-এ যায়, তবে তারা cd - টাইপ করে /usr/bin/tmp-এ ফিরে যেতে পারেন। ইউজার pushd এবং popd ছাড়া দুটি ডিরেক্টরির মধ্যে টগল ব্যাক অ্যান্ড ফורת করতে পারেন।
সমাপন
cd: too many arguments এরর আপনার কল্পনার চেয়ে কম ভয়ংকর কারণ এই আর্টিকেলটি ৫টি সহজ সমাধান দিয়ে এটিকে মুছে ফেলার উপায় দেয়। আপনি এক বা একাধিক ট্রাই করতে পারেন আপনার পছন্দ অনুযায়ী cd ব্যবহার করে রিলেটিভ ডিরেক্টরিতে প্রবেশ করতে। তার উপরে, আপনি cd কমান্ড লাইন আরও ভালো ব্যবহার করার চমৎকার কনটেক্সট এই আর্টিকেলে পাবেন।

পড়ুন কেন আপনার ম্যাক Zsh permission denied পাচ্ছে এবং ম্যাক পারমিশন ডেনাইড এরর কীভাবে ফিক্স করবেন, ম্যাকএ পারমিশন চেঞ্জ করা সহিত।