Anda dapat menggunakan tr
untuk mengkonversi dari DOS ke Unix; namun, Anda hanya dapat melakukan ini dengan aman jika CR muncul di file Anda hanya sebagai byte pertama dari pasangan byte CRLF. Ini biasanya terjadi. Anda kemudian menggunakan:
tr -d '\015' <DOS-file >UNIX-file
Perhatikan bahwa namanya DOS-file
berbeda dari namanyaUNIX-file
; jika Anda mencoba menggunakan nama yang sama dua kali, Anda akan berakhir tanpa data dalam file.
Anda tidak dapat melakukannya sebaliknya (dengan standar 'tr').
Jika Anda tahu cara memasukkan carriage return ke skrip ( control-V, control-Muntuk memasukkan control-M), maka:
sed 's/^M$//' # DOS to Unix
sed 's/$/^M/' # Unix to DOS
di mana '^ M' adalah karakter kontrol-M. Anda juga dapat menggunakan mekanisme bash
Kutipan ANSI-C untuk menentukan carriage return:
sed $'s/\r$//' # DOS to Unix
sed $'s/$/\r/' # Unix to DOS
Namun, jika Anda harus melakukan ini sangat sering (lebih dari sekali, secara kasar), jauh lebih masuk akal untuk menginstal program konversi (misalnya dos2unix
dan unix2dos
, atau mungkin dtou
dan utod
) dan menggunakannya.
Jika Anda perlu memproses seluruh direktori dan subdirektori, Anda dapat menggunakan zip
:
zip -r -ll zipfile.zip somedir/
unzip zipfile.zip
Ini akan membuat arsip zip dengan ujung garis diubah dari CRLF ke CR. unzip
kemudian akan mengembalikan file yang dikonversi (dan meminta Anda file demi file - Anda dapat menjawab: Ya-untuk-semua). Kredit ke @vmsnomad untuk menunjukkan ini.
dos2unix
menggunakan manajer paket Anda, itu benar-benar jauh lebih sederhana dan memang ada di sebagian besar platform.