Linux
如何使 hexdump 不等待來自標準輸入的 16 個字元來顯示其十六進制值?
如果我
hexdump
在終端中沒有任何參數打開:hexdump
當我在終端中輸入內容並按
Enter
時,hexdump
將顯示我輸入的任何字元的十六進制值。但
hexdump
如果我輸入 16 個字元,只會顯示十六進制值,例如:在這裡,我輸入了
a
15 次字元並按下Enter
(因此hexdump
收到 16 個字元 (15a
+\n
))。但如果我輸入少於 16 個字元,例如:
在這裡,我輸入了
a
14 次字元並按下Enter
(因此hexdump
收到 15 個字元 (14a
+\n
))。在這種情況下hexdump
沒有顯示任何東西。我可以
hexdump
顯示接收到的任何長度字元的十六進制值,而不是等待接收 16 個字元嗎?注意:我不想“使用 hexdump 和 xxd 的選項來將一個字節顯示為每行的十六進制”(如此處的評論中所建議的那樣)。我想要做的基本上是例如知道 A 的十六進制值是什麼,而不必輸入額外的 15 個字元來獲取它。
試試
hexdump -v -e '/1 "%02X\n"'
。每行顯示一個十六進製字節,因此行輸出緩沖不會阻止行顯示。然後您只需鍵入 A 並返回即可知道 A 的十六進制值。您仍然必須鍵入 return,因為 shell 緩衝區還對輸入進行行緩衝。
man ascii
也有效。:-)
可以將無緩衝包裝 hexdump 寫入到 stdbuf 的同一行。Bash 範例(由於某些讀取命令選項而需要它):
while read -s -n1 k; do printf $k; done | stdbuf -o0 hexdump -e '1/1 "%x"'