Coba file
kemudian file -k
kemudiandos2unix -ih
file
biasanya akan cukup. Tetapi untuk kasus yang sulit coba file -k
atau dosunix -ih
.
Detail di bawah ini.
Mencoba file -k
Versi singkat: file -k somefile.txt
akan memberi tahu Anda.
- Ini akan menampilkan
with CRLF line endings
akhir baris DOS / Windows.
- Ini akan menampilkan
with LF line endings
akhir MAC line.
- Dan untuk Linux / Unix line "CR" itu hanya akan menampilkan
text
. (Jadi jika tidak secara eksplisit menyebutkan jenis line endings
maka ini secara implisit berarti: "CR line endings" .)
Versi panjang lihat di bawah.
Contoh dunia nyata: Pengkodean Sertifikat
Terkadang saya harus memeriksa ini untuk file sertifikat PEM.
Masalahnya dengan teratur file
adalah ini: Terkadang ia mencoba menjadi terlalu pintar / terlalu spesifik.
Mari kita coba kuis kecil: Saya punya beberapa file. Dan salah satu dari file-file ini memiliki akhiran baris yang berbeda. Yang mana?
(Ngomong-ngomong: seperti inilah direktori "pekerjaan sertifikat" saya yang khas.)
Mari kita coba secara teratur file
:
$ file -- *
0.example.end.cer: PEM certificate
0.example.end.key: PEM RSA private key
1.example.int.cer: PEM certificate
2.example.root.cer: PEM certificate
example.opensslconfig.ini: ASCII text
example.req: PEM certificate request
Hah. Itu tidak memberitahuku akhir baris. Dan saya sudah tahu bahwa itu adalah file cert. Saya tidak perlu "mengajukan" untuk mengatakan itu kepada saya.
Apa lagi yang bisa Anda coba?
Anda dapat mencoba dos2unix
dengan --info
sakelar seperti ini:
$ dos2unix --info -- *
37 0 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
Jadi itu memberitahu Anda bahwa: yup, "0.example.end.cer" pastilah orang yang aneh. Tapi ujung garis seperti apa yang ada? Apakah Anda tahu format output dos2unix dengan hati? (Bukan saya.)
Tapi untungnya ada opsi --keep-going
(atau -k
singkatnya) di file
:
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text, with CRLF line terminators\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
Luar biasa! Sekarang kita tahu bahwa file ganjil kita memiliki CRLF
akhiran baris DOS ( ). (Dan file-file lain memiliki LF
akhiran baris Unix ( ). Ini tidak eksplisit dalam output ini. Ini implisit. Hanya cara file
mengharapkan file teks "biasa" menjadi.)
(Jika Anda ingin membagikan mnemonik saya: "L" adalah untuk "Linux" dan untuk "LF".)
Sekarang mari kita ubah pelakunya dan coba lagi:
$ dos2unix -- 0.example.end.cer
$ file --keep-going -- *
0.example.end.cer: PEM certificate\012- , ASCII text\012- data
0.example.end.key: PEM RSA private key\012- , ASCII text\012- data
1.example.int.cer: PEM certificate\012- , ASCII text\012- data
2.example.root.cer: PEM certificate\012- , ASCII text\012- data
example.opensslconfig.ini: ASCII text\012- data
example.req: PEM certificate request\012- , ASCII text\012- data
Baik. Sekarang semua sertifikat memiliki akhiran baris Unix.
Mencoba dos2unix -ih
Saya tidak tahu ini ketika saya menulis contoh di atas tetapi:
Sebenarnya dos2unix akan memberi Anda baris tajuk jika Anda menggunakan -ih
(kependekan --info=h
) seperti:
$ dos2unix -ih -- *
DOS UNIX MAC BOM TXTBIN FILE
0 37 0 no_bom text 0.example.end.cer
0 27 0 no_bom text 0.example.end.key
0 28 0 no_bom text 1.example.int.cer
0 25 0 no_bom text 2.example.root.cer
0 35 0 no_bom text example.opensslconfig.ini
0 19 0 no_bom text example.req
Dan momen "sebenarnya" lainnya: Format tajuk sangat mudah diingat: Inilah dua mnemonik:
- Ini DUMB (kiri ke kanan: d untuk Dos, u untuk Unix, m untuk Mac, b untuk BOM).
- Dan juga: "DUM" hanyalah urutan abjad dari D, U dan M.
Bacaan lebih lanjut
man less
,.