md5sum команда двоичный и текстовый режим

Команда GNU md5sum имеет два режима: двоичный и текстовый . Я думаю, разница заключается только в том, как обрабатываются символы новой строки? Я прав?

В GNU / Linux оба режима всегда дают одинаковый результат, поэтому единственное использование опций -b и -t – указывать флаг ( * или ) используется до имени файла?

В каких обстоятельствах режимы могут давать разные результаты? В системах Windows / MacOS? (Версии для этих платформ доступны?)

One Solution collect form web for “md5sum команда двоичный и текстовый режим”

В GNU / Linux оба режима всегда дают одинаковый результат

Да, прямо. От man md5sum :

Примечание: нет разницы между двоичным и текстовым режимами в системе [sic] GNU.

Это из реализации md5sum которая поставляется с GNU coreutils 8.21; Я замечаю, что более старая версия (8.12) не имеет этого уведомления, но я предполагаю, что все равно будет правдой.

Хотя AFAICT md5sum официально не стандартизирован (например, POSIX), он доступен на разных платформах в различных реализациях, и, очевидно, есть некоторые попытки сделать их совместимыми друг с другом для удобства использования в разных системах.

В связи с этим стандарт ISO / ANSI C включает в себя функции потока высокого уровня для доступа к файлам. Как часть стандарта, они доступны в любой операционной системе, которая реализует ISO C через общую библиотеку или компилятор. Поскольку почти все операционные системы имеют это доступное (и сами чаще всего пишутся на языке C), это своего рода универсальный язык, используемый для реализации потенциально очень портативного программного обеспечения.

Учитывая то, что он делает, было бы вполне возможно написать md5sum который будет компилировать и работать в любой операционной системе. Я не утверждаю, что это относится к версии GNU coreutils, но одна из функций потока файлов высокого уровня, упомянутых ранее, – fopen() , которая обязана ISO C включать b переключатель, используемый при открытии файла, чтобы указать, что он открыт "как двоичный файл". То, что это может означать или требует от системы , не предусмотрено стандартом, оно просто необходимо для существования, поэтому его можно использовать в системе, где может быть какая-то ( любая ) причина для этого.

Подобной причины нет в операционных системах linux / POSIX / * nix, поэтому коммутатор ничего не делает. Из спецификации POSIX (надмножество ISO C) для fopen () :

Символ «b» не должен иметь эффекта, но допускается для стандартного соответствия ISO C.

Таким образом, полностью переносимая реализация md5sum может использовать функции потока файлов высокого уровня ISO, поскольку нет других способов доступа к файлам в ISO C (большинство платформ, включая жалобы POSIX, также имеют свои методы более низкого уровня, но используя эти не будут переносимыми, потому что они не соответствуют ISO C), и он также должен реализовать флаги -b и -t чтобы добавить или не добавить параметр b для fopen() при чтении файла. В системах, где это бессмысленно, это не будет иметь никакого значения.

Опять же, я не говорю о том, что md5sum GNU написан таким совершенно переносимым способом или является производным от того, который есть, но, очевидно, он пытается выполнить в своей работоспособности тот, который есть. Обратите внимание, что наличие флага, который ничего не делает, не совпадает с флагом – в первом случае он указан в порядке, но ничего не делает, тогда как в последнем случае использование может быть ошибкой или привести к неопределенному поведению ,

  • Определить новый символ строки в текстовом файле?
  • Обработка текста: замена строк в строке соответствующими строками
  • Лучшая вики-версия Linux с открытым исходным кодом с встроенной поддержкой аутентификации Windows (NTLM)
  • Распечатайте pdf как paps, но с фактическими шрифтами?
  • uniq показывает повторяющиеся строки
  • Программа Shell для отображения текстовых файлов с линейкой столбцов
  • Количество символов в команде Unix wc
  • Использование источника, загружаемого в Windows на платформе Linux
  • Строчные изменения в Unix
  • textutil конвертировать PDF в txt, производя искаженный вывод
  • Как размножить файл данных с другим файлом данных индекса?
  • Linux и Unix - лучшая ОС в мире.