GNU/Linux >> Belajar Linux >  >> Linux

Perintah Biner Dan Mode Teks Md5sum?

GNU md5sum perintah memiliki dua mode:biner mode dan teks mode. Saya kira perbedaannya hanya pada bagaimana karakter baris baru ditangani? Apakah saya benar?

Pada GNU/Linux, kedua mode selalu menghasilkan hasil yang sama, jadi hanya menggunakan -b dan -t pilihannya adalah untuk menunjukkan bendera (* atau ) digunakan sebelum nama file?

Dalam keadaan apa mode dapat menghasilkan hasil yang berbeda? Pada sistem Windows/MacOS? (Versi untuk platform ini tersedia?)

Jawaban yang Diterima:

Di 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 bersama GNU coreutils 8.21; Saya melihat versi yang lebih lama (8.12) tidak memiliki pemberitahuan ini, tetapi saya kira hal yang sama juga berlaku.

Meskipun AFAICT md5sum tidak distandarisasi secara resmi (misalnya, oleh POSIX), tersedia di berbagai platform dalam berbagai implementasi dan jelas ada beberapa upaya untuk membuatnya sesuai satu sama lain untuk kemudahan penggunaan di seluruh sistem.

Sehubungan dengan ini, Standar ISO/ANSI C mencakup fungsi aliran tingkat tinggi untuk mengakses file. Sebagai bagian dari standar, ini tersedia pada sistem operasi apa pun yang mengimplementasikan ISO C melalui pustaka bersama atau kompiler. Karena hampir semua sistem operasi memiliki ini (dan mereka sendiri paling sering ditulis dalam C), ini adalah semacam bahasa universal yang digunakan untuk mengimplementasikan perangkat lunak yang berpotensi sangat portabel.

Mempertimbangkan fungsinya, sangat mungkin untuk menulis md5sum yang akan dikompilasi dan bekerja pada sistem operasi apa pun. Saya tidak mengklaim ini benar untuk versi coreutils GNU, tetapi salah satu fungsi aliran file tingkat tinggi yang disebutkan sebelumnya adalah fopen() , yang diamanatkan oleh ISO C untuk menyertakan b switch yang digunakan dalam membuka file untuk menunjukkan sedang dibuka "sebagai file biner". Apa yang mungkin berarti atau butuhkan dari sistem bukan ditentukan oleh standar, itu hanya diperlukan untuk ada sehingga dapat digunakan pada sistem di mana mungkin ada beberapa (apa saja ) alasannya.

Tidak ada alasan seperti itu pada sistem operasi bergaya linux/POSIX/*nix, jadi sakelar tidak melakukan apa pun. Dari spesifikasi POSIX (superset dari ISO C) untuk fopen():

Karakter 'b' tidak akan berpengaruh, tetapi diperbolehkan untuk kesesuaian standar ISO C.

Jadi, md5sum yang benar-benar portabel implementasi mungkin menggunakan fungsi aliran file tingkat tinggi ISO, karena tidak ada metode lain untuk mengakses file di ISO C (sebagian besar platform, termasuk yang keluhan POSIX, memiliki metode tingkat rendahnya sendiri juga, tetapi menggunakan ini tidak akan portabel karena mereka tidak dalam ISO C), dan itu juga harus mengimplementasikan -b dan -t tandai untuk menambahkan atau tidak menambahkan b pilihan untuk fopen() ketika membaca file. Pada sistem yang tidak berarti, tidak akan ada bedanya.

Terkait:ulimit PICKLE:"Operasi tidak diizinkan" dan "Perintah tidak ditemukan"?

Sekali lagi, saya tidak mengatakan md5sum GNU ditulis dengan cara yang benar-benar portabel atau berasal dari yang ada, tetapi jelas ia mencoba untuk mematuhi, dalam pengoperasiannya, dengan yang ada. Perhatikan bahwa memiliki flag yang tidak melakukan apa-apa tidak sama dengan tidak memiliki flag — dalam kasus sebelumnya, itu ditentukan untuk baik-baik saja tetapi tidak melakukan apa-apa, sedangkan dalam kasus selanjutnya menggunakannya bisa menjadi kesalahan atau menyebabkan perilaku yang tidak terdefinisi.


Linux
  1. Awk satu baris dan skrip untuk membantu Anda mengurutkan file teks

  2. Kurang Menyoroti Perintah Dan Sintaks?

  3. vim Tutorial dengan Contoh Perintah

  1. Perintah Linux Cat:Penggunaan dan Contohnya

  2. Bash - Perintah tanggal dan spasi

  3. Ubah mode biner ke mode teks dan opsi sebaliknya

  1. Perintah Linux - Gambaran Umum dan Contoh

  2. Perintah Linux:pekerjaan, bg, dan fg

  3. Menggunakan perintah Sed,ex &Perl untuk menemukan dan mengganti teks di Linux