웹사이트 검색

초보자를 위한 Linux xxd 명령 자습서(예제 포함)


이 페이지에서

  1. Linux xxd 명령어는 어떤 용도로 사용되나요?
  2. Q1. xxd 명령을 사용하는 방법?\n
  3. Q2. xxd로 몇 줄을 건너뛰는 방법은 무엇입니까?
  4. Q3. xxd 출력을 특정 길이로 제한하는 방법은 무엇입니까?\n
  5. Q4. 열 길이를 설정하는 방법은 무엇입니까?\n
  6. Q5. xxd가 바이너리 덤프를 생성하는 방법은 무엇입니까?\n
  7. 결론

텍스트 파일에 대한 16진수 덤프가 필요하십니까? 이를 수행할 수 있는 명령줄 유틸리티를 찾고 계십니까? 글쎄, 당신을 위해 이것을 할 수있는 xxd라는 명령이 있기 때문에 당신은 운이 좋습니다. 이 자습서에서는 이해하기 쉬운 몇 가지 예를 사용하여 xxd에 대해 설명합니다. 하지만 그 전에 여기에 있는 모든 예제가 Ubuntu 22.04 LTS 시스템에서 테스트되었음을 언급할 가치가 있습니다.

Linux xxd 명령어는 어떤 용도로 사용되나요?

Linux의 xxd 명령을 사용하면 hexdump를 만들거나 그 반대로도 할 수 있습니다. 구문은 다음과 같습니다.

xxd [OPTIONS] [file]

도구 매뉴얼 페이지에서 설명하는 방법은 다음과 같습니다.

xxd  creates  a hex dump of a given file or standard input.  It can also convert a hex dump back to its original binary form.  Like
uuencode(1) and uudecode(1) it allows the transmission of binary data in a `mail-safe' ASCII representation, but has the  advantage
of decoding to standard output.  Moreover, it can be used to perform binary file patching.

다음은 xxd가 어떻게 작동하는지 더 잘 이해할 수 있는 몇 가지 Q&A 스타일의 예입니다.

Q1. xxd 명령을 사용하는 방법?

간단 해. 예를 들어 아래와 같은 내용을 포함하는 test.txt 텍스트 파일이 있다고 가정합니다.

No.|Country|Yes/No
01|India|Y
02|US|Y
03|Australia|Y

04|China|N
05|Russia|Y
06|Japan|Y

07|Singapore|Y
08|South Korea|N
09|Finland|Y
10|Ireland|Y

xxd를 사용하여 파일 내용을 16진수로 변환하는 방법은 다음과 같습니다.

xxd test.txt

결과는 다음과 같습니다.

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|Y.03|Austral
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  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61   Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

Q2. xxd로 몇 줄을 건너뛰는 방법은 무엇입니까?

전체 파일의 16진수 덤프를 원하지 않는다고 가정합니다. 대신 도구가 특정 줄에서 변환을 시작하기를 원합니다. 그런 다음 -s 명령을 사용하여 이를 수행할 수 있습니다.

예를 들어, xxd가 3번째 줄부터 16진수 덤프를 생성하도록 하려면 다음과 같이 xxd에 지시하는 방법이 있습니다.

xxd -s 0x30 test.txt

생성된 출력은 다음과 같습니다.

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  Japan|Y..07|Sing
00000060: 7061 6f72 657c 590a 3038 7c53 6f75 7468  paore|Y.08|South
00000070: 204b 6f72 6561 7c4e 0a30 397c 4669 6e61   Korea|N.09|Fina
00000080: 6c61 6e64 7c59 0a31 307c 4972 656c 616e  land|Y.10|Irelan
00000090: 647c 590a                                d|Y.

따라서 이 경우 3행부터 16진수 덤프가 생성되는 것을 볼 수 있습니다.

Q3. xxd 출력을 특정 길이로 제한하는 방법은 무엇입니까?

이전 섹션에서 xxd가 특정 지점에서 변환을 시작하도록 하는 방법에 대해 설명했습니다. 그러나 특정 지점으로의 변환을 제한하는 방법도 있습니다. 이것은 -l 명령줄 옵션을 사용하여 수행할 수 있습니다.

예를 들어 xxd가 test.txt의 처음 세 줄에 대해서만 덤프를 생성하도록 하려면 다음과 같이 사용하십시오.

xxd -l 0x30 test.txt

생성된 출력은 다음과 같습니다.

00000000: 4e6f 2e7c 436f 756e 7472 797c 5965 732f  No.|Country|Yes/
00000010: 4e6f 0a30 317c 496e 6469 617c 590a 3032  No.01|India|Y.02
00000020: 7c55 537c 590a 3033 7c41 7573 7472 616c  |US|Y.03|Austral

Q4. 열 길이를 설정하는 방법은 무엇입니까?

xxd가 출력에서 더 적거나 더 많은 열을 생성하도록 하려면 -c 옵션을 사용하고 거기에 열 수를 지정하십시오. 이 옵션을 사용하는 예제 명령은 다음과 같습니다.

xxd -c 5 test.txt

결과는 다음과 같습니다.

00000000: 4e6f 2e7c 43  No.|C
00000005: 6f75 6e74 72  ountr
0000000a: 797c 5965 73  y|Yes
0000000f: 2f4e 6f0a 30  /No.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  Japan
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.

따라서 출력에서 5개의 열만 생성된 것을 볼 수 있습니다.

Q5. xxd가 바이너리 덤프를 생성하는 방법은 무엇입니까?

네, 이것도 가능합니다. -b 명령줄 옵션은 xxd가 이진수로 덤프를 생성하도록 합니다. 이 도구에 대한 매뉴얼 페이지의 내용은 다음과 같습니다.

-b | -bits
Switch to bits (binary digits) dump, rather than hexdump.  This option writes octets as eight digits "1"s and  "0"s  instead
of  a  normal  hexadecimal  dump. Each line is preceded by a line number in hexadecimal and followed by an ascii (or ebcdic)
representation. The command line switches -r, -p, -i do not work with this mode.

명령:

xxd -b test.txt

예를 들면 다음과 같습니다.

결론

보시다시피 xxd 명령은 16진수 및 이진 파일 내용을 처리하는 경우에 유용합니다. 이 자습서에서는 xxd가 제공하는 몇 가지 기본 옵션에 대해 논의했습니다. 연습을 마치면 도구 설명서 페이지로 이동하여 자세한 내용을 알아보세요.