Відповідь Стівена Кітта охоплює те, що я спробую висвітлити, чому ця зміна була здійснена. По-перше, хтось зауважив, що ім'я файлу, що містить нові рядки 1, може призвести до неоднозначного виведення . Наприклад, розглянемо цей вихід:
d41d8cd98f00b204e9800998ecf8427e foo
25af89c92254a806b2e93fffd8ac1814 bar
Чи означає це, що було два файли fooта barчи лише один файл, ім'я якого файлу "foo\n25af89c92254a806b2e93fffd8ac1814 bar"? Звичайно, ця остання можливість є малоймовірною, але вона можлива. Щоб вирішити двозначність, розробники вирішили вийти з нових рядків із зворотною косою рисою ( \). Потім результат стає помітним. Однак тоді є ще одна неоднозначність:
764efa883dda1e11db47671c4a3bbd9e foo\nbar
Чи містить ім'я цього файлу з нового рядка або зворотної косої межі , за яким слід n? Щоб вирішити цю проблему, нам потрібно уникати зворотних нахилів, щоб останній випадок став:
764efa883dda1e11db47671c4a3bbd9e foo\\nbar
Нарешті, вони вирішили доповнити кожен вихідний рядок, який містить такі вхідні знаки, з \\полегшенням для аналізатора виявити, чи було виконано проходження. Імовірно, це було зроблено для того, щоб дозволити парсерам обробляти висновки як з епізодуючих версій, так md5sumі з невідбійних версій (non-GNU). Прапор також означає, що "дорогого" відключення не потрібно робити, коли це не потрібно. Ви можете бачити приклад цього розбору в дії md5sum.cсам по собі (рядок 382 у пов'язаній версії).
1 Під новим рядком я маю на увазі персонажа, \nякий іноді також конкретно називають передавачем ліній або LF ; див md5sum.c.
*sumутиліти (того ж сімейства, якmd5sum, e, gsha1sumтощо) в GNU coreutils роблять те саме.