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 написан таким совершенно переносимым способом или является производным от того, который есть, но, очевидно, он пытается выполнить в своей работоспособности тот, который есть. Обратите внимание, что наличие флага, который ничего не делает, не совпадает с флагом – в первом случае он указан в порядке, но ничего не делает, тогда как в последнем случае использование может быть ошибкой или привести к неопределенному поведению ,

  • «Печатать» текстовый файл на изображения с макетом из командной строки
  • Получить «текстовое содержимое» файлов
  • Важна ли последняя новая строка в fstab?
  • Программа Shell для отображения текстовых файлов с линейкой столбцов
  • замените блок текста содержимым файла
  • Что называется символом ^ М?
  • grep для получения всей строки
  • Как вставить строку из файла A над FIRST LINE в файле B
  • Использование источника, загружаемого в Windows на платформе Linux
  • Больше сценариев оболочки, чем один в одном текстовом файле?
  • uniq показывает повторяющиеся строки
  • Использование sed для выравнивания текста, начиная с шаблона и заканчивая строкой
  • Interesting Posts

    Ошибочное объяснение виртуальной памяти в TLDP

    Установка драйвера, источник ядра не найден

    ошибка сжатия, никакая файловая система не может монтировать root, панику ядра не синхронизировать

    Почему служба SMTP работает по умолчанию после установки?

    Возможно определить несуществующий процесс из pgrep

    Должен ли я заменить свой двоичный код системы PHP в / usr / bin самокомпилированным?

    Какие дистрибутивы поддерживают пакет ядра с поддержкой grsecurity

    vimrc указывает больше, чем 1 расширение файла в autocmd

    SSH на порту 443 с SSLH

    Как я могу остановить vim от редактирования каталогов?

    diff без включения удаленного контента

    предотвращение завершения bash от изменения переменной подчеркивания $ _

    US International Keyboard Layout не ведет себя так, как ожидалось?

    Как просмотреть 10-битные видео H264 (hi10p) в видеоиграх GStreamer, таких как Totem?

    «В этой системе переменные EFI не поддерживаются»

    Linux и Unix - лучшая ОС в мире.