স্ল্যাশ (/) লিনাক্স মূল ডিরেক্টরিটির নামের অংশ?


46

স্ল্যাশ ( /) আসলেই কি লিনাক্স মূল ডিরেক্টরিটির নামের অংশ? বা এটি কি এটির জন্য কেবল একটি প্রতীক?

আর কি কি /etc?

হালনাগাদ

ধরুন /dev/sda2লিনাক্স মূল ডিরেক্টরিটির ব্লক ডিভাইস।

$ Sudo দ্বারা debugfs, / dev / sda2
ডিবাগগুলি 1.44.1 (24-মার্চ -2017)
debugfs:   pwd
[পিডব্লিউডি] ইনোড: ২ প্যাথ: /
[মূল] ইনোড: 2 প্যাথ: /
ডিবাগস:   স্টেট /
ইনোড: 2    প্রকার: ডিরেক্টরি     মোড: 0755 পতাকা: 0x80000
প্রজন্ম: 0 সংস্করণ: 0x00000000: 00000077
ব্যবহারকারী: 0 দল: 0 প্রকল্প: 0 আকার: 4096
এসিএল ফাইল করুন: 0
লিঙ্কগুলি: 25 ব্লককাউন্ট: 8
খণ্ড: ঠিকানা: 0 সংখ্যা: 0 আকার: 0
 সিটাইম: 0x5b13c9f1: 3f017990 - সূর্য জুন 3 15:28:57 2018
 এটাইম: 0x5b13ca0f: 3b3ee380 - সূর্য জুন 3 15:29:27 2018
 এমটাইম: 0x5b13c9f1: 3f017990 - সূর্য জুন 3 15:28:57 2018
crটাইম: 0x5aad1843: 00000000 - শনিবার মার্চ 17 16:59:39 2018
অতিরিক্ত ইনোড ক্ষেত্রগুলির আকার: 32
এক্সটেন্টের:
(0): 9249

সুতরাং সেখানে একটি ডিরেক্টরি আছে, ইনোড # 2, তবে এটির কোনও নাম নেই।


1
আপনার সাম্প্রতিক আপডেট সম্পর্কে কিছু debugfsআউটপুট দেখাচ্ছে Regarding এটি কীভাবে প্রশ্নটি পরিবর্তিত করতে পারে তা আপনি পরিষ্কার করতে পারেন?
কুসালানন্দ

এটা না। আমি কেবল উত্তরগুলি সম্পূর্ণ করতে চেয়েছিলাম। তবে আমি আর একটি যুক্ত করতে চাইনি। সুতরাং আমি এটি আপডেট করেছি। আপনি যদি নিজের উত্তরে থিজ লাইন রাখতে পারেন তবে সেগুলি মুছে ফেলা হবে
mlibre

উত্তর:


61

POSIX.1-2-2008 মান বলে

একটি একক সমন্বিত একটি পাথনাম /প্রক্রিয়াটির মূল ডিরেক্টরিতে সমাধান করবে। একটি নাল পথের নামটি সফলভাবে সমাধান করা হবে না।

স্ট্যান্ডার্ডটি আরও ফাইলের নাম এবং পাথের নামের মধ্যে একটি পার্থক্য তৈরি করে । /মূল ডিরেক্টরিটির পাথের নাম। ডিরেক্টরিটির নাম "মূল ডিরেক্টরি", তবে ফাইল সিস্টেমে এটি নামহীন, এর কোনও ফাইল নাম নেই। যদি এটির একটি ফাইল নাম থাকে তবে সেই নামটি মূল ডিরেক্টরিতে উপরের ডিরেক্টরিতে ডিরেক্টরি প্রবেশের তালিকা হবে এবং এরূপ কোনও ডিরেক্টরি নেই।

চরিত্রটি /কোনও ফাইল নামের অংশ হতে পারে না কারণ এটি পথ বিভাজক।

স্বচ্ছতার জন্য: মূল ডিরেক্টরিটির নাম/ নয় , তবে এটির পথ , এর পথের নাম

/etcঅন্য পথের নাম। এটি etcডিরেক্টরিতে পরম পথের নাম । সেই পথে ডিরেক্টরিটির নাম etc(এটির ফাইলের নাম etc)।

/usr/local/bin/curlএর পথনাম হয় curlএকই ভাবে যে এক্সিকিউটেবল ফাইল /etcএর পথনাম হয় etcনির্দেশিকা।


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

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

আমি এটিও লক্ষ্য করেছি যে /প্রতি-প্রক্রিয়া মূলের দিক দিয়ে সংজ্ঞায়িত করা হয়েছে তবে আমি জানতাম না যে ইনোডটি chrootঅগত্যা 2 নয় Very খুব আকর্ষণীয় সত্য। এটি অধিকারযুক্ত /কার্নেল প্রক্রিয়াগুলির জন্য ডিরেক্টরি কী তাও একটি প্রশ্ন উত্থাপন করে। তার অর্থ কি কেবলমাত্র ব্যবহারকারী-স্থান প্রক্রিয়াগুলির /সাথে তারা সংযুক্ত রয়েছে?
সের্গেই কলডিয়াজন্য

