Introduzione
I file creati in DOS/Windows utilizzano il ritorno a capo (\r ) e avanzamento riga (\n ) per le terminazioni di riga. Tuttavia, i file in Unix/Linux utilizzano esclusivamente l'avanzamento di riga.
Pertanto, quando trasferisci un file da un sistema all'altro, assicurati di convertire i file.
In questo tutorial imparerai come trasferire file da DOS a Unix e viceversa.
Conversione di file su Linux
Esistono diversi modi per trasferire file per utilizzare le terminazioni di riga appropriate. Converti i file usando:
dos2unix
comandounix2dos
comandosed
command (vedi tutorial sul comando sed di Linux)tr
comando- Vi/Vim editor di testo (vedi cheat sheet dei comandi di Vim)
perl
comando a una riga
Opzione 1:Conversione da DOS a UNIX con il comando dos2unix
Il modo più semplice per convertire le interruzioni di riga in un file di testo è utilizzare dos2unix strumento.
Installa lo strumento eseguendo il comando:
sudo apt install dos2unix
oppure:
sudo dnf install dos2unix
Se scarichi un file creato in DOS/Windows sul tuo sistema Linux, puoi convertirlo usando il dos2unix
comando:
dos2unix [file_name]
Il comando converte il file senza salvarlo nel formato originale. Se vuoi salvare il file originale, aggiungi il -b
attributo prima del nome del file. In questo modo viene creato un file di backup con lo stesso nome e il .bak estensione.
dos2unix -b [file_name]
Opzione 2:convertire UNIX in DOS usando il comando unix2dos
Per convertire un file creato su un sistema Linux nel formato DOS, eseguire il comando:
unix2dos [file_name]
In alternativa, aggiungi il -b
attributo per salvare il file originale come backup:
unix2dos -b [file_name]
Opzione 3:utilizzo del comando sed
Puoi anche utilizzare il sed
(editor di flusso) per rimuovere la riga di ritorno a capo finali. La sintassi del comando per farlo è:
sed 's/^M$//' [original_file_name]>[converted_file_name]
Invece di digitare semplicemente ^M
, premi Ctrl+V
seguito da Ctrl+M
per inserire il simbolo di ritorno a capo. Quando si utilizza il sed
comando, specificare il nome del file DOS [original_file_name]
e come vuoi denominare il file convertito [converted_file_name]
.
Per cambiare il formato del file da Unix a DOS , usa il comando:
sed 's/$/^M/' [original_file_name]>[converted_file_name]
Opzione 4:utilizzo del comando tr
Un altro modo per convertire un file nel formato Unix è rimuovere \r le terminazioni di riga con il tr
comando. Il tr
command è un'utilità della riga di comando per tradurre o eliminare caratteri.
Utilizzare il comando nel seguente formato:
tr -d '\r' < [original_file_name]>[converted_file_name]
Opzione 5:utilizzo dell'editor di testo Vim
È inoltre possibile rimuovere le terminazioni delle righe di ritorno a capo dai file in formato DOS utilizzando l'editor di testo Vi/Vim.
Apri il file in Vi/Vim:
vi [file_name]
Quindi premi :
e digita il seguente comando Vi/Vim (assicurandoti di digitare Ctrl+V
quindi Ctrl+m
invece di ^m
):
:%s/^ m //g
Opzione 6:utilizzo di un Perl One Liner
Infine, puoi usare un comando Perl one-liner per eliminare tutti \r terminazioni di riga. Gli on-liner Pearl sono script che si adattano a una singola riga di codice.
Per sostituire tutte le terminazioni di ritorno a capo e di avanzamento riga con solo avanzamento riga:
1. Aprire il file nell'editor di testo Vi/Vim.
2. Premi :
per richiedere la riga di comando.
3. Digita il seguente comando e premi Invio:
perl -pi -e 's/\r\n/\n/g' [file_name]
Dovresti vedere subito le modifiche nel file.
Esempio:conversione di un file di esempio da DOS a formato Unix
Supponiamo che tu abbia scaricato un file denominato file-dos-campione .
Aprendo il file usando l'editor di testo Vim/Vi, vedresti che dopo ogni fine riga c'è ^M
(un ritorno a capo).
Un altro modo per vedere il file utilizza sia il ritorno a capo che l'avanzamento riga per le terminazioni di riga è visualizzare il file in valori ottali.
Per farlo, esegui il comando:
od -bc sample-dos-file.txt
L'output mostra il contenuto del file con i suoi valori ottali, come nell'immagine sottostante. Puoi vedere che ogni fine di riga è contrassegnata con i valori ottali 015 (\r) e 012 (\n) .
Ora, per convertire il file e rimuovere tutte le terminazioni di ritorno a capo, dovresti eseguire il comando:
dos2unix sample-dos-file
Apri lo stesso file in Vim/Vi. Non include alcun ^M
simboli che segnalano la fine della riga.
Per confermare che il file è in formato Unix, puoi anche aprire e visualizzare il contenuto in valori ottali. L'output dovrebbe visualizzare solo 012 valori per \n .