คำตอบ:
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.....|
04257718 บิตเช่น 9/4 ไบต์?
123เป็นตัวเลขที่แสดงในฐาน 10 (ฐานสิบ) ในขณะที่0123หมายความว่าหมายเลขนั้นจะแสดงในฐาน 8 (ฐานแปด) 0123คือ 83 0x123จะอยู่ในฐาน 16 (เลขฐานสิบหก) เช่น 291 นี่คือ ไม่เกี่ยวข้องกับodรูปแบบเอาต์พุต
ที่จริง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ยังสามารถแสดงสีได้
odไม่รองรับzส่วนต่อท้ายใน-tx1z
hdที่แทนหนึ่ง อย่างไรก็ตามมีประโยชน์ขอขอบคุณ :)
xxdเช่นกัน! : D