37

স্ল্যাশ একটি বিভাজক ; ডিরেক্টরি নামগুলি পৃথককারীকে অন্তর্ভুক্ত করে না, তবে পুরো পথের নামগুলিতে পৃথককারী অন্তর্ভুক্ত রয়েছে।

সুতরাং "মূল স্তর" / এর কোনও নাম নেই । বেশিরভাগ ইউনিক্সের মতো সিস্টেমে এটি একটি বিশেষ ক্ষেত্রে হিসাবে বিবেচনা করা হয় .এবং ..(যদিও অবশ্যই মূল স্তরে দুজনের মধ্যে কোনও পার্থক্য নেই)।

নামকরণ পৃথক হতে পারে। POSIX.1-2017, উদাহরণস্বরূপ, কিছু সাধারণভাবে ব্যবহৃত সংজ্ঞাগুলি তালিকাভুক্ত করে :

  • ৩.২ সম্পূর্ণ পথের নাম

    একক বা দুটিরও বেশি <slash>অক্ষর দিয়ে শুরু হওয়া একটি পাথের নাম ; পথের নামও দেখুন ।

  • 3.271 পথের নাম

    একটি স্ট্রিং যা কোনও ফাইল সনাক্ত করতে ব্যবহৃত হয়। POSIX.1-2-2008 এর প্রসঙ্গে, একটি পথের নামটি termin PATH_MAX} বাইটের মধ্যে সীমাবদ্ধ হতে পারে, নাল বাইট সমাপ্তি সহ। এটিতে beginningচ্ছিক শুরুর <slash>অক্ষর রয়েছে, তারপরে শূন্য বা আরও বেশি ফাইলের নাম <slash>অক্ষর দ্বারা পৃথক করা হয় । একটি পাথনামে oneচ্ছিকভাবে এক বা একাধিক ট্রেলিং <slash>অক্ষর থাকতে পারে । একাধিক ধারাবাহিক <slash>অক্ষরকে <slash>ঠিক দুটি শীর্ষস্থানীয় <slash>চরিত্রের ক্ষেত্রে ব্যতীত এক হিসাবে বিবেচনা করা হয় ।

    দ্রষ্টব্য: যদি কোনও পাথনামে কেবল পোর্টেবল ফাইলনাম অক্ষর সেট ( পোর্টেবল ফাইলনাম অক্ষর সেট দেখুন ), <slash>অক্ষর এবং একটি একক সমাপ্তি থেকে অক্ষরের সাথে সম্পর্কিত বাইট থাকে<NUL>অক্ষর, পাথের নামটি সমস্ত সমর্থিত লোকেলগুলিতে একটি অক্ষরের স্ট্রিং হিসাবে ব্যবহারযোগ্য হবে; অন্যথায়, পথের নামটি কেবল একটি স্ট্রিং (অক্ষরের স্ট্রিংয়ের পরিবর্তে) হতে পারে। অতিরিক্ত হিসাবে, যেহেতু <slash>অক্ষরটির একক-বাইট এনকোডিং সমস্ত লোকেল জুড়ে একই হতে হবে এবং একাধিক বাইট অক্ষরের মধ্যে না ঘটে তাই <slash>পাথের নামের মধ্যে একটি অক্ষরের উল্লেখগুলি সঠিকভাবে সংজ্ঞায়িত করা হয় এমনকি যখন পথের নামটি একটি অক্ষর না হয় স্ট্রিং। তবে এই সম্পত্তিটি পোর্টেবল ফাইলনাম অক্ষর সেটের মধ্যে বাকী অক্ষরের জন্য অগত্যা হোল্ড করে না।

  • ৩.২72২ পাথনাম কম্পোনেন্ট

    ফাইলনামে ফাইলের নাম দেখুন ।

  • 3.170 ফাইলের নাম

    {NAME_MAX}কোনও ফাইলের নামকরণ করতে 1 থেকে বাইট সমন্বিত বাইটের ক্রম । নামটি রচনা করা বাইটগুলিতে অক্ষর <NUL>বা <slash>অক্ষর থাকবে না । কোনও পথের নামের প্রসঙ্গে, প্রতিটি ফাইলের নাম একটি <slash>বা একটি <NUL>অক্ষর অনুসরণ করবে ; অন্য কোথাও, একটি <NUL>অক্ষর অনুসারে একটি ফাইলের নাম একটি স্ট্রিং তৈরি করে (তবে অগত্যা একটি অক্ষরের স্ট্রিং নয়)। ফাইলের নামগুলি ডট এবং এর dot-dotবিশেষ অর্থ রয়েছে। একটি ফাইলের নাম কখনও কখনও "পথের নাম উপাদান" হিসাবে উল্লেখ করা হয়। পাঠ নামও দেখুন ।

সুতরাং ... আপনি যদি স্পষ্টতা খুঁজছেন , এটি আপনার প্রথম স্টপ নাও হতে পারে। এই ইউনিক্স কনসেপ্ট পৃষ্ঠা হিসাবে টিউটোরিয়ালগুলি সহায়ক, উদাহরণস্বরূপ, নির্দেশিত যে "সম্পূর্ণ পথের নাম" "পরম" পথের নামটির সমার্থক।


