Ls -l কমান্ড আউটপুটটিতে ফাইল অনুমতি এবং মালিকের মধ্যে সংখ্যা কত?


35

ls -lকমান্ডের আউটপুট নিম্নলিখিত ফলাফল দেয়:

এখানে চিত্র বর্ণনা লিখুন

ফাইল অনুমতি এবং মালিকের মধ্যে নম্বর ক্ষেত্রটি কী? অর্থাৎ এই 1, 1, 1, এবং 2 কি? আমি চেক করেছিলাম --helpকিন্তু এটি এটি ব্যাখ্যা করে না।

[সম্পাদনা] আমি ভেবেছিলাম এটি কোনও ডিরেক্টরিতে ফাইল সংখ্যা ছিল তবে তা তা নয়। চিত্র দেখুন। "টেম্পফোল্ডার" এর 3 টি ফাইল রয়েছে তবে এখনও একটি "2" দেখায়

উত্তর:


33

দ্রষ্টব্য: @ স্টেফেনচাজেলা মন্তব্য করার পরে সম্পাদিত

ls -lঅনুমতি ব্লকের পরে আউটপুটটির প্রথম সংখ্যাটি হ'ল লিঙ্কের সংখ্যা

এটি stat"লিংকস" -তে কমান্ড দ্বারা ফিরে আসা হিসাবে একই মান same

এই সংখ্যাটি ফাইলের হার্ডলিঙ্ক কাউন্ট, কোনও ফাইল উল্লেখ করার সময়, বা ডিরেক্টরিতে নির্দেশিত ডিরেক্টরিতে প্রবেশের সংখ্যা উল্লেখ করে।

একটি ফাইলের সাধারণত একটি হার্ড লিঙ্ক গণনা থাকে 1 তবে lnকমান্ডের সাহায্যে হার্ড লিঙ্কগুলি তৈরি করা হলে এটি পরিবর্তিত হয় । দেখুন ডেবিয়ান সহায়িকা

আপনার উদাহরণে, টেমপ্লে 2 এর জন্য একটি হার্ড লিঙ্ক যুক্ত করা এর লিঙ্কের সংখ্যা বাড়িয়ে দেবে:

ln -l
ln tempFile2 tempHardLink
ln -l

টেম্পাইল 2 এবং টেম্পহার্ডলিঙ্ক উভয়েরই লিঙ্কের সংখ্যা 2 হবে।

যদি আপনি প্রতীকী লিঙ্ক ( ln -s tempFile2 tempSymLink) দিয়ে একই অনুশীলন করেন তবে গণনা মান বাড়বে না।

একটি ডিরেক্টরিতে'.' (নিজের সাথে লিঙ্ক করা) এবং তার পিতামাতার ডিরেক্টরিতে প্রবেশের জন্য সর্বনিম্ন 2 গণনা থাকবে ।

আপনার উদাহরণস্বরূপ, আপনি যদি টেম্পফোল্ডারটির লিঙ্ক গণনা বাড়াতে চান তবে একটি নতুন ডিরেক্টরি তৈরি করুন এবং সংখ্যাটি উপরে যাবে।

ls -l tempFolder
mkdir tempFolder/anotherFolder
ls -l tempFolder

লিঙ্ক থেকে anotherFolder / থেকে tempFolder / (যা ..) গণনা করা হবে।



যেহেতু এটি অনুমতি এবং মালিকানার মধ্যে প্রদর্শিত হয়, আপনি এটি খুব গুরুত্বপূর্ণ ধারণাটি পান তবে আমি কখনই এটি ব্যবহার করি নি। এটি সাধারণত কখন প্রয়োজন হয়?
ইমানুয়েল বার্গ

1
এটা ভুল। এটি লিঙ্ক গণনা, সময়কাল। ডিরেক্টরিগুলির জন্য, আপনি তার মূল ডিরেক্টরিতে (যেমন কোনও ফাইলের মতো) .এন্ট্রি এবং নিজেই প্রবেশের জন্য আরও দুটি পেয়েছেন, পাশাপাশি ..এর প্রতিটি সাবডায়ারের এন্ট্রিগুলির জন্য একটি ।
স্টাফেন চেজেলাস

@ স্টাফেনচাজেলাস সমস্ত ডকুমেন্টেশনগুলিতে আমি হার্ড লিঙ্কের গণনা সম্পর্কে উদাহরণ পেয়েছি (উদাহরণস্বরূপ, linuxgazette.net/issue35/tag/links.html )। এছাড়াও আমি দেখতে পেলাম যে অনুরূপ প্রশ্ন জিজ্ঞাসা উবুন্টুতে জিজ্ঞাসা করা হয়েছিল ( Askubuntu.com/questions/19510/… )। আমি কোর্টিলস উত্স কোডটি যাচাই করব এবং আমি সঠিক উত্তরটি বের করতে পারব কিনা তা দেখুন।
ড্যামিয়েন

