Commande unix2dos sous Linux
unix2dosC'est un utilitaire pour convertir des fichiers texte au format Unix/Linux vers le format DOS/Windows. Il gère principalement le problème des fins de ligne dans les fichiers texte.
Dans les systèmes Unix/Linux, chaque ligne d'un fichier texte se termine parsaut de ligne (LF,n)comme terminateur ; tandis que dans les systèmes Windows, chaque ligne se termine parretour chariot + saut de ligne (CRLF,rn)comme terminateur. Cette différence peut entraîner des problèmes de formatage lors du partage de fichiers texte entre différents systèmes.
Pourquoi avez-vous besoin d'unix2dos
Vous pouvez avoir besoin d'utiliser unix2dos lorsque vous travaillez dans les scénarios suivants :
- Collaboration multiplateforme: Lorsque des scripts ou des fichiers de configuration écrits sous Linux doivent être utilisés sous Windows
- Transfert de fichiers: Transférer des fichiers depuis des systèmes Unix vers des systèmes Windows via FTP ou d'autres méthodes
- Compatibilité des outils: Certains outils Windows (tels que Notepad) ne peuvent pas afficher correctement les fins de ligne qui ne contiennent que LF
Installation d'unix2dos
La plupart des distributions Linux n'installent pas unix2dos par défaut, mais il peut être facilement installé via le gestionnaire de paquets :
Systèmes Debian/Ubuntu
Exemple
sudo apt-get install dos2unix
Systèmes CentOS/RHEL
sudo yum install dos2unix
Remarque
unix2dosetdos2unixIls sont généralement inclus dans le même paquet. Installation dudos2unixpaquet installera les deux outils en même temps.
Syntaxe de base
unix2dos [选项] 文件...
Options courantes
| Option | Description |
|---|---|
-bou--keep-bom |
Préserver la marque d'ordre des octets (BOM) UTF-8 |
-cou--convmode |
Mode de conversion (ascii, 7bit, iso, mac) |
-fou--force |
Forcer la conversion des fichiers binaires |
-hou--help |
Afficher les informations d'aide |
-kou--keepdate |
Préserver les horodatages des fichiers |
-Lou--license |
Afficher la licence du logiciel |
-lou--newline |
Ajouter uniquement des sauts de ligne |
-mou--add-bom |
Ajouter la marque d'ordre des octets UTF-8 |
-nou--newfile |
Écrire dans un nouveau fichier (ne pas modifier le fichier d'origine) |
-oou--oldfile |
Écrire dans le fichier d'origine (comportement par défaut) |
-qou--quiet |
Mode silencieux, ne pas afficher les avertissements |
-Vou--version |
Afficher les informations de version |
Exemples d'utilisation
Exemple 1 : Conversion de base
Convertir un fichier au format Unix au format DOS :
unix2dos file.txt
Cela vafile.txtconvertir les fins de ligne de LF en CRLF, en modifiant directement le fichier d'origine.
Exemple 2 : Préserver l'original et créer un nouveau fichier
Si vous souhaitez préserver le fichier d'origine et créer un nouveau fichier converti :
unix2dos -n unixfile.txt dosfile.txt
Exemple 3 : Convertir plusieurs fichiers par lot
Utilisez des jokers pour convertir plusieurs fichiers :
unix2dos *.txt
Exemple 4 : Convertir récursivement tous les fichiers d'un répertoire
Combinez avec lafindcommande pour traiter récursivement les répertoires :
find . -name "*.sh" -exec unix2dos {} ;
Exemple 5 : Préserver les horodatages des fichiers
Convertissez les fichiers mais ne modifiez pas leurs horodatages :
unix2dos -k file.txt
Scénarios d'application pratiques
Scénario 1 : Script shell exécuté sous Windows
Supposons que vous ayez écrit un script shell Linux, mais que vous deviez l'exécuter dans Git Bash ou WSL sous Windows :
unix2dos script.sh
Scénario 2 : Fichiers de configuration utilisés sur plusieurs plateformes
Lorsque les fichiers de configuration de votre application doivent être partagés sous Windows et Linux :
unix2dos config.properties
Scénario 3 : Partage de documents avec des utilisateurs Windows
Convertissez les fichiers Markdown au format Windows pour que vos collègues puissent les modifier avec Notepad :
unix2dos README.md
Précautions
- Fichiers binaires: Évitez d'utiliser unix2dos sur les fichiers binaires (tels que les images, les archives compressées) à moins de savoir clairement ce que vous faites (vous pouvez utiliser
-fforcer la conversion) - Fichiers de sauvegarde: Lorsque vous modifiez directement le fichier d'origine, il est recommandé de sauvegarder d'abord les fichiers importants
- BOM UTF-8: Windows a parfois besoin d'un BOM pour reconnaître correctement l'encodage UTF-8 ; vous pouvez utiliser
-moption pour ajouter - Conversion inverse: Si vous devez convertir le format DOS au format Unix, utilisez
dos2unixcommand
Questions fréquentes
Q1 : Comment vérifier le type de fin de ligne d'un fichier ?
Utilisez lafilecommande :
file filename.txt
ou utilisezcatpour afficher les caractères spéciaux :
cat -A filename.txt
Le format Unix affichera [symbol] à la fin de la ligne, le format DOS affichera$à la fin de la ligne, le format DOS affichera^M$。
Q2 : La taille du fichier change-t-elle après la conversion ?
Oui, parce que chaque ligne comporte un retour chariot (CR) supplémentaire, le fichier deviendra généralement légèrement plus volumineux.
Q3 : Pourquoi mon script signale-t-il des erreurs sous Windows ?
Cela peut être dû au fait que le format de fin de ligne est incorrect. Essayez de convertir avec unix2dos avant l'exécution.
Q4 : Comment détecter et convertir automatiquement dans un script ?
Vous pouvez combinerfilela commande avec des instructions conditionnelles :
Exemple
echo "Le fichier est déjà au format DOS"
else
unix2dos filename.txt
fi
Résumé
unix2dosC'est un outil simple mais puissant qui résout les problèmes de compatibilité de format de fichier texte multiplateforme. Après avoir lu cet article, vous devriez être capable de :
- Comprendre la différence entre les formats de fin de ligne Unix et DOS/Windows
- Installer et utiliser correctement la commande unix2dos
- Gérer divers scénarios de conversion de fichiers
- Éviter les erreurs de conversion courantes
N'oubliez pas que, dans un environnement de collaboration multiplateforme, maintenir la cohérence des formats de fichiers texte peut éviter de nombreux problèmes inutiles.
Autres extensions
Référence des commandes Linux