0
Может кто-нибудь предложить обходной путь для этой ошибки:Как заставить xxd -r работать с выходом xxd -i?
cat /bin/ls |xxd -g 1 -i | xxd -r
xxd: sorry, cannot seek backwards.
Но если вы делаете:
cat /bin/ls |xxd -g 1 | xxd -r
Это нормально. Это ошибка?
В прошлом я смог выполнить это, но теперь мне просто интересно, существуют ли какие-либо альтернативы?
Казалось бы, -i заставляет xxd хотеть искать stdin назад, что, конечно, невозможно. Возможно, он этого не делал, и более новая версия начала это делать. Трудно сказать, является ли это ошибкой или «ожидаемым поведением», но вы могли бы обойти его, используя временный файл между первой и второй командами. – kcraigie
Он не хочет искать во входном потоке. Он говорит, что не может искать обратно в потоке вывода. Проблема заключается в том, что 'xxd -r' ожидает чтения формата вывода' xxd' по умолчанию, а не формата вывода 'xxd -i'. Он ожидает чтения смещений файлов и интерпретирует '0xed' как более раннее смещение, чем' 0xfa', или что-то в этом роде. –