поместите некоторую шестнадцатеричную строку в xxd, используя стандартный ввод, не генерирует никакого вывода

У меня проблема со сбором данных с помощью xxd со стандартного ввода. Вот команда:

xxd -r -p | dd of=/home/user/test/hex.bin obs=16

когда я выполняю эту команду в оболочке, она ожидает ввода. Я попытался ввести «0006303030304e430006303030304e43», затем нажмите Enter, но похоже, что xxd не получил мой ввод или не передал вывод в dd.

Например, это работает отлично:

echo '0006303030304e430006303030304e43' | xxd -r -p | dd of=/home/user/test/hex.bin obs=16

Чего я хочу добиться: я хочу поместить некоторую шестнадцатеричную строку, преобразовать ее в двоичную, а затем сохранить в файл в 16-битном фрагменте. Скрипт должен постоянно прослушивать стандартный ввод.

xxd так работает? Я пытался поставить \n или \r\n в конце шестнадцатеричной строки, но на выходе xxd ничего не было.

Спасибо за любую помощь.

С наилучшими пожеланиями!


person user2311165    schedule 20.03.2017    source источник


Ответы (2)


Просто добавьте команду - к команде xxd -r -p, чтобы она выглядела так:

echo '0006303030304e430006303030304e43' | xxd -r -p - | dd of=/home/user/test/hex.bin obs=16

Я нашел это на справочной странице для xxd; точнее, раздел OPTIONS:

Если infile указан как символ -, ввод берется из стандартного ввода.

person BottleNeck    schedule 22.01.2018

xxd все еще ожидает ввода; введите Control-D после того, как вы нажмете Enter, чтобы «закрыть» входной файл.

person chepner    schedule 20.03.2017
comment
Проблема в том, что я не хочу завершать команду. Я хочу сделать это следующим образом: стандартный ввод (шестнадцатеричная строка) -> xxd (двоичный) -> dd -> myfile.bin -> стандартный ввод... и так далее. - person user2311165; 21.03.2017