hd และ od สามารถแทนที่กันได้หรือไม่?


11

hdและodเป็นทั้งผู้ดูดัมพ์ของเนื้อหาไบนารี สามารถhdใช้ได้ทุกที่odและในทางกลับกัน?


4
... และอย่าลืมxxdเช่นกัน! : D
Aaron D. Marasco

คำตอบ:


19

hdเป็นคำพ้องความหมายสำหรับhexdump -CบนFreeBSDและในลีนุกซ์บางรุ่น hexdumpมาจากวัน BSD ; odอยู่ห่างจากรุ่งอรุณของเวลา เพียง แต่odเป็นมาตรฐานโดย POSIX เหตุผลเดี่ยวยูนิกซ์กล่าวถึงเหตุผลที่odได้รับการคัดเลือกในการตั้งค่าหรือhdxd

คำสั่งเหล่านี้ทำสิ่งที่คล้ายกันมาก: แสดงการแสดงข้อความของไฟล์ไบนารีโดยใช้สัญกรณ์ฐานแปดฐานสิบหรือฐานสิบหก ไม่มีความแตกต่างพื้นฐานระหว่างทั้งสอง

พวกเขามีตัวเลือกมากมายในการควบคุมรูปแบบเอาต์พุตและบางรูปแบบสามารถทำได้ด้วยคำสั่งเดียวหรือคำสั่งอื่น โดยเฉพาะอย่างยิ่งเมื่อต้องการดูภาพรวมของสิ่งที่อยู่ในไฟล์ไบนารีฉันชอบ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.....|

ขอบคุณ! ในเอาต์พุตเลขฐานแปดโดย od ตัวเลขหมายถึงสามบิตหรือไม่? ตัวอย่างเช่น04257718 บิตเช่น 9/4 ไบต์?
ทิม

@Tim ใช่ฐานแปดหมายความว่าแต่ละหลักตรงกับ 3 บิต (และเลขฐานสิบหก , 4 บิต) 042577 หมายถึง 16 บิต (2 ไบต์) ตัวเลขแรกในบล็อกในรูปแบบนี้จะเป็น 0 หรือ 1 ฐานแปด (042577) = เลขฐานสิบหก (7f45) = ทศนิยม (32581)
Gilles 'หยุดความชั่วร้าย'

ขอบคุณ! ฉันอ่านจากแหล่งข้อมูลอื่นที่ตัวเลขฐานแปดเริ่มต้นด้วย 0 เพิ่มเติมมันหมายความว่าอะไรเมื่อเริ่มต้นด้วย 1
ทิม

@Tim ในภาษาการเขียนโปรแกรมจำนวนมาก123เป็นตัวเลขที่แสดงในฐาน 10 (ฐานสิบ) ในขณะที่0123หมายความว่าหมายเลขนั้นจะแสดงในฐาน 8 (ฐานแปด) 0123คือ 83 0x123จะอยู่ในฐาน 16 (เลขฐานสิบหก) เช่น 291 นี่คือ ไม่เกี่ยวข้องกับodรูปแบบเอาต์พุต
Gilles 'หยุดชั่วร้าย'

หลายคน? ฉันจะบอกว่า C-like และอนุพันธ์ - ใช่แน่นอน มีอะไรอีกบ้าง? เท่าไหร่?
poige

5

ที่จริงodสามารถแสดงทั้งตัวอักษร hex / oct / dec และตัวพิมพ์ที่พิมพ์ได้:

$ 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
tripleee

ปัญหาใหญ่ที่สุดที่จริงจะจำรถไฟ args hdที่แทนหนึ่ง อย่างไรก็ตามมีประโยชน์ขอขอบคุณ :)
poige
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.