Вывести MD5Sum из строки в файл

W Как я могу добавить вывод строки в MD5 в файл, например, добавить MD5 Hello, world! в файл /home/documents/helloworld.txt

0
задан 16 July 2020 в 00:00

2 ответа

Эхо-текст и труба к md5sum. Перенаправьте вывод в файл:

echo "Hello, World!" | md5sum > "/home/user/documents/helloworld.txt"

РЕДАКТИРОВАТЬ: Как указывает @EliahKagan, это включает в себя завершающий перевод строки. См. Его отличный ответ для лучшего решения.

1
ответ дан 30 July 2020 в 22:07

Если вы не не хотите хэшировать завершающий перевод новой строки , используйте:

printf '%s' 'string' | md5sum >outfile

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

Таким образом, с новой строкой:

$ echo 'Hello, World!' | md5sum
bea8252ff4e80f41719ea13cdf007273  -
$ md5sum <<<'Hello, World!'
bea8252ff4e80f41719ea13cdf007273  -
$ md5sum <<'EOF'
Hello, World!
EOF
bea8252ff4e80f41719ea13cdf007273  -
$ printf '%s\n' 'Hello, World!' | md5sum
bea8252ff4e80f41719ea13cdf007273  -

Без новой строки:

$ printf '%s' 'Hello, World!' | md5sum
65a8e27d8879283831b664bd8b7f0ad4  -
$ echo -n 'Hello, World!' | md5sum
65a8e27d8879283831b664bd8b7f0ad4  -

Во всех этих методы, вы можете перенаправить вывод md5sum , например, написав > outfile рядом с ним для записи в outfile вместо вашего терминала. В зависимости от ваших целей, любая из них может быть разумной. Однако, если ваша цель состоит в том, чтобы вычислить хеш MD5 для Hello, World! (или любой другой вашей строки), а не для Hello, World! с добавленной новой строкой, тогда вы должны Не используйте ни один из методов, добавляющих новую строку.

Как показано, echo без -n , здесь строк , здесь документов ] и printf с \ n производят перевод строки, в то время как printf без \ n и echo с 117583] -n оставь это. Обратите внимание, что если ваша строка не t содержит любые % или \ символов (которые printf обрабатывает специально в своем первом аргументе), вы даже можете написать:

$ printf 'Hello, World!' | md5sum
65a8e27d8879283831b664bd8b7f0ad4  -

Обратите внимание, что printf обычно предпочтительнее echo .


Наконец, для интерактивного использования есть еще один способ сделать это:

  1. Запустить md5sum (или md5sum> outfile для перенаправления на outfile ).
  2. Введите вашу строку.
  3. Если введенная вами строка не заканчивалась новой строкой, нажмите Ctrl + D . Это очищает буфер, даже если вы находитесь в середине строки и буфер (вероятно) не заполнен.
  4. Нажмите Ctrl + D еще раз . Это очищает буфер, но он пуст, поэтому md5sum читает ноль байтов. Это условие «конец файла», поэтому md5sum прекращает чтение и дает результат.

На практике это проще и быстрее, чем я его озвучил. Это работает, потому что терминалы обрабатывают Ctrl + D . (В редком случае, когда вы хотите отправить этот символ буквально как часть вашей строки, вы можете нажать Ctrl + V , а затем сразу Ctrl + D .)

Если ваша строка заканчивается новой строкой, пропустите шаг 3, поскольку буфер уже очищен. То есть, если последняя нажатая клавиша была , введите (или если вы вставили текст, и этот текст заканчивается новой строкой, поэтому вы находитесь в начале строки), нажмите Ctrl + D только один раз вместо двух.

Обратите внимание, что с учетом предостережения, что вы должны вводить строку в свой терминал, этот метод является полностью общим. В вашей строке могут быть другие символы новой строки. Например, вы можете ввести md5sum , затем , ввести , затем привет , затем , ввести , затем world , затем дважды Ctrl + D , и это дает тот же результат, что и printf 'hello \ nworld' | md5sum .

2
ответ дан 30 July 2020 в 22:07

Другие вопросы по тегам:

Похожие вопросы: