রুট ডিরেক্টরিটি কেন / চিহ্ন দ্বারা চিহ্নিত করা হয়?


95

আমি গুগলে এ সম্পর্কে কিছু গবেষণা করেছি, তবে ফলাফল মেঘলা ছিল। /রুট ডিরেক্টরিটি নির্দেশ করতে কেন সাইন ব্যবহার করা হয়। এর পিছনে কি কোনও শক্ত কারণ আছে?


12
কারণটি হ'ল '/' ডিরেক্টরি বিভাজক এবং মূল ডিরেক্টরি নিজেই নামহীন, যেমন খালি নামের শেষে সংযোজনের cd /homeসমতুল্য সেই ডিরেক্টরিতে অ্যাক্সেস সরবরাহ করে। cd /home//
এসএফ

2
আপনি কি এটি পড়েছেন: en.wikedia.org/wiki/Root_directory ?
কেভডোগ 777

11
এটি নামহীন, কারণ যখন ভিতর থেকে দেখা হয় তখন এটি দৃশ্যমান ডিরেক্টরি গাছের সীমানা। দৃশ্যমান ডিরেক্টরি শ্রেণিবিন্যাস কেবল বৃহত্তর শ্রেণিবিন্যাসের মধ্যে কেবল একটি সাবট্রি হতে পারে যেমন পথের নাম অনুসন্ধানগুলি যখন কোনও chroot()কলের মাধ্যমে সংশোধন করা হয় তবে যখন ভিতর থেকে দেখা হয় তখন এটি বিমূর্ত করা হয়।
থমাস নাইম্যান

14
কারণ খালি স্ট্রিংটি একটি ভয়াবহ পছন্দ হত!
বাকুরিউ

3
যা উল্লেখ করা হয়েছে তা ছাড়াও, / টি নির্দেশ করতে মূল ব্যবহার করে নিখুঁত এবং আপেক্ষিক পথের নামের ক্ষেত্রে কিছু নির্দিষ্ট পার্শ্ব প্রতিক্রিয়া দেয় gives /some/dirসর্বদা মানে (root)/some/dirযখন some/dirসবসময় সাম্প্রতিক কাজ করা আপেক্ষিক হয়। এই নীতিটি ওয়েব-ইউআরএল ব্যবহারেও স্থানান্তরযোগ্য।
টোর ভ্যালামো

উত্তর:


108

ফরোয়ার্ড স্ল্যাশ /delimiting চরিত্র যা ডিরেক্টরি আলাদা হয় পাথ ইউনিক্সের মত অপারেটিং সিস্টেমে। এই চরিত্রটি ১৯ 1970০ এর দশকে কোনও এককালে নির্বাচিত হয়েছিল বলে মনে হয় এবং কৌতূহলীয় সূত্র অনুসারে , কারণগুলি সম্পর্কিত হতে পারে যে ইউনিক্সের পূর্বসূরী, মাল্টিক্স অপারেটিং সিস্টেম, >চরিত্রটিকে পৃথক পৃথক হিসাবে ব্যবহার করেছিল , তবে ইউনিক্সের ডিজাইনাররা ইতিমধ্যে সংরক্ষিত ছিল অক্ষরগুলি >এবং <মাল্টি-লেভেল ফাইল সিস্টেম থাকার আগে শেল কমান্ড লাইনে I / O পুনঃনির্দেশটি ভালভাবে চিহ্নিত করতে। সুতরাং যখন ফাইল সিস্টেমটি ডিজাইনের সময় এলো, তাদেরকে পথের নাম উপাদান পৃথকীকরণের জন্য অন্য একটি চরিত্র খুঁজে বের করতে হবে।

এখানে লক্ষণীয় একটি বিষয় হ'ল ১৯ 1970০-এর দশকে লার্ন-সিগেলার এডিএম -3 এ টার্মিনালটিতে সাধারণ ব্যবহার, যা অন্যান্য বিষয়গুলির মধ্যে থেকে হোম ডিরেক্টরিটি উপস্থাপনের জন্য চরিত্রটি ব্যবহারের অনুশীলন ~শুরু হয় , /কীটির পাশে >কী রয়েছে:

লার্ন-সিগেলার এডিএম -3 এ টার্মিনালের কীবোর্ড লেআউট