3
নিতপিক: ডট এবং ডট-ডট ফাইলের নাম, পথের নাম নয়। আসলে, POSIX মান জানতে আগ্রহী তৈয়ার হয়েছে ", বিশেষ স্থান ধার্য রুট ডিরেক্টরি এ, ডট ডট পারে রুট ডিরেক্টরিটি নিজেই পড়ুন।" (আমার জোর)
কুসালানন্দ

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

এটি পসিএক্স-এ জবাব দেওয়া হয়েছে : এর শুরুর পরে zeroচ্ছিক শুরুর অক্ষর রয়েছে, তারপরে শূন্য বা আরও বেশি ফাইলের নাম অক্ষর দ্বারা পৃথক করা হয়।
থমাস ডিকি

@ কুসালানন্দ আপনার জোরের জন্য নির্দিষ্ট যুক্তি পর্যালোচনা করুন। মে বৈশিষ্ট সংজ্ঞায়িত মধ্যে বাস্তবায়ন পরীক্ষার বিষয়ে জামিন একটি স্পষ্ট বিবৃতি হল। যেখানে ব্যবহৃত হতে পারে , অনুমানগুলি সংজ্ঞায়িত আচরণের কোনও উদীয়মান আনুগত্যের আশ্বাস দেয়। অন্য কথায়, কোন বাস্তবায়ন করতে পারে উপর নির্ভর ../লিঙ্ক /
মাইকজার্ভ

19

ইউনিক্সে, ফাইল (এবং ডিরেক্টরিগুলি কেবল ফাইল) এর "নাম" থাকে না। লিঙ্কগুলির নাম রয়েছে, লিঙ্কগুলির একটি ডিরেক্টরিতে প্রবেশের তালিকা রয়েছে যা ফাইলগুলির নাম ম্যাপ করে।

আপনি পারে বলছি, লিঙ্ক দিতে ফাইলগুলিতে নাম, কিন্তু মনে রাখবেন: এই বোঝা একটি ফাইল একটির বেশি নাম থাকতে পারে যে, যেহেতু এটি একাধিক লিংক থাকতে পারে।

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

সুতরাং, মূলত, মূল ডিরেক্টরিটির কোনও নাম নেই, কারণ এর উপরে কোনও ডিরেক্টরি নেই যার মধ্যে আমরা নামটি রেকর্ড করতে পারি।

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছিল, আমাদের একটি নাম এবং একটি পথ (নাম) এর মধ্যে পার্থক্য করতে হবে। মূল ডিরেক্টরিটি পথ (নাম) এর মাধ্যমে উল্লেখ করা যেতে পারে /


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

1
আমি এই বিষয়টি পছন্দ করি যে এর কোনও নাম নেই কারণ এই নামটি রেকর্ড করার জন্য কোনও উচ্চতর ডিরেক্টরি নেই। যা ধারণাটি সুন্দরভাবে ব্যাখ্যা করে।
জো

7

"নাম" শব্দের ব্যবহারটি কিছুটা নমনীয়; এটি একটি "সম্পূর্ণরূপে যোগ্য পথের নাম" উল্লেখ করতে পারে; এটি "ডিরেক্টরি এন্ট্রি" উল্লেখ করতে পারে; এটি বিভিন্ন ফাংশন বা রুটিনগুলিতে পাস করা "ফাইলের নাম" উল্লেখ করতে পারে।

সুতরাং, উদাহরণস্বরূপ, /etc/fooএবং /var/tmp/../../etc/fooএবং /tmp/../../../../../../fooএকই ফাইলটি উল্লেখ করার সমস্ত উপায়; তারা সমস্ত বৈধ নাম , ডিরেক্টরিতে fooযখন হয় /etc

সুতরাং আসুন বুনিয়াদি ফিরে যান।

ইউনিক্সে একটি ফাইলের নামটি ডিরেক্টরি বিভাজক দ্বারা পৃথক করা উপাদানগুলির তৈরি /। খুব সুন্দর উপাদানগুলির উপর একমাত্র বিধিনিষেধ হ'ল /এগুলিতে বা NUL অক্ষর থাকতে পারে না ; অন্য কিছু অনুমোদিত হয়।

সুতরাং "সম্পূর্ণরূপে যোগ্যতাসম্পন্ন পথ নাম" এর /etcপূর্ণ স্ট্রিং: /etc। এর অর্থ এটির etcমূল ডিরেক্টরিতে উপাদান রয়েছে।

একইভাবে ডিরেক্টরিতে উপাদান /x/y/z/fooথাকবে ।foo/x/y/z

এখন মূল ডিরেক্টরিটি অনন্য যে এটির কোনও প্যারেন্ট ডিরেক্টরিতে কোনও উপাদান নেই; এটা শুধুমাত্র তার নাম হিসাবে পূর্ণ পথনাম রয়েছে: /

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.