Bạn cần một hex dump cho một tệp văn bản? Bạn đang tìm một tiện ích dòng lệnh có thể thực hiện việc này? Vâng, bạn thật may mắn vì có một lệnh có tên là xxd có thể thực hiện việc này cho bạn. Trong hướng dẫn này, chúng ta sẽ thảo luận về xxd bằng một số ví dụ dễ hiểu. Nhưng trước khi thực hiện, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 22.04 LTS.
Và đây là cách trang hướng dẫn của công cụ giải thích về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách xxd hoạt động.
Sau đây là cách bạn có thể sử dụng xxd để chuyển đổi nội dung tệp thành hex:
Và đây là đầu ra:
Ví dụ, nếu bạn muốn xxd tạo lệnh dump hex từ dòng 3 trở đi, thì đây là cách bạn yêu cầu xxd thực hiện việc này:
Đây là kết quả đầu ra được tạo ra:
Vì vậy, bạn có thể thấy bản dump hex được tạo từ dòng 3 trở đi trong trường hợp này.
Ví dụ, để đảm bảo xxd chỉ tạo bản dump cho ba dòng đầu tiên của test.txt, hãy sử dụng lệnh này theo cách sau:
Đây là kết quả đầu ra mà lệnh này tạo ra:
Và đây là đầu ra:
Vì vậy, bạn có thể thấy chỉ có 5 cột được tạo ra trong đầu ra.
Lệnh:
Đây là một ví dụ:
Lệnh xxd của Linux được sử dụng để làm gì?
Lệnh xxd trong Linux cho phép bạn tạo một hexdump hoặc thậm chí làm ngược lại. Sau đây là cú pháp của nó:
Mã:
xxd [OPTIONS] [file]
Mã:
xxd tạo một bản dump hex của một tệp hoặc đầu vào chuẩn nhất định. Nó cũng có thể chuyển đổi bản dump hex trở lại dạng nhị phân ban đầu của nó. Giống như
uuencode(1) và uudecode(1), nó cho phép truyền dữ liệu nhị phân theo dạng ASCII `mail-safe', nhưng có lợi thế
là giải mã thành đầu ra chuẩn. Hơn nữa, nó có thể được sử dụng để thực hiện vá tệp nhị phân.
Câu hỏi 1. Làm thế nào để sử dụng lệnh xxd?
Rất đơn giản. Ví dụ, giả sử bạn có tệp văn bản 'test.txt' với nội dung như hiển thị bên dưới:
Mã:
Không.|Quốc gia|Có/Không
01|Ấn Độ|Y
02|Hoa Kỳ|Y
03|Úc|Y
04|Trung Quốc|N
05|Nga|Y
06|Nhật Bản|Y
07|Singapore|Y
08|Hàn Quốc|N
09|Phần Lan|Y
10|Ireland|Y
Mã:
xxd test.txt
Mã:
00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f Không.|Quốc gia|Có/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032 Số 01|Ấn Độ|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c |Hoa Kỳ|Y.03|Úc
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|Trung Quốc|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c .05|Nga|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67 Nhật Bản|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468 paore|Y.08|Nam
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61 Hàn Quốc|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e land|Y.10|Irelan
00000090: 647c 590a d|Y.
Câu hỏi 2. Làm thế nào để bỏ qua một vài dòng với xxd?
Giả sử bạn không muốn dump hex của toàn bộ tệp. Thay vào đó, bạn muốn công cụ bắt đầu chuyển đổi từ một dòng cụ thể. Sau đó, bạn có thể thực hiện việc này bằng lệnh -s.Ví dụ, nếu bạn muốn xxd tạo lệnh dump hex từ dòng 3 trở đi, thì đây là cách bạn yêu cầu xxd thực hiện việc này:
Mã:
xxd -s 0x30 test.txt
Mã:
00000030: 6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia|Y..04|China|N
00000040: 0a30 357c 5275 7373 6961 7c59 0a30 367c .05|Russia|Y.06|
00000050: 4a61 7061 6e7c 590a 0a30 377c 5369 6e67 Nhật Bản|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468 paore|Y.08|Nam
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61 Hàn Quốc|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e đất liền|Y.10|Irelan
00000090: 647c 590a d|Y.
Câu hỏi 3. Làm thế nào để giới hạn đầu ra xxd ở một độ dài cụ thể?
Trong phần trước, chúng ta đã thảo luận về cách làm cho xxd bắt đầu chuyển đổi từ một điểm cụ thể. Nhưng cũng có một cách để giới hạn chuyển đổi của nó ở một điểm cụ thể. Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -l.Ví dụ, để đảm bảo xxd chỉ tạo bản dump cho ba dòng đầu tiên của test.txt, hãy sử dụng lệnh này theo cách sau:
Mã:
xxd -l 0x30 test.txt
Mã:
00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f Không.|Quốc gia|Có/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032 Số.01|Ấn Độ|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c |US|Y.03|Austral
Câu hỏi 4. Làm thế nào để thiết lập độ dài cột?
Nếu bạn muốn xxd tạo ra ít hoặc nhiều cột hơn trong đầu ra, hãy sử dụng tùy chọn -c và chỉ định số lượng cột ở đó. Sau đây là một lệnh ví dụ sử dụng tùy chọn này:
Mã:
xxd -c 5 test.txt
Mã:
00000000: 4e6f 2e7c 43 Số|C
00000005: 6f75 6e74 72 số
0000000a: 797c 5965 73 y|Có
0000000f: 2f4e 6f0a 30 /Số.0
00000014: 317c 496e 64 1|Ind
00000019: 6961 7c59 0a ia|Y.
0000001e: 3032 7c55 53 02|US
00000023: 7c59 0a30 33 |Y.03
00000028: 7c41 7573 74 |Aust
0000002d: 7261 6c69 61 ralia
00000032: 7c59 0a0a 30 |Y..0
00000037: 347c 4368 69 4|Chi
0000003c: 6e61 7c4e 0a na|N.
00000041: 3035 7c52 75 05|Ru
00000046: 7373 6961 7c ssia|
0000004b: 590a 3036 7c Y.06|
00000050: 4a61 7061 6e Nhật Bản
00000055: 7c59 0a0a 30 |Y..0
0000005a: 377c 5369 6e 7|Sin
0000005f: 6770 616f 72 gpaor
00000064: 657c 590a 30 e|Y.0
00000069: 387c 536f 75 8|Sou
0000006e: 7468 204b 6f th Ko
00000073: 7265 617c 4e rea|N
00000078: 0a30 397c 46 .09|F
0000007d: 696e 616c 61 inala
00000082: 6e64 7c59 0a nd|Y.
00000087: 3130 7c49 72 10|Ir
0000008c: 656c 616e 64 eland
00000091: 7c59 0a |Y.
Câu hỏi 5. Làm thế nào để tạo xxd produce binary dump?
Có, điều này cũng có thể thực hiện được. Tùy chọn dòng lệnh -b khiến xxd tạo dump ở dạng số nhị phân. Đây là những gì trang hướng dẫn nói về công cụ này:
Mã:
-b | -bits
Chuyển sang dump bit (số nhị phân), thay vì hexdump. Tùy chọn này ghi octet dưới dạng tám chữ số "1" và "0" thay vì
dump thập lục phân thông thường. Mỗi dòng được bắt đầu bằng một số dòng ở dạng thập lục phân và theo sau là một biểu diễn ascii (hoặc ebcdic)
. Dòng lệnh chuyển đổi -r, -p, -i không hoạt động với chế độ này.
Mã:
xxd -b test.txt