রুট ডিরেক্টরিটি কেন একটি একক দ্বারা চিহ্নিত করা হয় /, এটি সম্ভবত একটি ডিরেক্টরি যা ডিরেক্টরি ডিরেক্টরি হায়ারার্কির শীর্ষ স্তরের ডিরেক্টরি এবং অন্য ডিরেক্টরিগুলি এর নীচে থাকতে পারে, এটি সম্ভবত সম্ভবত প্রভাবিত হয় না ' মূল ডিরেক্টরিটির বাইরে যে কোনও কিছু উল্লেখ করার কারণ নয়। একইভাবে ডিরেক্টরিতে প্রবেশের কোনও নাম নেই, কারণ এটি দৃশ্যমান ডিরেক্টরি গাছের সীমানা।


2
"অন্য ডিরেক্টরিগুলি এর নীচে থাকতে পারে, তবে মূল ডিরেক্টরিগুলির বাইরে কোনও কিছু উল্লেখ করার কারণ হয় না।" আমি এটা বুঝতে পারি না। "নীচে" আপনি কোন দিকটি বোঝাতে চাইছেন তা আমি নিশ্চিত নই, তবে শ্রেণিবিন্যাসের উপরে "বাইরের" কিছুই নেই/ । ইউনিক্স ফাইল সিস্টেমগুলি একটি একক গাছ, বিভিন্ন ড্রাইভের মাউন্ট পয়েন্ট সহ।
অ্যালেক্সিস

4
এছাড়াও আছে chrootএবং এরকম - আপনি নতুন মূলের বাইরে কোনও কিছু অ্যাক্সেস করতে পারবেন না , তবে এর অর্থ এই নয় যে তারা সেখানে নেই।
ববসন

1
@ গিলস, ড্রাইভের শারীরিক অবস্থান নিয়ে প্রশ্ন নেই। যে কোনও ডিস্ক বিভাজনটি সেই দিক থেকে মূল বিভাজনের বাইরে থাকে, তবে এটি ফাইল সিস্টেমের স্তরক্রমের মূলের নীচে মাউন্ট করা হয় । ববসন, ক্রুট সম্পর্কে ভাল বক্তব্য, তবে থমাস যা বলেছিলেন তা এটির সাথে খাপ খায় না: ক্রুটের পরে সিস্টেমের মূলের বাইরে যাওয়ার জন্য "সাধারণত কোনও কারণ নেই"; এটা অসম্ভব. ইউনিক্স তারিখে, সবকিছু ফাইলসিস্টেম শিকড় কম বয়সী।
অ্যালেক্সিস

1
"ক্রুটের পরে সিস্টেমের মূলের বাইরে যাওয়ার" কারণগুলির পক্ষে সাধারণত কোনও কারণ নেই "; এটি অসম্ভব।" এটি সাধারণ ভুল। সেই সময়টি chroot()চালু হয়েছিল, এর কোনও কারাগারের মতো সম্পত্তি ছিল না , এটি কেবল নামকরণের রেজোলিউশনকেই প্রভাবিত করেছিল। আজও, সুবিধাপ্রাপ্ত প্রক্রিয়াগুলি ডিজাইন অনুসারে ক্রুটের বাইরে যেতে পারে । আমিও উল্লিখিত একটি ইন আগের মন্তব্যchroot()
থমাস নাইম্যান

4
আইআইআরসি, মাল্টিক্স কনভেনশনটি কেবল >ডিরেক্টরি বিভাজক হিসাবে ব্যবহৃত হয় নি, তবে পিতামহিত ডিরেক্টরিটিও <উল্লেখ করতে পারে: <নিজে থেকে সমতুল্য ছিল .., যখন <fooসমান ছিল ../foo। আমি সর্বদা দেখতে পেলাম যে নান্দনিকভাবে আনন্দদায়ক।
মার্ক রিড

55

