লিনাক্স / ইউনিক্স ফাইল সিস্টেমে ডিরেক্টরিগুলির বিষয়বস্তু দেখার সহজ উপায়


27

অতীতে, আমি শিখেছি যে লিনাক্স / ইউএনআইএক্স ফাইল সিস্টেমে ডিরেক্টরিগুলি কেবলমাত্র ফাইল যা ডিরেক্টরিতে থাকা ফাইলের ফাইলের নাম এবং ইনোড নম্বর ধারণ করে।

কোনও ডিরেক্টরি সামগ্রীর দেখার সহজ উপায় কি আছে ? আমি বোঝাতে চাইছি যেভাবে ফাইলগুলির নাম এবং ইনোডগুলি সঞ্চয় / সংগঠিত।

আমি না খুঁজছেন ls, findবা কিছু similiar। আমি কোনও ডিরেক্টরিতে থাকা ফাইলগুলির সামগ্রীও দেখতে চাই না। আমি ডিরেক্টরিগুলির বাস্তবায়ন দেখতে চাই। প্রতিটি ডিরেক্টরি যদি কিছু বিষয়বস্তু সহ কেবল একটি পাঠ্য ফাইল হয় তবে এই পাঠ্য ফাইলটির সামগ্রী দেখতে একটি সহজ উপায় থাকতে পারে।

লিনাক্সে ব্যাশে এটি করা সম্ভব নয় cat folder। আউটপুট ঠিক Is a directory

প্রশ্নটি আপডেট করুন কীভাবে একটি ইউনিক্স / লিনাক্স ফাইলের ডিরেক্টরি কাঠামোর তথ্য পরীক্ষা করে? একই ইস্যুটি সম্বোধন করে তবে এটির এমজেটারারারের মতো কোনও কার্যকর সমাধান নেই ।


আমি মনে করি না vi <folder>আপনার প্রয়োজন অনুসারে? কেবল এটির উল্লেখ করছি
লেনি

vim <DIR> এই কমান্ডের সাহায্যে আপনি চান কি?
7171u

শুরুর জন্য statকমান্ডটি একবার দেখুন । stat folder
slm


2
আমি বিশ্বাস করি যে histor catতিহাসিকভাবে কাজ করতে পারে। তবে এই পদ্ধতিটি কয়েক দশক আগে অচল ছিল। প্রকৃত ফাইল সিস্টেম স্টোরেজ দেখার কোনও প্রত্যক্ষ উপায় আমার জানা নেই। পরিবর্তে সেখানে একটি প্রমিত বিন্যাসে তথ্য ফিরিয়ে আনার জন্য নতুন সিস্টেম কল রয়েছে যা অন্তর্নিহিত ফাইল সিস্টেমটি ব্যবহৃত হচ্ছে নির্বিশেষে একই থাকে।
ক্যাস্পারড

উত্তর:


35

একটি ফাইল সিস্টেমের জন্য ইনোড বিশদ প্রদর্শনের সরঞ্জামটি ফাইল সিস্টেম নির্দিষ্ট হবে। জন্য ext2, ext3, ext4ফাইল সিস্টেম (সবচেয়ে সাধারণ লিনাক্স ফাইল সিস্টেম), আপনি ব্যবহার করতে পারেন debugfs, XFS দ্বারা জন্য xfs_db, ZFS জন্য zdb। জন্য btrfsকিছু তথ্য ব্যবহার করে পাওয়া যায় btrfsকমান্ড।

উদাহরণস্বরূপ, একটি ext4ফাইল সিস্টেমে ডিরেক্টরি এক্সপ্লোর করতে (এই ক্ষেত্রে /এটি dev/sda1):

# ls src
Animation.js    Map.js        MarkerCluster.js    ScriptsUtil.js
Directions.js   MapTypeId.js  markerclusterer.js  TravelMode.js
library.js      MapUtils.js   Polygon.js          UnitSystem.js
loadScripts.js  Marker.js     Polyline.js         Waypoint.js

# ls -lid src
664488 drwxrwxrwx 2 vagrant vagrant 4096 Jul 15 13:24 src

# debugfs /dev/sda1
debugfs: imap <664488>
Inode 664488 is part of block group 81
        located at block 2622042, offset 0x0700
debugfs: dump src src.out
debugfs: quit

