लिनक्स / यूनिक्स फ़ाइल सिस्टम में निर्देशिकाओं की सामग्री को देखने का सरल तरीका


27

अतीत में, मैंने सीखा है कि लिनक्स / यूनिक्स फ़ाइल सिस्टम में, निर्देशिकाएं सिर्फ फाइलें होती हैं, जिसमें निर्देशिका के अंदर फाइलों के फ़ाइल नाम और इनकोड नंबर होते हैं।

क्या किसी निर्देशिका की सामग्री को देखने का एक सरल तरीका है ? मेरा मतलब है कि जिस तरह से फाइल के नाम और इनोड संग्रहीत / व्यवस्थित हैं।

मैं नहीं देख रहा हूँ ls, findया कुछ परिचित है। मैं फ़ाइलों की सामग्री को एक निर्देशिका के अंदर भी नहीं देखना चाहता। मैं निर्देशिकाओं के कार्यान्वयन को देखना चाहता हूं। यदि प्रत्येक निर्देशिका कुछ सामग्री के साथ एक पाठ फ़ाइल है, तो शायद इस पाठ फ़ाइल की सामग्री को देखने के लिए एक सरल तरीका मौजूद है।

लिनक्स में बैश में ए करना संभव नहीं है cat folder। आउटपुट बस है Is a directory

अद्यतन प्रश्न एक यूनिक्स / लिनक्स फ़ाइल की निर्देशिका संरचना जानकारी का निरीक्षण कैसे करता है? एक ही मुद्दे को संबोधित करता है, लेकिन यह mjturner से एक की तरह कोई उपयोगी समाधान है ।


मुझे नहीं लगता कि vi <folder>आपकी ज़रूरतें पूरी होती हैं? बस इसका उल्लेख
Lenniey

vim <DIR> क्या ये वही है जो तुम चाहते हो?
7171u

शुरुआत के लिए statकमांड पर एक नज़र डालें । stat folder
स्लम


2
मेरा मानना ​​है कि ऐतिहासिक रूप catसे काम किया होगा। लेकिन वह दृष्टिकोण दशकों पहले अप्रचलित था। मुझे वास्तविक फाइल सिस्टम स्टोरेज को देखने का कोई सीधा तरीका नहीं पता है। इसके बजाय एक मानकीकृत प्रारूप में जानकारी को वापस करने के लिए नई प्रणाली कॉल हैं जो समान रहती हैं चाहे जो भी अंतर्निहित फ़ाइल सिस्टम का उपयोग किया जा रहा हो।
कैस्परल्ड

जवाबों:


35

फाइलसिस्टम के लिए इनोड डिटेल प्रदर्शित करने का टूल फाइलसिस्टम विशिष्ट होगा। के लिए ext2, ext3, ext4फ़ाइल सिस्टम (सबसे सामान्य लिनक्स फ़ाइल सिस्टम), तो आप उपयोग कर सकते हैं debugfs, XFS के लिए xfs_db, ज़ेड एफ़ एस के 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, तो आप कर्नेल प्रलेखन में निर्देशिका प्रविष्टियों की संरचना और लेआउट के बारे में अधिक जानकारी पा सकते हैं ।


यह बहुत अच्छा जवाब है। आपका बहुत बहुत धन्यवाद! अब मैं यह जांचने की कोशिश करता हूं कि मैं इस आउटपुट में इनोड संख्या को दशमलव संकेतन में कैसे दिखा सकता हूं। मुझे लगता है कि आउटपुट में फ़ाइल नाम के अलावा मान इनोड संख्या हैं। या मैं गलत हूँ?
नेवरलैंड

@Neverland हाँ, इनोड संख्याएँ हैं। यदि आप od -xनिर्देशिका प्रविष्टि फ़ाइल को डंप करने के लिए उपयोग करते हैं तो वे संभवतः अधिक स्पष्ट हैं ।
mjturner

0

आप अपनी पसंद की प्रोग्रामिंग भाषा का उपयोग कर सकते हैं, निर्देशिका को खोल सकते हैं जैसे कि यह एक फ़ाइल थी और परिणामस्वरूप फ़ाइल हैंडल से बाइट्स पढ़ें। हालांकि, यह आपको ज्यादा बताने वाला नहीं है, क्योंकि जब तक यह व्यवस्थित नहीं होगा तब तक यह सिर्फ कचरा (इसमें कुछ पहचाने जाने योग्य तार के साथ) होगा। यह कैसे व्यवस्थित किया जाता है, यह सवाल में फ़ाइल सिस्टम के लिए एक कार्यान्वयन मुद्दा है। यदि आप इन बातों को गहराई से देखना चाहते हैं, तो मेरा सुझाव है कि आप पढ़ना शुरू करें man dirent.h। जो आपको अपने फैंस से रूबरू कराने के लिए आपको आगे की ओर इशारा करने के लिए पर्याप्त होना चाहिए।


3
लिनक्स इसे अनुमति नहीं देता है ... और मुझे लगता है कि अधिकांश प्रणालियां डेटा को एक एकीकृत प्रारूप में वापस लाती हैं, जो कि फाइलसिस्टम में वास्तव में जो कुछ भी है, उसके बजाय।
रैंडम 832

2
यह (बहुत) पुराने दिनों में संभव हुआ करता था। आप K & R 2nd Edn में इसके प्रमाण देख सकते हैं। हालाँकि, यह अब संभव नहीं है; यह इस सहस्राब्दी के अधिकांश के लिए संभव नहीं है।
जोनाथन लेफलर

यूनिक्स सिस्टम के तहत यह संभव है, लेकिन अनावश्यक है - यदि आप चाहें तो कंटेंट को प्रदर्शित करने के लिए आप बिल्ली का उपयोग कर सकते हैं लेकिन एचडी (यूनिक्स के बराबर यूनिक्स) शायद अधिक उपयोगी है। मैंने देखा है कि लिनक्स-आधारित सिस्टम यदि आप पढ़ने के लिए निर्देशिका फ़ाइल खोलते हैं, तो यह एक गलती है। "बेवकूफ लोगों को बेवकूफ बनाने वाली चीजों को रोकने से, आप चतुर लोगों को चतुर चीजें करना भी बंद कर देते हैं"।
FJL

0

आप कोशिश कर सकते हैं (विभाजन एक उदाहरण है)।

sudo debugfs /dev/xvda1                 

फ़ाइल में इनकोड डेटा लिखने के लिए डंप का उपयोग करें।

sudo dumpe2fs /dev/xvda1

मनुष्य आपका मित्र है, आपको कुछ विचार देने चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.