আমরা জানি যে এটি প্রথম শ্রেণিবদ্ধ ফাইল সিস্টেম মাল্টিক্সের জন্য ডিজাইন করা হয়েছিল । আরসি ডেলি এবং পিজি নিউম্যান দ্বারা নকশাকে "সেকেন্ডারি স্টোরেজ ফর জেনারেল-পারপোজ ফাইল সিস্টেম" এ বর্ণনা করা হয়েছে । এই ফাইল সিস্টেমের একটি প্রধান বৈশিষ্ট্য হ'ল ডিরেক্টরি হ'ল এমন একটি ফাইল যা অন্য কোনও ফাইলের মতো ডিরেক্টরিতে অন্তর্ভুক্ত থাকতে পারে। ফাইল কাঠামো একটি গাছ গঠন করে, যেখানে লিফ-নোডের সবগুলিই ডিরেক্টরি are গাছের মূল সর্বদা একটি ডিরেক্টরি। প্রতিটি ফাইলের একটি নাম ( প্রবেশের নাম ) থাকে যা তার মূল ডিরেক্টরিতে অনন্য। রুট ডিরেক্টরিটির কোনও নাম নেই কারণ এটি অন্য ডিরেক্টরিতে অন্তর্ভুক্ত নেই।

কোনও ফাইল নির্ধারণ করার জন্য, আপনাকে গাছের গোড়া থেকে পথটি বর্ণনা করতে হবে। মাল্টিক্স পথের নামের জন্য একটি প্রাকৃতিক বাক্য গঠন গ্রহণ করেছে যেখানে যদি Pকোনও ডিরেক্টরিতে যাওয়ার পথ এবং Fকোনও ফাইলের নাম হয়, তবে সেই ডিরেক্টরিটির ভিতরে থাকা ফাইলটির বাক্য গঠন যা তার পথ ।P>FFP

সেই সময়গুলির জন্য যখন আপনি নিজেকে ডিরেক্টরিতে বোঝাতে চান না, মাল্টিক্সের ডিরেক্টরি ডিরেক্টরি কাজ করার ধারণা ছিল । কোনও ডিরেক্টরি নির্দেশ নয় এমন একটি খালি ফাইল নাম ওয়ার্কিং ডিরেক্টরিতে একটি ফাইল হিসাবে ব্যাখ্যা করা হয়।

এই নিয়মগুলির সংমিশ্রণটি, fooওয়ার্কিং ডিরেক্টরিতে থাকা একটি ফাইল; ওয়ার্কিং ডিরেক্টরিের foo>barচাইল্ড ডিরেক্টরিতে থাকা একটি ফাইল fooএবং আরও অনেক কিছু। এই নিয়মগুলি আপেক্ষিক পাথগুলি বর্ণনা করে তবে রুট ডিরেক্টরি থেকে শুরু করে পরম পাথ তৈরি করতে একটি পরিপূরক নিয়ম প্রয়োজন। বাম থেকে ডানে কোনও পথের নামটি পড়ার সাথে গাছের পাতাগুলির শিকড় থেকে সরানোর সাথে মিল রেখে, শিকড়টিকে পথের নামের বামে একটি বিশেষ চিহ্নিতকারী দ্বারা নির্দেশিত করা উচিত। যেহেতু ফাইলের নাম কখনই খালি থাকে না (কারণ এটি প্রায়শই বিভ্রান্তিকর হবে) তাই কোনও প্রাসঙ্গিক পথের নামটি চরিত্রের সাথে আরম্ভ হয় না >, যা এটিকে পরম পথের নামের জন্য একটি সুবিধাজনক চিহ্নিতকারী করে তোলে। এভাবে >fooফাইল বলা হয় fooরুট ডিরেক্টরি এ, >foo>barফাইল নামক barডিরেক্টরির মধ্যে নামকfooরুট ডিরেক্টরিতে এবং অন্যান্য। এটি মূল ডিরেক্টরিটি ছেড়ে দেয় যা খালি স্ট্রিং হতে পারে; যাইহোক, এটা প্রায়ই একটি পথনাম যেমন খালি স্ট্রিং ব্যবহার করতে সুবিধাজনক না, তাই এর পরিবর্তে এটি লিখিত পরার >, যা যোগ বেনিফিট যে একটি পথনাম পরম তার প্রথম চরিত্র করেছেন যদি এবং কেবল যদি >

