Почему символ новой строки стоит перед пробелом в выводе hexdump?

477
Ярослав Рахматуллин

Используя hexdump, печать этих символов в «каноническом» формате дает результат, который я ожидаю, в то время как формат по умолчанию отбрасывает меня.

$ echo " " |hexdump # Reversed? 0000000 0a20 0000002  $ echo -n " " |hexdump # Ok, fair enough. 0000000 0020  $ echo " " |hexdump -C # Canonical 00000000 20 0a | .| 00000002 

С другой строкой, такой как «123», вывод еще более запутан:

$ echo "123" |hexdump 0000000 3231 0a33 0000004 

Вывод здесь не кажется «перевернутым», а скорее перемешан. Что (кратко) здесь происходит?

2
Это похоже на инструмент, над которым работали авторы Git. Это занимает простое задание и усложняет ... jww 7 лет назад 0

1 ответ на вопрос

1
Nicole Hamilton

The default format is 16-bit little-endian unsigned ints.

The manual page of hexdump explains the default format as well:

 -x Two-byte hexadecimal display. Display the input offset in hexadecimal, followed by eight space-separated, four-column, zero-filled, two-byte quantities of input data, in hexadecimal, per line. (...) If no format strings are specified, the default display is equivalent to specifying the -x option. 
Возможно, не является частью краткого ответа, но знаете ли вы, почему _that_ является форматом по умолчанию? Я хочу спросить, для чего это удобно? Ярослав Рахматуллин 11 лет назад 0
Это осталось от того, когда Unix был изобретен на 16-битных миникомпьютерах в 70-х годах. Nicole Hamilton 11 лет назад 0

Похожие вопросы