hexdumpがstdinの16文字が16進値を表示するのを待たないようにするにはどうすればよいですか?

hexdumpがstdinの16文字が16進値を表示するのを待たないようにするにはどうすればよいですか?

hexdump引数なしで端末を開くと:

hexdump

端末に何かを入力してキーを押すと、Enter入力したhexdump文字の16進値が表示されます。

ただし、hexdump16文字を入力すると、16進値のみが表示されます。たとえば、次のようになります。

ここに画像の説明を入力してください。

aここでは文字を15回入力して押しましたEnter(だからhexdump16文字が受信されました(15+ a\n)。

ただし、たとえば、16文字未満を入力すると、次のようになります。

ここに画像の説明を入力してください。

ここでは文字をa14回入力して押しましたEnter(それでhexdump15文字が受信されました(14 a+ \n))。この場合、hexdump何も表示されません。

hexdump16文字が受信されるのを待つのではなく、受信した長さ文字の16進値を表示できますか?

ノート:したくない」xxdオプションと一緒にhexdumpを使用して、1行あたり1バイトを16進数で表示します。「(ここでのコメントで提案されているように)。私がしたいのは、基本的にAの16進値を得るために追加の15文字を入力せずに知ることです。

答え1

努力するhexdump -v -e '/1 "%02X\n"'。 1行につき16進バイトが表示されるため、ライン出力バッファリングはライン表示を妨げません。

その後、Aと入力して戻り、Aの16進値を確認します。シェルバッファも入力を行バッファするため、まだreturnを入力する必要があります。

man asciiまた動作します。 :-)

答え2

同じ行のバッファリングされていないパック型16進ダンプをstdbufに作成できます。 Bashの例(一部の読み取りコマンドオプションのために必要です):

while read -s -n1 k; do printf $k; done | stdbuf -o0 hexdump -e '1/1 "%x"'

関連情報