Почему символ новой строки стоит перед пробелом в выводе hexdump?
Используя 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
Вывод здесь не кажется "перевернутым", а скорее перемешан. Что (кратко) здесь происходит?
1 ответ
Решение
Формат по умолчанию - 16-разрядные беззнаковые целые числа с прямым порядком байтов.
Страница руководства hexdump также объясняет формат по умолчанию:
-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.