क्या HD और od एक दूसरे को बदल सकते हैं?


11

hdऔर odदोनों द्विआधारी सामग्री के डंप दर्शक हैं। hdजहाँ भी odहो और इसके विपरीत इस्तेमाल किया जा सकता है?


4
... और भूल xxdभी मत जाना ! : डी
आरोन डी। मार्सको

जवाबों:


19

hdके लिए एक पर्याय है hexdump -Cपर FreeBSD और कुछ लिनक्स वितरण पर। hexdumpसे है बीएसडी दिनों ; समयod के भोर से है । केवल odहै POSIX द्वारा मानकीकृतएकल यूनिक्स औचित्य चर्चा क्यों odवरीयता में चुना गया था hdया xd

ये कमांड बहुत समान चीजें करते हैं: ऑक्टेल, दशमलव या हेक्साडेसिमल नोटेशन का उपयोग करते हुए, एक द्विआधारी फ़ाइल का एक पाठ प्रतिनिधित्व प्रदर्शित करते हैं। दोनों के बीच कोई बुनियादी अंतर नहीं है।

आउटपुट प्रारूप को नियंत्रित करने के लिए उनके पास कई विकल्प हैं, और कुछ प्रारूप केवल एक या दूसरे कमांड के साथ प्राप्त किए जा सकते हैं। विशेष रूप से, द्विआधारी फ़ाइल में क्या है, इसकी एक झलक देखने के लिए, मुझे hdआउटपुट स्वरूप पसंद है, जिसमें मुद्रण योग्य वर्णों को सही रूप से दिखाने पर एक कॉलम है; odऐसा नहीं कर सकते।

$ od /bin/sh | head -n 2                # od default: octal, 2-byte words
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 170020 000101 000000 000000

$ od -Ax -t x1 /bin/sh | head -n 2      # od showing bytes in hexadecimal
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00

$ hd /bin/sh | head -n 2                # hd default output: nice
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 3e 00 01 00 00 00  10 f0 41 00 00 00 00 00  |..>.......A.....|

धन्यवाद! ओड द्वारा ऑक्टल आउटपुट में, एक अंक का अर्थ तीन बिट्स होता है? तो उदाहरण के 042577लिए 18 बिट्स यानी 9/4 बाइट्स हैं?
टिम

@ समय हाँ, अष्ट का अर्थ है कि प्रत्येक अंक 3 बिट्स (और हेक्साडेसिमल , 4 बिट्स) से मेल खाता है । 042577 वास्तव में 16 बिट्स (2 बाइट्स) का प्रतिनिधित्व करता है; इस प्रारूप में एक ब्लॉक में पहला अंक हमेशा 0 या 1. अष्टक (042577) = हेक्साडेसिमल (7f45) = दशमलव (32581) होगा।
गिल्स एसओ- बुराई को रोकना '

धन्यवाद! मैंने अन्य स्रोतों से पढ़ा कि अष्टक संख्या एक अतिरिक्त 0 से शुरू होती है। 1 से शुरू होने पर इसका क्या अर्थ है?
टिम

@ कई प्रोग्रामिंग भाषाओं में, 123आधार 10 (दशमलव) में दर्शाई गई एक संख्या है, जबकि 0123इसका मतलब है कि आधार 8 (अष्टक) में दर्शाया गया है, अर्थात 012383 0x123है। आधार 16 (हेक्साडेसिमल), अर्थात 291 में होगा। यह। odआउटपुट स्वरूप से असंबंधित ।
गिलेस एसओ- बुराई को रोकना '

अनेक? मैं वास्तव में किसी भी सी-लाइक और डेरिवेटिव - हां कहूंगा। और क्या? कितने?
पोयगी

5

वास्तव में odदोनों हेक्स / ओक्ट / डिक और प्रिंट करने योग्य वर्ण प्रदर्शित कर सकते हैं:

$ od -Ax -tx1z /bin/sh | head -n2
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  >.ELF............<
000010 03 00 3e 00 01 00 00 00 32 4e 00 00 00 00 00 00  >..>.....2N......<

मुख्य अंतर, मुझे लगता है, केवल ऐतिहासिक है। साथ ही कुछ वर्जन hdआउटपुट को कलर कर सकते हैं।


OSX प्रत्यय का odसमर्थन नहीं करता zहै-tx1z
त्रिकोणीय

वास्तव में सबसे बड़ी परेशानी यह होगी कि एक के बजाय आर्गन्स की उस ट्रेन को याद रखा जाए hd। फिर भी, उपयोगी है, धन्यवाद :)
poige
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.