Pada GNU / Linux, kedua mode selalu menghasilkan hasil yang sama
Ya, secara eksplisit. Dari man md5sum
:
Catatan: Tidak ada perbedaan antara opsi mode biner dan teks pada sistem GNU [sic].
Ini dari md5sum
implementasi yang dikirimkan dengan GNU coreutils 8.21; Saya melihat versi yang lebih lama (8.12) tidak memiliki pemberitahuan ini tetapi saya menganggap hal yang sama juga berlaku.
Meskipun AFAICT md5sum
tidak secara resmi distandarisasi (misalnya, oleh POSIX), AFAICT tersedia di berbagai platform dalam berbagai implementasi dan jelas ada beberapa upaya untuk membuat ini sesuai satu sama lain untuk kemudahan penggunaan di seluruh sistem.
Sehubungan dengan ini, ISO / ANSI C Standard mencakup fungsi aliran tingkat tinggi untuk mengakses file. Sebagai bagian dari standar, ini tersedia pada sistem operasi apa pun yang menerapkan ISO C melalui perpustakaan bersama atau kompiler. Karena hampir semua sistem operasi memiliki ini tersedia (dan itu sendiri paling sering ditulis dalam C), itu adalah semacam bahasa universal yang digunakan untuk mengimplementasikan perangkat lunak yang berpotensi sangat portabel.
Mempertimbangkan apa yang dilakukannya, akan sangat layak untuk menulis sebuah md5sum
yang akan dikompilasi dan bekerja pada sistem operasi apa pun. Saya tidak mengklaim ini benar untuk versi GNU coreutils, tetapi salah satu fungsi aliran file tingkat tinggi yang disebutkan sebelumnya adalah fopen()
, yang diamanatkan oleh ISO C untuk memasukkan sebuah b
saklar yang digunakan dalam membuka file untuk menunjukkan bahwa itu sedang dibuka "sebagai biner mengajukan". Apa yang mungkin berarti atau memerlukan dari sistem tidak ditentukan oleh standar, itu hanya perlu ada sehingga dapat digunakan pada sistem di mana mungkin ada beberapa ( ada ) alasan untuk itu.
Tidak ada alasan seperti itu pada sistem operasi linux / POSIX / * nix-style, jadi switch tidak melakukan apa-apa. Dari spec POSIX (superset dari ISO C) untuk fopen () :
Karakter 'b' tidak akan berpengaruh, tetapi diizinkan untuk kesesuaian standar ISO C.
Jadi, md5sum
implementasi yang sepenuhnya portabel mungkin menggunakan fungsi aliran file tingkat tinggi ISO, karena tidak ada metode lain untuk mengakses file dalam ISO C (kebanyakan platform, termasuk yang keluhan POSIX, memiliki metode tingkat rendah mereka sendiri juga, tetapi menggunakan ini akan tidak portabel karena mereka tidak dalam ISO C), dan itu juga harus menerapkan -b
dan -t
tanda untuk menambah atau tidak menambahkan b
opsi fopen()
ketika membaca file. Pada sistem yang tidak ada artinya, tidak akan ada bedanya.
Sekali lagi, saya tidak mengatakan md5sum GNU ditulis dengan cara yang benar-benar portabel atau berasal dari yang, tetapi jelas ia berusaha untuk mematuhi, dalam operabilitasnya, dengan yang ada. Perhatikan bahwa memiliki bendera yang tidak melakukan apa-apa tidak sama dengan tidak memiliki bendera - dalam kasus sebelumnya, itu ditetapkan baik-baik saja tetapi tidak melakukan apa-apa, sedangkan dalam kasus kemudian menggunakannya dapat menjadi kesalahan atau menyebabkan perilaku yang tidak terdefinisi .