W Как я могу добавить вывод строки в MD5 в файл, например, добавить MD5 Hello, world! в файл /home/documents/helloworld.txt
Эхо-текст и труба к md5sum. Перенаправьте вывод в файл:
echo "Hello, World!" | md5sum > "/home/user/documents/helloworld.txt"
РЕДАКТИРОВАТЬ: Как указывает @EliahKagan, это включает в себя завершающий перевод строки. См. Его отличный ответ для лучшего решения.
Если вы не не хотите хэшировать завершающий перевод новой строки , используйте:
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
.
Наконец, для интерактивного использования есть еще один способ сделать это:
md5sum
(или md5sum> outfile
для перенаправления на outfile
). md5sum
читает ноль байтов. Это условие «конец файла», поэтому md5sum
прекращает чтение и дает результат. На практике это проще и быстрее, чем я его озвучил. Это работает, потому что терминалы обрабатывают Ctrl + D . (В редком случае, когда вы хотите отправить этот символ буквально как часть вашей строки, вы можете нажать Ctrl + V , а затем сразу Ctrl + D .)
Если ваша строка заканчивается новой строкой, пропустите шаг 3, поскольку буфер уже очищен. То есть, если последняя нажатая клавиша была , введите (или если вы вставили текст, и этот текст заканчивается новой строкой, поэтому вы находитесь в начале строки), нажмите Ctrl + D только один раз вместо двух.
Обратите внимание, что с учетом предостережения, что вы должны вводить строку в свой терминал, этот метод является полностью общим. В вашей строке могут быть другие символы новой строки. Например, вы можете ввести md5sum
, затем , ввести , затем привет
, затем , ввести , затем world
, затем дважды Ctrl + D , и это дает тот же результат, что и printf 'hello \ nworld' | md5sum
.