Чому новий рядок виходить перед пробілом у виході hexdump?


2

Використовуючи 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

Вихідні дані тут не здаються "зворотними", а скоріше перетасовуються. Що (коротко) відбувається тут?


Це схоже на інструмент, над яким працювали автори Git. Це займає просте завдання і ускладнює його ...
jww

Відповіді:


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.

Можливо , він НЕ є частиною короткої відповіді, але ви знаєте , чому , що це формат за замовчуванням? Я маю на увазі запитати, для чого це зручно?
Ярослав Рахматуллін

Це залишилося від часу, коли Unix був винайдений на 16-бітних мінікомп'ютерах у 70-х.
Ніколь Гамільтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.