Альтернатива xxd, которая возвращает байты?
Я нахожусь на Mac OS X 10.8.2, под управлением скомпилированной копии xxd
v1.10 ( исходный код), а также копия xxd
это предустановлено на OS X.
Я пытаюсь сгенерировать подпись SHA1 в кодировке Base64 через цепочку переданных команд в Терминале.
Обычно я бы сделал что-то вроде следующего:
$ echo "foo" | openssl sha1 | xxd -p -r | base64 - > foo_sha1_signature
Файл foo_sha1_signature
обычно содержит хэш строки SHA1 в кодировке Base64 foo
,
Проблема в том, что xxd -p -r
не возвращает никаких данных, поэтому файл foo_sha1_signature
пустой.
Если я разделю команды, чтобы посмотреть на вывод из xxd -r
Я получаю результат (как указано ниже):
$ echo "foo" | openssl sha1 | xxd -p | xxd -r
7b36c94bcdf32bee$
Но если я передам стандартный вывод в файл, файл будет пуст:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r > foo_sha1_bytes
$ ls -al foo_sha1_bytes
-rw-r--r-- 1 alexpreynolds staff 0 Jan 2 23:02 foo_sha1_bytes
Если я пытаюсь передать стандартную ошибку, стандартный вывод показывает байты, а файл все еще пуст:
$ echo "foo" | openssl sha1 | xxd -p | xxd -r 2> foo_sha1_bytes
7b36c94bcdf32bee$
Наконец, если я сделаю все это в Linux, xxd
работает как положено (я получаю подпись в файле). Так что это, похоже, ошибка с тем, как xxd
работает в OS X 10.8.2.
Есть ли альтернатива с открытым исходным кодом xxd
который работает в Mac OS X и отправляет байтовое представление стандартного ввода в стандартный вывод?
1 ответ
Тебе стоит попробовать
xxd -b <file>
Он отобразит файл в двоичном режиме.