xxd
นี่คือคำสั่ง xxd ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
xxd - ทำ hexdump หรือย้อนกลับ
เรื่องย่อ
xxd -ช่วย]
xxd [ตัวเลือก] [infile [outfile]]
xxd -r[evert] [ตัวเลือก] [infile [outfile]]
DESCRIPTION
xxd สร้างการถ่ายโอนข้อมูลฐานสิบหกของไฟล์ที่กำหนดหรืออินพุตมาตรฐาน นอกจากนี้ยังสามารถแปลงการถ่ายโอนข้อมูลฐานสิบหก
กลับสู่รูปแบบไบนารีเดิม ชอบ uencode(1) และ ยูเดโค้ด(1) ช่วยให้
การส่งข้อมูลไบนารีในรูปแบบ ASCII ที่ "ปลอดภัยต่ออีเมล" แต่มีข้อได้เปรียบ
ของการถอดรหัสเป็นเอาต์พุตมาตรฐาน นอกจากนี้ยังสามารถใช้เพื่อทำการแพตช์ไฟล์ไบนารี
OPTIONS
ถ้าไม่ แฟ้ม จะได้รับ อินพุตมาตรฐานจะถูกอ่าน ถ้า แฟ้ม ถูกกำหนดเป็น `-' อักขระ,
จากนั้นอินพุตจะถูกนำมาจากอินพุตมาตรฐาน ถ้าไม่ ออกจากไฟล์ จะได้รับ (หรือ `-' ตัวอักษรอยู่ใน
ตำแหน่ง) ผลลัพธ์จะถูกส่งไปยังเอาต์พุตมาตรฐาน
โปรดทราบว่ามีการใช้ parser "ขี้เกียจ" ซึ่งไม่ตรวจสอบมากกว่าตัวเลือกแรก
ตัวอักษร เว้นแต่ตัวเลือกจะตามด้วยพารามิเตอร์ ช่องว่างระหว่างตัวเลือกเดียว
ตัวอักษรและพารามิเตอร์เป็นตัวเลือก พารามิเตอร์สำหรับตัวเลือกสามารถระบุเป็นทศนิยม
เลขฐานสิบหกหรือฐานแปด ดังนั้น -c8, -c 8, -c 010 และ -cols 8 มีค่าเท่ากันทั้งหมด
-a | -ออโต้สคิป
สลับ autoskip: '*' เดียวแทนที่ nul-line ค่าเริ่มต้นปิด
-b | -บิต
เปลี่ยนเป็นดัมพ์บิต (เลขฐานสอง) แทนที่จะเป็น hexdump ตัวเลือกนี้เขียน
octets เป็นเลขแปดหลัก "1" และ "0" แทนที่จะเป็นดัมพ์เลขฐานสิบหกปกติ แต่ละ
บรรทัดนำหน้าด้วยหมายเลขบรรทัดในฐานสิบหกและตามด้วย ascii (or
ebcdic) การเป็นตัวแทน บรรทัดคำสั่งเปลี่ยน -r, -p, -i ไม่ทำงานกับสิ่งนี้
โหมด.
-c ปลอกคอ | -cols ปลอกคอ
รูปแบบปลอกคอ> ออกเตตต่อบรรทัด ค่าเริ่มต้น 16 (-i: 12, -ps: 30, -b: 6) สูงสุด 256
-E | -EBCDIC
เปลี่ยนการเข้ารหัสอักขระในคอลัมน์ขวามือจาก ASCII เป็น EBCDIC นี้
ไม่เปลี่ยนการแสดงเลขฐานสิบหก ตัวเลือกไม่มีความหมายใน
ผสมกับ -r, -p หรือ -i
-e เปลี่ยนไปใช้ little-endian hexdump ตัวเลือกนี้ถือว่ากลุ่มไบต์เป็นคำใน
ลำดับไบต์ของ little-endian การจัดกลุ่มเริ่มต้น 4 ไบต์อาจเปลี่ยนแปลงได้โดยใช้ -g.
ตัวเลือกนี้ใช้กับ hexdump เท่านั้น โดยปล่อยให้เป็นตัวแทน ASCII (หรือ EBCDIC)
ไม่เปลี่ยนแปลง บรรทัดคำสั่งเปลี่ยน -r, -p, -i ไม่ทำงานกับโหมดนี้
-g ไบต์ | -ขนาดกลุ่ม ไบต์
แยกเอาท์พุตของทุก ๆไบต์> ไบต์ (อักขระฐานสิบหกสองตัวหรือตัวเลขแปดบิต
แต่ละ) โดยช่องว่าง ระบุ -g 0 เพื่อระงับการรวมกลุ่มไบต์> ค่าเริ่มต้นเป็น 2
ในโหมดปกติ 4 ในโหมด little-endian และ 1 ในโหมดบิต การจัดกลุ่มไม่ได้
นำไปใช้กับคำลงท้ายหรือรวมรูปแบบ
-h | -ช่วยด้วย
พิมพ์สรุปคำสั่งที่มีอยู่และออก ไม่มีการดัมพ์ฐานสิบหก
-i | - รวม
เอาต์พุตใน C รวมถึงรูปแบบไฟล์ มีการเขียนคำจำกัดความอาร์เรย์แบบคงที่ที่สมบูรณ์
(ตั้งชื่อตามไฟล์อินพุต) เว้นแต่ xxd จะอ่านจาก stdin
-l len | - เลน len
หยุดเขียนแล้วlen> ออกเตต
-o ชดเชย
เพิ่มชดเชย> ไปยังตำแหน่งไฟล์ที่แสดง
-p | -ปล | -postscript | -ที่ราบ
เอาต์พุตในรูปแบบ hexdump แบบต่อเนื่อง postscript ยังเป็นที่รู้จักกันในนามรูปแบบ hexdump ธรรมดา
-r | - ย้อนกลับ
การดำเนินการย้อนกลับ: แปลง (หรือแพตช์) hexdump เป็นไบนารี ถ้าไม่เขียนถึง
stdout, xxd เขียนลงในไฟล์เอาต์พุตโดยไม่ตัดทอน ใช้การรวมกัน
-r -p เพื่ออ่านการทิ้งเลขฐานสิบหกธรรมดาโดยไม่มีข้อมูลหมายเลขบรรทัดและไม่มี a
เค้าโครงคอลัมน์เฉพาะ อนุญาตให้เว้นวรรคและตัวแบ่งบรรทัดเพิ่มเติม
ทุกแห่ง
-แสวงหา ชดเชย
เมื่อใช้หลังจาก -r: ย้อนกลับด้วยชดเชย> เพิ่มในตำแหน่งไฟล์ที่พบใน hexdump
-s [+][-]แสวงหา
เริ่มต้นที่ขอ> ไบต์เอบีเอส (หรือ rel.) ออฟเซ็ต infile + แสดงว่าการแสวงหาคือ
สัมพันธ์กับตำแหน่งไฟล์ stdin ปัจจุบัน (ไม่มีความหมายเมื่อไม่ได้อ่านจาก
มาตรฐาน) - บ่งชี้ว่าการแสวงหาควรเป็นอักขระหลายตัวจากจุดสิ้นสุดของ
อินพุต (หรือถ้ารวมกับ +: ก่อนตำแหน่งไฟล์ stdin ปัจจุบัน) ปราศจาก
-s ตัวเลือก xxd เริ่มต้นที่ตำแหน่งไฟล์ปัจจุบัน
-u ใช้อักษรฐานสิบหกตัวพิมพ์ใหญ่ ค่าเริ่มต้นคือตัวพิมพ์เล็ก
-v | -version
แสดงสตริงเวอร์ชัน
คำเตือน
xxd -r มีเวทย์มนตร์ในตัวในขณะที่ประเมินข้อมูลหมายเลขบรรทัด ถ้าผลลัพธ์
สามารถค้นหาไฟล์ได้ดังนั้นผ้าลินินที่จุดเริ่มต้นของแต่ละบรรทัด hexdump อาจออกจาก
ลำดับ เส้นอาจขาดหายไป หรือทับซ้อนกัน ในกรณีเหล่านี้ xxd will ลสิค(2) ต่อไป
ตำแหน่ง. หากค้นหาไฟล์เอาต์พุตไม่ได้ จะอนุญาตเฉพาะช่องว่างเท่านั้น ซึ่งจะถูกเติม
โดยเป็นโมฆะไบต์
xxd -r ไม่เคยสร้างข้อผิดพลาดในการแยกวิเคราะห์ ขยะถูกข้ามไปอย่างเงียบ ๆ
เมื่อแก้ไข hexdumps โปรดทราบว่า xxd -r ข้ามทุกอย่างในบรรทัดอินพุตหลังจาก
อ่านคอลัมน์ข้อมูลฐานสิบหกให้เพียงพอ (ดูตัวเลือก -c) นี่ก็หมายความว่าการเปลี่ยนแปลง
ไปยังคอลัมน์ ascii (หรือ ebcdic) ที่พิมพ์ได้จะถูกละเว้นเสมอ การเปลี่ยนกลับเป็นธรรมดา (หรือ
postscript) สไตล์ hexdump ด้วย xxd -r -p ไม่ขึ้นอยู่กับจำนวนคอลัมน์ที่ถูกต้อง
สิ่งใดก็ตามที่ดูเหมือนเลขฐานสิบหกจะถูกตีความ
สังเกตความแตกต่างระหว่าง
% xxd -i ไฟล์
และ
% xxd -i < ไฟล์
xxd -s +แสวงหา อาจจะแตกต่างจาก xxd -s ขอเป็น ลสิค(2) ใช้เพื่อ "กรอกลับ" อินพุต NS
'+' สร้างความแตกต่างหากแหล่งอินพุตเป็น stdin และหากตำแหน่งไฟล์ของ stdin ไม่ใช่
ที่จุดเริ่มต้นของไฟล์ตามเวลาที่ xxd เริ่มทำงานและได้รับการป้อนข้อมูล ต่อไปนี้
ตัวอย่างอาจช่วยชี้แจง (หรือทำให้สับสนมากขึ้น!)...
กรอกลับ stdin ก่อนอ่าน; จำเป็นเพราะ `cat' ได้อ่านจนจบ
มาตรฐาน
% sh -c "แมว > สำเนาธรรมดา; xxd -s 0 > hex_copy" < ไฟล์
Hexdump จากตำแหน่งไฟล์ 0x480 (=1024+128) เป็นต้นไป เครื่องหมาย `+' หมายถึง "สัมพันธ์กับ
ตำแหน่งปัจจุบัน" ดังนั้น `128' จะเพิ่มเป็น 1k โดยที่ dd ค้างไว้
% sh -c " dd ของ=plain_snippet บีเอส=1k นับ=1; xxd -s +128 > hex_snippet" < ไฟล์
Hexdump จากตำแหน่งไฟล์ 0x100 ( = 1024-768) เปิดอยู่
% sh -c " dd ของ=plain_snippet บีเอส=1k นับ=1; xxd -s + -768 > hex_snippet" < ไฟล์
อย่างไรก็ตาม นี่เป็นสถานการณ์ที่ไม่ค่อยเกิดขึ้น และแทบไม่ต้องใช้ `+' ผู้เขียนชอบ
เพื่อตรวจสอบผลกระทบของ xxd ด้วย สเตรซ(1) หรือ มัด(1) ทุกครั้งที่ใช้ -s
ตัวอย่าง
พิมพ์ทุกอย่างยกเว้นสามบรรทัดแรก (ฐานสิบหก 0x30 ไบต์) ของ ไฟล์.
% xxd -s 0x30 ไฟล์
พิมพ์ 3 บรรทัด (ฐานสิบหก 0x30 ไบต์) จากจุดสิ้นสุดของ ไฟล์.
% xxd -s -0x30 ไฟล์
พิมพ์ 120 ไบต์เป็น hexdump แบบต่อเนื่องด้วย 20 ออคเต็ตต่อบรรทัด
% xxd -l 120 -ปล -c 20 xxd.1
2e54482058584420312022417567757374203139
39362220224d616e75616c207061676520666f72
20787864220a2e5c220a2e5c222032317374204d
617920313939360a2e5c22204d616e2070616765
20617574686f723a0a2e5c2220202020546f6e79
204e7567656e74203c746f6e79407363746e7567
Hexdump 120 ไบต์แรกของ man page นี้ด้วย 12 octets ต่อบรรทัด
% xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
000000c: 7567 7573 7420 3139 3936 2220 สิงหาคม 1996"
0000018: 224d 616e 7561 6c20 7061 6765 "หน้าคู่มือ
0000024: 2066 6f72 2078 7864 220a 2e5c สำหรับ xxd"..\
0000030: 220a 2e5c 2220 3231 7374 204d "..\" วันที่ 21
000003c: 6179 2031 3939 360a 2e5c 2220 ปี 1996..\"
0000048: 4d61 6e20 7061 6765 2061 7574 หน้าคนอัตโนมัติ
0000054: 686f 723a 0a2e 5c22 2020 ห:..\"
0000060: 546f 6e79 204e 7567 656e 7420 โทนี่ นูเจนต์
000006c: 3c74 6f6e 7940 7363 746e 7567
แสดงเฉพาะวันที่จากไฟล์ xxd.1
% xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3231 7374 204d 6179 2031 3939 36 21 พฤษภาคม 1996
คัดลอก อินพุต_ไฟล์ ไปยัง เอาต์พุต_ไฟล์ และนำหน้า 100 ไบต์ของค่า 0x00
% xxd อินพุต_ไฟล์ | xxd -r -s 100 > เอาต์พุต_ไฟล์
แก้ไขวันที่ในไฟล์ xxd.1
% เสียงสะท้อน "0000037: 3574 68 " | xxd -r - xxd.1
% xxd -s 0x36 -l 13 -c 13 xxd.1
0000036: 3235 7468 204d 6179 2031 3939 36 25 พฤษภาคม 1996
สร้างไฟล์ 65537 ไบต์ที่มีไบต์ทั้งหมด 0x00 ยกเว้นไฟล์สุดท้ายคือ 'A' (ฐานสิบหก
0x41)
% เสียงสะท้อน "010000: 41 " | xxd -r > ไฟล์
Hexdump ไฟล์นี้ด้วย autoskip
% xxd -a -c 12 ไฟล์
0000000: 0000 0000 0000 0000 0000 0000 ............
*
000fffc: 0000 0000 40 ....อา
สร้างไฟล์ขนาด 1 ไบต์ที่มีอักขระ 'A' ตัวเดียว ตัวเลขหลัง '-r -s' จะเพิ่มไปยัง
ผ้าลินินที่พบในแฟ้ม; ผล ไบต์นำจะถูกระงับ
% เสียงสะท้อน "010000: 41 " | xxd -r -s -0x10000 > ไฟล์
ใช้ xxd เป็นตัวกรองภายในตัวแก้ไข เช่น เป็นกลุ่ม(1) เพื่อ hexdump พื้นที่ที่ทำเครื่องหมายระหว่าง `a'
และ `z'
:'a,'z!xxd
ใช้ xxd เป็นตัวกรองภายในตัวแก้ไข เช่น เป็นกลุ่ม(1) เพื่อกู้คืน hexdump ไบนารีที่ทำเครื่องหมาย
ระหว่าง 'a' และ 'z'
:'a,'z!xxd -r
ใช้ xxd เป็นตัวกรองภายในตัวแก้ไข เช่น เป็นกลุ่ม(1) เพื่อกู้คืน hexdump หนึ่งบรรทัด
เลื่อนเคอร์เซอร์ไปที่บรรทัดแล้วพิมพ์:
!!xxd -r
อ่านอักขระตัวเดียวจากบรรทัดอนุกรม
% xxd -c1 < /dev/term/b &
% สติ < /dev/term/b -เสียงสะท้อน -opost -ไอซิก -ไอแคนนอน นาที 1
% เสียงสะท้อน -n foo > /dev/term/b
กลับ VALUES
ค่าความผิดพลาดต่อไปนี้จะถูกส่งกลับ:
0 ไม่พบข้อผิดพลาด
-1 ไม่รองรับการทำงาน ( xxd -r -i ยังเป็นไปไม่ได้)
เกิดข้อผิดพลาด 1 รายการขณะแยกวิเคราะห์ตัวเลือก
2 ปัญหาเกี่ยวกับไฟล์อินพุต
3 ปัญหาเกี่ยวกับไฟล์เอาต์พุต
ไม่สามารถเข้าถึงตำแหน่งการค้นหาที่ต้องการได้ 4,5
ใช้ xxd ออนไลน์โดยใช้บริการ onworks.net