উত্তর:
মূল কারণটি সম্ভবত historicalতিহাসিক। পুরাতন, পুরানো দিনের মধ্যে ফিরে, কোন ছিল rmdir(2)
এবং mkdir(2)
সিস্টেম কল (আমরা 7th সংস্করণ ইউনিক্স নিয়ে আলোচনা করছি ™ এখানে), এবং rmdir(1)
(প্রয়োজনীয়তা) ছিলেন একজন এর SUID রুট প্রোগ্রাম যা ব্যবহার করা unlink(2)
সিস্টেম কল ডিরেক্টরি মুছে ফেলার জন্য।
Cm ম সংস্করণ ইউনিক্স ম্যানুয়ালগুলি অনলাইনে http://cm.bell-labs.com/7thEdMan এ উপলব্ধ (সর্বশেষ চেক করা 2017-04-23); এগুলি http://plan9.bell-labs.com/7thEdMan (সর্বশেষ চেক করা 2017-04-23) এও উপলব্ধ । অনলাইনে কমপক্ষে একটি বিকল্প উত্সও রয়েছে বলে মনে হচ্ছে - http://wolfram.schneider.org/bsd/7thEdManVol2/ - খণ্ড 2-তে নিবন্ধগুলির জন্য, খণ্ড 1 এ কমান্ড এবং সিস্টেম কলগুলির জন্য ফ্রিবিএসডি সাইটের লিঙ্ক সহ ।
rm
কমান্ড (একটি নিয়মিত অ এর SUID প্রোগ্রাম) প্রার্থনা rmdir(1)
খালি ডিরেক্টরি মুছে ফেলার জন্য কমান্ড। এটি নিজে করতে পারে না; যে রুট সুবিধার প্রয়োজন। সুতরাং, rmdir(1)
কমান্ডটি ( ইউনিক্স ভি 7 এর উত্স কোডের জন্য এখানে দেখুন ) খালি ডিরেক্টরিগুলি সরাতে অস্তিত্ব ছিল, এবং rm
কমান্ডটি খালি ডিরেক্টরিগুলি সরিয়ে দেয় না।
rm
ডিরেক্টরিগুলি সরাতে ব্যবহার করতে, আপনাকে -r
বিকল্পটি দিতে হবে ।
একটি প্রতিসম যুক্তিও রয়েছে। mkdir(1)
ডিরেক্টরি তৈরি করতে আপনার একটি আদেশ প্রয়োজন ; এটি rmdir(1)
পূর্বাবস্থায় ফেলার জন্য একটি আদেশ থাকা যুক্তিসঙ্গত বলে মনে হচ্ছে mkdir(1)
। প্লাস তারা (এই দিন) সহজ exercisors rmdir(2)
এবং mkdir(2)
সিস্টেম কল - হ্যাঁ, 7 ম সংস্করণ ইউনিক্স ফিরে, mkdir(1)
একটি এর SUID রুট কর্মসূচি ছিল ব্যবহার mknod(2)
একটি ডিরেক্টরি নোড এবং তৈরি থেকে কল link(2)
কল তৈরি করতে .
এবং ..
ডিরেক্টরির মধ্যে এন্ট্রি ।
fsck(1)
এক যে বেঁচে আছে।
"rm" ডিরেক্টরিতে কাজ করে না। আপনি হয় rmdir ব্যবহার করতে হবে বা পুনরাবৃত্তি মোছার জন্য -r সুইচ নির্দিষ্ট করতে হবে। কারণটি historicalতিহাসিক: unlink
এবং rmdir
এটি পৃথক সিস্টেম কল এবং ইউনিক্সের প্রথম দিক থেকেই।
rmdir(2)
বা উপস্থিত mkdir(2)
ছিল না ; ব্যবহারকারী root
ব্যবহার করতে পারে mknod(2)
একটি ডিরেক্টরি নোড এবং তৈরি থেকে কল link(2)
কল তৈরি করতে .
এবং ..
ডিরেক্টরির মধ্যে এন্ট্রি; এবং ডিরেক্টরি এন্ট্রিগুলি সরাতে কলটি root
ব্যবহার করতে পারে unlink(2)
।
এছাড়াও rmdir খালি ডিরেক্টরিগুলি সরিয়ে দেয় । আপনি যদি নিশ্চিত করতে চান যে কোনও ডিরেক্টরিতে আপনি কোনও অতিরিক্ত ফাইল মুছবেন না, তবে এটির rmdir
চেয়েও বেশি সুরক্ষিত rm -r
(আপনি যদি আরএমএসের মতো নাম না রাখেন তবে আপনাকে যা মুছতে হবে তা নিশ্চিত করতে হবে , যেমন alias rm='rm -i'
~ / .bashrc বা আপনি যা ব্যবহার করছেন তা )।
এছাড়াও, rmdir
গ্লোব্বিং (ওয়াইল্ডকার্ড) এক্সপ্রেশন সহ খালি ডিরেক্টরিগুলি সরানো সহজ করে তোলে। উদাহরণস্বরূপ, /tmp
সামগ্রীগুলির সাথে কোনও ফাইল বা ডিরেক্টরি স্পর্শ না করে সমস্ত খালি ডিরেক্টরি মুছে ফেলা :
cd /tmp ; rmdir *
rmdir /tmp/*
। তাহলে /tmp
ডিরেক্টরির সত্যিই বড়, এই নাম প্রতি অতিরিক্ত পাঁচটি অক্ষর কারণে আর্গুমেন্ট জন্য একটু দ্রুততর স্থান ফুরিয়েছে পারে, কিন্তু প্রয়োজন হয় না cd
ডিরেক্টরি অনুক্রমের প্রায় আপনি চলন্ত। rmdir /tmp/* 2>/dev/null
ত্রুটি বার্তাগুলি দেখা এড়ানো বিবেচনা করাও মূল্যবান (সাধারণত প্রচুর পরিমাণে উপস্থিত থাকবেন এবং প্রায় সমস্তই সেই কাজটির জন্য অপ্রাসঙ্গিক হবে)।