ইউনিক্স মাল্টিক্স থেকে এই নকশা গ্রহণ করেছে। যেহেতু ইউনিক্স >এর কমান্ড শেলটিতে আউটপুট পুনঃনির্দেশের জন্য ইতিমধ্যে অক্ষরটি ব্যবহার করেছে , তাই এর ডিজাইনাররা/ পথের নামে ডিরেক্টরি পৃথক করতে আলাদা চরিত্রটি বেছে নিয়েছিল ।


11

ইউনিক্সের পাথ নামের অংশগুলিতে, কেবলমাত্র দুটি অক্ষর ব্যবহার করা যাবে না: নাল অক্ষর, যা সি (কার্নেলের ভাষা) এবং স্ল্যাশকে স্ট্রিম বন্ধ করে দেয়, যা পাথ বিভাজক হিসাবে সংরক্ষিত। তদুপরি, পাথ উপাদান খালি স্ট্রিং হতে পারে না।

সুতরাং, একটি পথের নামে আমাদের কাছে কেবল দুটি ধরণের টোকেন রয়েছে: একটি স্ল্যাশ এবং একটি উপাদান।

মনে করুন যে কোনও নতুন টোকেন যুক্ত না করেই আমরা আপেক্ষিক এবং পরম দুটি ধরণের পাথ সমর্থন করতে চাই। তদতিরিক্ত, আমরা মূল ডিরেক্টরিটি উল্লেখ করতে সক্ষম হতে চাই, যার কোনও নাম নেই (এটির কোনও নাম নেই এমন কোনও অভিভাবক নেই)।

কীভাবে আমরা কেবল স্ল্যাশ ব্যবহার করে আপেক্ষিক পাথ, পরম পাথ এবং মূল ডিরেক্টরিটি উল্লেখ করতে পারি?

কোনও ভাষা প্রসারিত করার সর্বাধিক সুস্পষ্ট উপায় (নতুন টোকেনের ভূমিকা ব্যতীত) নতুন সিনট্যাক্স তৈরি করা: অবৈধ সিনট্যাক্সযুক্ত টোকেনগুলির সংমিশ্রণগুলিকে নতুন অর্থ প্রদান করুন।

যে পাথগুলি স্ল্যাশের সাথে শুরু হয় সেগুলি অর্থবোধ করে না, সুতরাং কেন একটি অগ্রণী স্ল্যাশকে চিহ্নিতকারী হিসাবে ব্যবহার করবেন না যা নির্দেশ করে যে "এই পথটি আপেক্ষিকের চেয়ে স্থির"।

একটি পাথ যা স্ল্যাশ ছাড়া কিছুই না করে তাও অবৈধ, সুতরাং কেন এটি "রুট ডিরেক্টরি" অর্থ অর্পণ করবেন না।

এই দুটি অর্থ এক সাথে সংযুক্ত কারণ একটি নিখুঁত পাথ মূল ডিরেক্টরিতে অনুসন্ধান শুরু করে। অন্য কথায় একটি শীর্ষস্থানীয় স্ল্যাশকে অর্থ বলে মনে করা যেতে পারে:

  • রুট ডিরেক্টরিতে নেভিগেট করুন, এবং স্ল্যাশ অক্ষর গ্রাস করুন।
  • যদি পথে আরও কিছু উপাদান থাকে তবে এটি এটিকে আপেক্ষিক পথ হিসাবে প্রক্রিয়া করুন, অন্যথায় আপনি কাজ শেষ করেছেন।

তারপরে, আমরা পাশাপাশি একটি চলমান স্ল্যাশ ফেলে দিতে পারি, যার অর্থ "এই পাথটি দৃ as়ভাবে জানায় যে শেষ পাথ উপাদানটি নিয়মিত ফাইল বা অন্য কোনও ধরণের অবজেক্টের পরিবর্তে কোনও ডিরেক্টরিটির নাম: সেই ট্র্যাশিং স্ল্যাশ সেই ডিরেক্টরিটিকে একইভাবে নির্দেশ করে es নেতৃস্থানীয় স্ল্যাশ যেভাবে রুট ডিরেক্টরিটিকে বোঝায়। "

এই সমস্ত উপরের সিনট্যাক্স সহ, আমাদের এখনও একটি স্বাক্ষরযুক্ত অর্থ সহ সিনট্যাক্স রয়েছে: ডাবল স্ল্যাশ, ট্রিপল স্ল্যাশ এবং আরও অনেক কিছু।

