Я хочу вывести контрольную сумму sha
(здесь используется sha1sum
, я знаю, что она не должна использоваться для шифрования, не волнуйтесь, это нормально для моих нужд) на диск из сценария bash. До сих пор я могу его выбросить (без каких-либо дополнительных ...). Но мне не удается вывести его в двоичном формате, вместо этого я получаю только незашифрованный шестнадцатеричный дамп:
$ echo "bla" | sha1sum | awk '{print $1}' | head -c-1 > test
$ ls -lrth test
-rw-r--r-- 1 jrlab jrlab 40 mars 2 15:02 test
$ xxd test
00000000: 3034 3735 3935 6430 6661 6539 3732 6662 047595d0fae972fb
00000010: 6564 3063 3531 6234 6134 3163 3761 3334 ed0c51b4a41c7a34
00000020: 3965 3063 3437 6262 9e0c47bb
Например, здесь, если я прав, вывод sha1
действительно составляет 20 байтов long, который требует 40 символов для представления в шестнадцатеричной распечатке (то есть 40 байтов с кодировкой шестнадцатеричной распечатки в ASCII, и это является причиной того, почему xxd может транскрибировать все байты файла как символы 0-f), и это то, что присутствует в моем файле. Как я могу изменить это так, чтобы размер test
составлял 20 байт на диске, то есть действительно записывался в двоичном формате?
Извините, если я пропустил простой способ сделать это, я гуглил (вероятно, неправильный вопрос) довольно долго не находя четкого ответа.