# od -c src.out
0000000 250   #  \n  \0  \f  \0 001 002   .  \0  \0  \0 204 030  \n  \0
0000020  \f  \0 002 002   .   .  \0  \0 251   #  \n  \0 024  \0  \f 001
0000040   A   n   i   m   a   t   i   o   n   .   j   s 252   #  \n  \0
0000060 030  \0  \r 001   D   i   r   e   c   t   i   o   n   s   .   j
0000100   s  \0  \0  \0 253   #  \n  \0 024  \0  \n 001   l   i   b   r
0000120   a   r   y   .   j   s  \0  \0 254   #  \n  \0 030  \0 016 001
0000140   l   o   a   d   S   c   r   i   p   t   s   .   j   s  \0  \0
0000160 255   #  \n  \0 020  \0 006 001   M   a   p   .   j   s  \0  \0
0000200 256   #  \n  \0 024  \0  \f 001   M   a   p   T   y   p   e   I
0000220   d   .   j   s 257   #  \n  \0 024  \0  \v 001   M   a   p   U
0000240   t   i   l   s   .   j   s  \0 260   #  \n  \0 024  \0  \t 001
0000260   M   a   r   k   e   r   .   j   s  \0  \0  \0 261   #  \n  \0
0000300 030  \0 020 001   M   a   r   k   e   r   C   l   u   s   t   e
0000320   r   .   j   s 262   #  \n  \0 034  \0 022 001   m   a   r   k
0000340   e   r   c   l   u   s   t   e   r   e   r   .   j   s  \0  \0
0000360 263   #  \n  \0 024  \0  \n 001   P   o   l   y   g   o   n   .
0000400   j   s  \0  \0 264   #  \n  \0 024  \0  \v 001   P   o   l   y
0000420   l   i   n   e   .   j   s  \0 265   #  \n  \0 030  \0 016 001
0000440   S   c   r   i   p   t   s   U   t   i   l   .   j   s  \0  \0
0000460 266   #  \n  \0 030  \0  \r 001   T   r   a   v   e   l   M   o
0000500   d   e   .   j   s  \0  \0  \0 267   #  \n  \0 030  \0  \r 001
0000520   U   n   i   t   S   y   s   t   e   m   .   j   s  \0  \0  \0
0000540 270   #  \n  \0 240 016  \v 001   W   a   y   p   o   i   n   t
0000560   .   j   s  \0 305 031  \n  \0 214 016 022 001   .   U   n   i
0000600   t   S   y   s   t   e   m   .   j   s   .   s   w   p  \0  \0
0000620 312 031  \n  \0   p 016 022 001   .   U   n   i   t   S   y   s
0000640   t   e   m   .   j   s   .   s   w   x  \0  \0  \0  \0  \0  \0
0000660  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

উপরের দিকে, আমরা ডিরেক্টরিটির ইনোডটি সন্ধান করে শুরু করি src( 664488) এবং তারপরে এটির বিষয়বস্তুগুলিকে ফাইলে ফেলে দিন src.outএবং তারপরে এটি ব্যবহার করে প্রদর্শন করব od। আপনি দেখতে পাচ্ছেন যে ডিরেক্টরিটি ( Animation.jsইত্যাদি) সমস্ত ফাইলের সামগ্রীর ডাম্প দৃশ্যমান।

এই মাত্র একটি শুরু - দেখুন debugfsম্যানুয়েল পৃষ্ঠা বা টাইপ helpমধ্যে debugfsআরও তথ্যের জন্য।

আপনি যদি ব্যবহার করে ext4থাকেন তবে কার্নেল ডকুমেন্টেশনে ডিরেক্টরি এন্ট্রিগুলির কাঠামো এবং বিন্যাস সম্পর্কে আরও তথ্য পাবেন ।


এটি দুর্দান্ত উত্তর। অনেক ধন্যবাদ! দশমিক স্বরলিপিতে আমি কীভাবে এই আউটপুটে ইনোড নম্বরগুলি প্রদর্শন করতে পারি তা তদন্তের চেষ্টা করব। আমি মনে করি আউটপুটে ফাইলের নামের পাশাপাশি মানগুলি ইনোড সংখ্যা। নাকি আমি ভুল করছি?
নেভারল্যান্ড

@ নেভারল্যান্ড হ্যাঁ, সেগুলি হ'ল ইনোড নম্বর। আপনি যদি od -xডিরেক্টরি এন্ট্রি ফাইল ডাম্প করতে ব্যবহার করেন তবে সম্ভবত তারা পরিষ্কার হয় ।
mjturner

0

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


3
লিনাক্স এটিকে অনুমতি দেয় না ... এবং আমি মনে করি যে বেশিরভাগ সিস্টেমগুলি ফাইল সিস্টেমের যা কিছু আছে তার চেয়ে তথ্যকে একীভূত বিন্যাসে ফিরিয়ে দেয়।
র্যান্ডম 832

2
পুরানো দিনগুলিতে এটি পুনরায় সম্ভব হত। আপনি কে অ্যান্ড আর ২ য় এডনে এর প্রমাণ দেখতে পাচ্ছেন। তবে এটি আর সম্ভব নয়; এই সহস্রাব্দের বেশিরভাগের পক্ষে এটি সম্ভব হয়নি।
জোনাথন লেফলার

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

0

আপনি চেষ্টা করতে পারেন (পার্টিশন একটি উদাহরণ)।

sudo debugfs /dev/xvda1                 

কোনও ফাইলে ইনোড ডেটা লিখতে ডাম্প ব্যবহার করুন।

sudo dumpe2fs /dev/xvda1

মানুষ আপনার বন্ধু, এগুলি আপনাকে কিছু ধারণা দেয়।

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