Présentation
Les fichiers créés sous DOS/Windows utilisent le retour chariot (\r ) et saut de ligne (\n ) pour les fins de ligne. Cependant, les fichiers sous Unix/Linux utilisent uniquement le saut de ligne.
Par conséquent, lors du transfert d'un fichier d'un système à un autre, assurez-vous de convertir les fichiers.
Dans ce didacticiel, vous apprendrez à transférer des fichiers de DOS vers Unix et vice-versa.
Convertir des fichiers sous Linux
Il existe plusieurs façons de transférer des fichiers pour utiliser les fins de ligne appropriées. Convertissez les fichiers en utilisant :
dos2unix
commandeunix2dos
commandesed
commande (voir le didacticiel de la commande Linux sed)tr
commande- Vi/Vim éditeur de texte (voir aide-mémoire des commandes Vim)
perl
commande en une ligne
Option 1 :Conversion de DOS en UNIX avec la commande dos2unix
Le moyen le plus simple de convertir les sauts de ligne dans un fichier texte est d'utiliser le dos2unix outil.
Installez l'outil en exécutant la commande :
sudo apt install dos2unix
ou :
sudo dnf install dos2unix
Si vous téléchargez un fichier créé sous DOS/Windows sur votre système Linux, vous pouvez le convertir en utilisant le dos2unix
commande :
dos2unix [file_name]
La commande convertit le fichier sans l'enregistrer dans le format d'origine. Si vous souhaitez enregistrer le fichier d'origine, ajoutez le -b
attribut avant le nom du fichier. Cela crée un fichier de sauvegarde sous le même nom et le .bak extension.
dos2unix -b [file_name]
Option 2 :Conversion d'UNIX en DOS à l'aide de la commande unix2dos
Pour convertir un fichier créé sur un système Linux au format DOS, exécutez la commande :
unix2dos [file_name]
Vous pouvez également ajouter le -b
attribut pour enregistrer le fichier d'origine en tant que sauvegarde :
unix2dos -b [file_name]
Option 3 :Utilisation de la commande sed
Vous pouvez également utiliser le sed
(éditeur de flux) pour supprimer la ligne de retour chariot terminaisons. La syntaxe de commande pour ce faire est :
sed 's/^M$//' [original_file_name]>[converted_file_name]
Au lieu de simplement taper ^M
, appuyez sur Ctrl+V
suivi de Ctrl+M
pour entrer le symbole de retour chariot. Lors de l'utilisation de sed
commande, spécifiez le nom du fichier DOS [original_file_name]
et comment vous voulez nommer le fichier converti [converted_file_name]
.
Pour changer le format de fichier d'Unix à DOS , utilisez la commande :
sed 's/$/^M/' [original_file_name]>[converted_file_name]
Option 4 :Utilisation de la commande tr
Une autre façon de convertir un fichier au format Unix consiste à supprimer \r les lignes se terminent par le tr
commande. Le tr
command est un utilitaire de ligne de commande pour traduire ou supprimer des caractères.
Utilisez la commande au format suivant :
tr -d '\r' < [original_file_name]>[converted_file_name]
Option 5 :Utiliser l'éditeur de texte Vim
Vous pouvez également supprimer les fins de ligne de retour chariot des fichiers au format DOS à l'aide de l'éditeur de texte Vi/Vim.
Ouvrez le fichier dans Vi/Vim :
vi [file_name]
Appuyez ensuite sur :
et tapez la commande Vi/Vim suivante (en vous assurant de taper Ctrl+V
puis Ctrl+m
au lieu de ^m
):
:%s/^ m //g
Option 6 :Utiliser un Perl One Liner
Enfin, vous pouvez utiliser une commande Perl à une ligne pour supprimer tous les \r fins de ligne. Les en ligne Pearl sont des scripts qui tiennent dans une seule ligne de code.
Pour remplacer tous les retours chariot et sauts de ligne par des sauts de ligne uniquement :
1. Ouvrez le fichier dans l'éditeur de texte Vi/Vim.
2. Appuyez sur :
pour demander la ligne de commande.
3. Saisissez la commande suivante et appuyez sur Entrée :
perl -pi -e 's/\r\n/\n/g' [file_name]
Vous devriez voir immédiatement les changements dans le fichier.
Exemple :Conversion d'un exemple de fichier du format DOS au format Unix
Supposons que vous ayez téléchargé un fichier nommé sample-dos-file .
En ouvrant le fichier à l'aide de l'éditeur de texte Vim/Vi, vous verriez qu'après chaque fin de ligne, il y a ^M
(un retour chariot).
Une autre façon de voir que le fichier utilise à la fois le retour chariot et le saut de ligne pour les fins de ligne consiste à afficher le fichier en valeurs octales.
Pour cela, lancez la commande :
od -bc sample-dos-file.txt
La sortie affiche le contenu du fichier avec ses valeurs octales, comme dans l'image ci-dessous. Vous pouvez voir que chaque fin de ligne est marquée avec les valeurs octales 015 (\r) et 012 (\n) .
Maintenant, pour convertir le fichier et supprimer toutes les fins de retour chariot, vous devez exécuter la commande :
dos2unix sample-dos-file
Ouvrez le même fichier dans Vim/Vi. Il n'inclut aucun ^M
symboles signalant la fin de ligne.
Pour confirmer que le fichier est au format Unix, vous pouvez également ouvrir l'affichage du contenu en valeurs octales. La sortie doit afficher uniquement le 012 valeurs pour \n .