2
@ ইমানুয়েলবার্গ যখন ফাইল সিস্টেমগুলি এখনকার তুলনায় অনেক কম নির্ভরযোগ্য ছিল এবং আপনি যে ফাইল সিস্টেমটি বিকাশ করেছিলেন তার উপর কাজ করছিলেন এবং আপনি ls2 টি অক্ষর ব্যয় করতে পারেন এবং আপনাকে আরও তথ্য দিতে পারতেন, এবং কোনও stat(1)আদেশও ছিল find(1)না fsck, না কোনও চিহ্নও ছিল সম্ভবত এটি আরও অনেক বেশি ছিল আজকের তুলনায় এটি দরকারী শেল স্ক্রিপ্টগুলি ভাঙা ছাড়া এটি পরিবর্তন করা যায় না যার লেখকরা দীর্ঘ অতীত হয়ে গেছে /dev/null; কমপক্ষে 1979 এর পরে এটি
সেভাবেই ছিল

8

ইউনিক্সে সাধারণত একটি ফাইল ফাইলের টেবিলের মধ্যে কিছু প্রবেশ entry বিভিন্ন ধরণের ফাইল রয়েছে: নিয়মিত ফাইল, ডিভাইস, প্রতীক লিঙ্ক, দরজা, পাইপ, সকেট, ডিরেক্টরি ...

ইনোড নম্বর (যা আপনি এর আউটপুটে দেখতে পাবেন ls -i) হ'ল সেই সারণির সূচক।

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

ডিরেক্টরি হ'ল একটি বিশেষ ধরণের ফাইল যা বেশ কয়েকটি ইনোডকে নাম দেয়। ডিরেক্টরি এন্ট্রি হ'ল নাম থেকে একটি ইনোডে ম্যাপিং।

প্রদত্ত ফাইলের (একটি ইনোড) একটি ডিরেক্টরিতে একাধিক নাম থাকতে পারে (ঠিক যেমন একটি ফোন নম্বরতে একাধিক নাম থাকতে পারে), এবং একাধিক ডিরেক্টরিতে নাম (এন্ট্রি) থাকতে পারে। ঐ বলা হয় লিঙ্ক নামেও পরিচিত হার্ড সংযোগগুলি সঙ্গে পার্থক্য নরম লিঙ্ক (ফাইল একটি বিশেষ ধরনের যা একটি পাথ একটি পয়েন্টার)।

একটি ফাইল (আইনোড) এতে থাকা লিঙ্কগুলির সংখ্যা (যে কোনও ডিরেক্টরিতে প্রবেশের ক্ষেত্রে) ট্র্যাক করে রাখে, যাতে যখন সংখ্যাটি 0 পৌঁছায় (যখন এটি সর্বশেষ ডিরেক্টরিটি থেকে রেফারেন্স করা হয়েছিল তখন এটি লিঙ্কযুক্ত করা হয়), এটি বাতিল করা হয়।

এটি ls -lআউটপুট প্রদর্শিত হবে যে সংখ্যা (লিঙ্ক সংখ্যা) ।

একটি অ-ডিরেক্টরি ফাইল প্রথমবার সৃষ্টি করা হলে (সঙ্গে openবা creat(অথবা bindঅথবা mknodকিছু ফাইল প্রকারগুলি) সিস্টেম কলের জন্য), এটা নতুন ফাইল (মত এমন একটি পথ সঙ্গে তাদের প্রদানের মাধ্যমে সম্পন্ন করা হয় "/a/b")। তারপরে যা ঘটে তা একটি নতুন ফাইল এবং ইনোড বরাদ্দ করা হয় এবং মূল ডিরেক্টরিতে "a"নামের সাথে যুক্ত ডিরেক্টরিতে একটি নতুন এন্ট্রি যুক্ত করা হয় "/"। এটি প্রাথমিক লিঙ্ক তাই লিঙ্কের গণনা এক।

link()সিস্টেম লিঙ্ক ( lnকমান্ড) এর সাথে পরে আরও লিঙ্ক যুক্ত করা যেতে পারে । এবং লিঙ্কগুলি unlink()সিস্টেম কল ( rmকমান্ড) দিয়ে মুছে ফেলা যায় ।

আপনি লক্ষ্য করতে পারেন যে টাইপ ডিরেক্টরি ফাইলগুলির ফাইলগুলিতে সাধারণত বেশিরভাগ সংখ্যক লিঙ্ক থাকে 2 বা এর সমান।