কেন অন্য একটি টোকেন পরিচয় করিয়ে দিন এবং এটি আলাদাভাবে করবেন না। এটি সম্ভবত কারণ সাধারণভাবে ডিজাইনাররা ন্যূনতম পদ্ধতি গ্রহণ করেছে। ( আপনি যখন edকোনও ?ভুল করেন তখন সম্পাদক কেন কেবল একটি প্রদর্শন করে ?) স্ল্যাশ টাইপ করা সহজ, কোনও শিফ্টের প্রয়োজন নেই। মাত্র দুটি টোকেন ধরণের (উপাদান এবং স্ল্যাশ) সহ একটি পথের ভাষা মনে রাখা এবং ব্যবহার করা সহজ।

আরেকটি গুরুত্বপূর্ণ বিবেচনা হ'ল কেবল স্ট্রিং উপস্থাপনা ব্যবহার করে পাথের সহজ ম্যানিপুলেশনগুলি সম্ভব। উদাহরণস্বরূপ, আমরা একটি নতুন প্যারেন্ট ডিরেক্টরিতে পরম পাথগুলিকে "পুনরায় মূল" করতে পারি:

OLD_PATH=/old/path
NEW_HOME=/new/home

NEW_PATH="$NEW_HOME$OLD_PATH"  /new/home/old/path

নেতৃস্থানীয় ডলারের চিহ্ন বা অন্য যে কোনও কিছুতে আমরা যদি নিরঙ্কুশ পথগুলি নির্দেশ করে তবে এটি কাজ করবে না:

OLD_PATH=^old/path  # ^ means absolute path
NEW_HOME=^new/home

# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"

ইউনিক্স-স্টাইলের পাথগুলির সাথে ডিল করার সময় এই জাতীয় কোডিংটি এখনও কিছু ক্ষেত্রে প্রয়োজন।


8
"স্ল্যাশ টাইপ করা সহজ, কোনও শিফ্টের প্রয়োজন নেই" " সম্ভবত আপনি পুকুরের ওপারে খুব সহজেই নামতে পারেন তবে এখানে ফিনল্যান্ডে আমাদের কেবল শিফট টিপতে হবে না, পাশাপাশি সমস্ত সংখ্যাটিও সারিতে পৌঁছাতে হবে । ; পি
টমাস নাইম্যান

1
@ থমাসনাইমন যেভাবেই হোক না কেন, বিদেশি কীবোর্ড বিন্যাস সম্ভবত কেন থম্পসনের জন্য উদ্বেগের বিষয় ছিল না। স্ল্যাশটি ইউনিক্স বিকাশকারী এবং তাদের প্রাথমিক ব্যবহারকারীদের জন্য টাইপ করা সহজ ছিল।
কাজ

1
যথেষ্ট ফর্সা। যদিও আমি বেশিরভাগই ঠাট্টা করছিলাম, আমি এটি আকর্ষণীয় (এবং মাঝে মাঝে মজাদার) বলে মনে করি যে দীর্ঘ heritage তিহ্যযুক্ত সফ্টওয়্যারটিতে কিছু সমসাময়িক সমসাময়িক হার্ডওয়্যারগুলিতে কীভাবে অদ্ভুততা ব্যাখ্যা করা যেতে পারে ।
টমাস নাইম্যান

@ থমাসনম্যান হা হা, আমি অবাক হই যে, যদি বিল জয় নিজে সেই ADM-3A পৃষ্ঠায় "উদ্ধৃতি-প্রয়োজনীয়" অংশগুলিতে লগইন করে এবং আপডেট করেন, তবে কিছু "উইকিডিকহেড" এর সাথে এই মুহূর্তে প্রতিক্রিয়া জানাবে: "এই নিবন্ধটিতে মূল গবেষণা রয়েছে"। :)
কাজ

@ থমাসনম্যান, এখন আমি বিশ্বাস করি যে এখানে "প্যাডাল" কীবোর্ড রয়েছে যার মাধ্যমে আপনি /আপনার ডান পা ব্যবহার করে টাইপ করতে পারেন । ঠিক পিয়ানো বাজানোর মতো।
পেসারিয়ার 9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.