GNU/Linux >> Linux の 問題 >  >> Linux

初心者向けのLinuxxxdコマンドチュートリアル(例付き)

テキストファイル用の16進ダンプが必要ですか?これを実行できるコマンドラインユーティリティをお探しですか? xxd と呼ばれるコマンドが存在するので、幸運です。 それはあなたのためにこれを行うことができます。このチュートリアルでは、わかりやすい例を使用してxxdについて説明します。ただし、その前に、ここでのすべての例がUbuntu18.04LTSマシンでテストされていることを言及する価値があります。

Linux xxdコマンドは何に使用されますか?

Linuxのxxdコマンドを使用すると、16進ダンプを作成したり、その逆を実行したりすることができます。その構文は次のとおりです。

xxd[オプション][ファイル]

そして、ツールのマニュアルページで説明されているのは次のとおりです。

 xxdは、特定のファイルまたは標準入力の16進ダンプを作成します。また、16進ダンプを元のバイナリ形式に戻すこともできます。 
uuencode(1)やuudecode(1)と同様に、「メールセーフ」なASCII表現でバイナリデータを送信できますが、
標準出力にデコードできるという利点があります。さらに、バイナリファイルのパッチ適用を実行するために使用できます。

以下は、xxdがどのように機能するかについてより良いアイデアを与えるはずのQ&Aスタイルの例です。

Q1。 xxdコマンドの使用方法は?

簡単だ。たとえば、次のような内容のテキストファイル「test.txt」があるとします。

いいえ。|国|はい/いいえ
01|インド|Y
02|米国|Y
03|オーストラリア|Y

04|中国| N
05|ロシア|Y
06|日本|Y

07|シンガポール|Y
08|韓国|N
09|フィンランド| Y
10|フィンランド|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|オーストラリア
00000030:6961 7c59 0a0a 3034 7c43 6869 6e61 7c4e ia |Y..04|中国|N
00000040:0a30 357c 5275 7373 6961 7c59 0a30 367c.05|ロシア|Y.06|
00000050:4a61 7061 6e7c 590a 0a30 377c 53696e67日本|Y..07|歌う
00000060:7061 6f72 657c 590a 3038 7c536f757468パオレ| Y.08|南
00000070:204b 6f72 6561 7c4e 0a30 397c 46696e61韓国|N.09|フィナ
00000080:6c61 6e64 7c59 0a31 307c 4972656c616e土地|Y.10|イレラン
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|中国|N
00000040:0a30 357c 5275 7373 6961 7c59 0a30 367c.05|ロシア|Y.06|
00000050:4a61 7061 6e7c 590a 0a30 377c 53696e67日本|Y..07|歌う
00000060:7061 6f72 657c 590a 3038 7c53 6f75 7468 paore | Y.08|南
00000070:204b 6f72 6561 7c4e 0a30 397c 46696e61韓国|N.09|フィナ
00000080:6c61 6e64 7c59 0a31 307c 4972 656c616e土地|Y.10|イレラン
00000090:647c 590a Y したがって、この場合、16進ダンプが3行目以降に生成されていることがわかります。

Q3。 xxd出力を特定の長さに制限するにはどうすればよいですか?

前のセクションでは、xxdを特定のポイントから変換を開始する方法について説明しました。ただし、変換を特定のポイントに制限する方法もあります。これは、-lコマンドラインオプションを使用して実行できます。

たとえば、xxdがtest.txtの最初の3行のみにダンプを作成するようにするには、次のように使用します。

 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|オーストラリア

Q4。列の長さを設定するにはどうすればよいですか?

xxdが出力に生成する列の数を減らしたり増やしたりする場合は、-cオプションを使用して、そこに列の数を指定します。このオプションを使用したコマンドの例を次に示します。

 xxd -c 5 test.txt 

そして、これが出力です:

 00000000:4e6f 2e7c 43 No. | C 
00000005:6f75 6e74 72 ountr
0000000a:797c 5965 73 y|はい
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|オーストラリア
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 70616e日本
00000055:7c59 0a0a 30 | Y..0
0000005a:377c 5369 6e 7|罪
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
000007d: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は2進数でダンプを生成します。このツールについてのマニュアルページの内容は次のとおりです。

 -b | -bits 
16進ダンプではなく、ビット(2進数)ダンプに切り替えます。このオプションは、オクテットを通常の16進ダンプの代わりに8桁の「1」と「0」として書き込みます。
各行の前には16進数の行番号があり、その後にASCII(またはebcdic)表現が続きます。
コマンドラインスイッチ-r、-p、-iは、このモードでは機能しません。

次に例を示します:

結論

ご覧のとおり、xxdコマンドは、16進数および2進数のファイルの内容を処理する場合に役立ちます。ここで、このチュートリアルでは、xxdが提供するいくつかの基本的なオプションについて説明しました。これらの練習が終わったら、ツールのマニュアルページにアクセスして詳細を確認してください。


Linux
  1. Linuxは初心者向けのコマンドチュートリアルを展開します(例付き)

  2. 初心者向けのLinuxファクターコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxnprocコマンドチュートリアル(例付き)

  1. Linux yes初心者向けコマンドチュートリアル(例付き)

  2. 初心者向けのLinuxsleepコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxbasenameコマンドチュートリアル(例付き)

  1. 初心者向けのLinuxtacコマンドチュートリアル(例付き)

  2. Linuxユーザー初心者向けコマンドチュートリアル(例付き)

  3. 初心者向けのLinuxsumコマンドチュートリアル(例付き)