এখন, আপনি যখন একটি ডিরেক্টরি তৈরি করেন, আপনি mkdir()সিস্টেম কল কল করছেন। কিছু একটা mkdir("/a/b")। এটি তখন যা করে তা হ'ল টাইপের ডিরেক্টরিতে নতুন ফাইল বরাদ্দ করা। নতুন ডিরেক্টরিতে এটি স্বয়ংক্রিয়ভাবে দুটি এন্ট্রি তৈরি করে:

  • "."( ডিরেক্টরি জন্য বিন্দু )। যা নিজের কাছে একটি লিঙ্ক। সুতরাং লিঙ্ক গণনা এখন 1।
  • ".."(জন্য ডিরেক্টরির 'র ডিরেক্টরি )। কোনটি একটি লিঙ্ক "/a"। সুতরাং লিঙ্ক গণনা "/a"এক এক দ্বারা বৃদ্ধি করা হয়

তারপরে সেই নতুন ডিরেক্টরিটির সাথে লিঙ্ক করা হয়েছে "/a"( "/a"এটির জন্য একটি এন্ট্রি যুক্ত করা হয়েছে ), সুতরাং এটির লিঙ্ক গণনাটি এখন ২ হয় a যদি কোনও "/a/b/c"ডিরেক্টরি তৈরি করা হয়, ".."প্রবেশের কারণে "/a/b/c", এর লিঙ্কের কাউন্টটি "/a/b"3 হয়ে যাবে।

বেশিরভাগ ইউনিট ডিরেক্টরিতে আরও লিঙ্ক তৈরি করা সীমাবদ্ধ করে কারণ তারা সমস্যাযুক্ত লুপ তৈরি করতে পারে। যখন তারা link()কোনও ডিরেক্টরিতে কোনও অনুমতি দেয় , সাধারণত কেবলমাত্র সুপারইসার এটি করতে পারে।

কিছু ফাইল সিস্টেম যেমন btrfstraditionalতিহ্যবাহী ডিরেক্টরি কাঠামো থেকে প্রস্থান করে। আপনি লক্ষ্য করবেন যে btrfsফাইল সিস্টেমে ডিরেক্টরিগুলির লিঙ্কের সংখ্যা সর্বদা এক থাকে যদিও এই ডিরেক্টরিগুলিতে সেগুলির "."মতো একই ইনোড নম্বর সহ একটি এন্ট্রি থাকে ।

লিঙ্ক গণনাটি traditionতিহ্যগতভাবে 2 টির চেয়ে বেশি এবং সাবডায়ারের সংখ্যার ব্যবহার রয়েছে The উদাহরণস্বরূপ, এতে:

find . -name '*.c' -print

তাহলে .subdirs ধারণ করে না কিন্তু ফাইল লক্ষ লক্ষ রয়েছে। লিংক গণনা টিক চিহ্ন দেওয়ার দ্বারা ., findজানতে পারেন কোন subdir নেই। সুতরাং সমস্তই findহ'ল ডিরেক্টরিটির বিষয়বস্তু পড়তে হবে এবং এন্ট্রিগুলি যেগুলি শেষ হয় .c( grep '\.c$'কয়েক মেগাবাইট ফাইলের মতো এটি কোনও বড় বিষয় নয়) প্রতিবেদন করে। অন্যথায়, findসেখানে ডিরেক্টরিতে নামার জন্য ডিরেক্টরি রয়েছে কিনা তা দেখতে প্রতিটি একক ফাইলের ধরণ পরীক্ষা করে দেখতে হবে (ফলে যতগুলি lstat()সিস্টেম কল আসে)। অবশ্যই, এই ধরণের অপ্টিমাইজেশন কাজ করে না btrfs(যদিও লিনাক্সের আধুনিক সংস্করণগুলিতে, ফাইলের ধরণটি কিছু ফাইল সিস্টেমের জন্য ডিরেক্টরি এন্ট্রিতে সঞ্চিত থাকে (সহ btrfs) এবং প্রবেশের getdents(2)তালিকা পুনরুদ্ধার করতে ব্যবহৃত সিস্টেম কল দ্বারা ফিরে আসে একটি ডিরেক্টরি, তাইlstat এখনও প্রয়োজনীয় নয়)।


+1, দুর্দান্ত উত্তর :) এলএস উত্স কোডটি দেখে আমি লক্ষ্য করেছি যে লিঙ্ক নম্বরটি স্টেটে কল করার পরে আপডেট হয়েছিল। সুতরাং স্টেট কমান্ড আপনাকে কোনও ফাইল বা ডিরেক্টরিতে লিঙ্কের মান দেবে।
ড্যামিয়েন

আউটপুট -অনুমোদনের পরে জায়গায় কোনও সংখ্যার পরিবর্তে এর অর্থ কী ls -l?
শুভম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.