Essayez file
alors file -k
alorsdos2unix -ih
file
sera généralement suffisant. Mais pour les cas difficiles, essayez file -k
ou dosunix -ih
.
Détails ci-dessous.
Essayer file -k
Version courte: file -k somefile.txt
vous le dira.
- Il sortira
with CRLF line endings
pour les fins de ligne DOS / Windows.
- Il sortira
with LF line endings
pour les fins de ligne MAC.
- Et pour la ligne Linux / Unix "CR", il sortira simplement
text
. (Donc, s'il ne mentionne explicitement aucun type, line endings
cela signifie implicitement: "fins de ligne CR" .)
Version longue voir ci-dessous.
Exemple concret: Encodage de certificats
Je dois parfois vérifier cela pour les fichiers de certificat PEM.
Le problème avec régulier file
est le suivant: Parfois, il essaie d'être trop intelligent / trop spécifique.
Essayons un petit quiz: j'ai quelques fichiers. Et l'un de ces fichiers a des fins de ligne différentes. Laquelle?
(Soit dit en passant: voici à quoi ressemble un de mes répertoires typiques de "travail de certificat".)
Essayons régulièrement 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
Huh. Il ne me dit pas les fins de ligne. Et je savais déjà qu'il s'agissait de fichiers cert. Je n'avais pas besoin de "fichier" pour me le dire.
Que pouvez-vous essayer d'autre?
Vous pouvez essayer dos2unix
avec le --info
commutateur comme ceci:
$ 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
Donc, cela vous dit que: oui, "0.example.end.cer" doit être l'homme étrange. Mais quel genre de fins de ligne existe-t-il? Connaissez- vous le format de sortie dos2unix par cœur? (Je ne.)
Mais heureusement, il y a l' option --keep-going
(ou -k
pour faire court) dans 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
Excellent! Nous savons maintenant que notre fichier impair a des CRLF
fins de ligne DOS ( ). (Et les autres fichiers ont des LF
fins de ligne Unix ( ). Ce n'est pas explicite dans cette sortie. C'est implicite. C'est juste la façon dont file
un fichier texte "normal" devrait l'être.)
(Si vous voulez partager mon mnémonique: "L" est pour "Linux" et pour "LF".)
Convertissons maintenant le coupable et réessayons:
$ 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
Bien. Désormais, tous les certificats ont des fins de ligne Unix.
Essayer dos2unix -ih
Je ne le savais pas quand j'écrivais l'exemple ci-dessus mais:
En fait, il s'avère que dos2unix vous donnera une ligne d'en-tête si vous utilisez -ih
(abréviation de --info=h
) comme ceci:
$ 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
Et un autre moment "en fait": Le format d'en-tête est vraiment facile à retenir: voici deux mnémoniques:
- C'est DUMB (de gauche à droite: d pour Dos, u pour Unix, m pour Mac, b pour BOM).
- Et aussi: "DUM" est juste l'ordre alphabétique de D, U et M.
Lectures complémentaires
man less
.