Comandi dos2unix e unix2dos di Linux

comando dos2unix

Su sistemi operativi simili a Unix, i comandi dos2unix e unix2dos convertono i file di testo normale dal formato DOS o Mac in Unix e viceversa.


Descrizione

Nei file di testo DOS / Windows, un'interruzione di riga, nota anche come newline, è una combinazione di due caratteri: un ritorno a capo (CR) seguito da un avanzamento di riga (LF). Nei file di testo Unix un'interruzione di riga è un singolo carattere: l'avanzamento di riga (LF). Nei file di testo Mac, prima di macOS X, un'interruzione di riga era un singolo carattere Carriage Return (CR). Oggi macOS utilizza le interruzioni di linea in stile Unix (LF).

I file binari vengono automaticamente ignorati, a meno che la conversione non sia forzata.

I file non regolari, come directory e FIFO, vengono automaticamente ignorati.

I collegamenti simbolici e i loro obiettivi sono mantenuti di default intatti. I collegamenti simbolici possono facoltativamente essere sostituiti oppure l'output può essere scritto sulla destinazione del collegamento simbolico. I collegamenti simbolici su Windows non sono supportati. I collegamenti simbolici di Windows vengono sempre sostituiti, mantenendo invariati gli obiettivi.

Dos2unix è stato modellato su dos2unix in SunOS / Solaris e ha modalità di conversione simili.


Sintassi

dos2unix [opzioni] [FILE ...] [-n INFILE OUTFILE ...]
unix2dos [opzioni] [FILE ...] [-n INFILE OUTFILE ...]

Opzioni

--

Tratta tutte le opzioni che seguono come nomi di file. Utilizzare questa opzione, ad esempio, se si desidera convertire file i cui nomi iniziano con un trattino. Quindi, per convertire un file chiamato "-foo", puoi usare questo comando:

dos2unix - -foo O nella nuova modalità file:

dos2unix -n - -foo out.txt

-ascii

Converti solo interruzioni di riga. Questa è la modalità di conversione predefinita.

-iso

Conversione tra set di caratteri DOS e ISO-8859-1. Vedi anche la sezione MODALITÀ DI CONVERSIONE.

-1252

Utilizzare la tabella codici 1252 di Windows (Europa occidentale).

-437

Utilizzare la tabella codici DOS 437 (US). Questa è la tabella codici predefinita utilizzata per la conversione ISO.

-850

Utilizzare la tabella codici DOS 850 (Europa occidentale)

-860

Utilizzare la tabella codici DOS 860 (portoghese).

-863

Utilizzare la tabella codici DOS 863 (francese canadese).

-865

Utilizzare la pagina di codice DOS 865 (nordico).

-7

Converti caratteri a 8 bit in spazio a 7 bit.

-c, --convmode CONVMODE

Imposta la modalità di conversione. Dove CONVMODE è uno di: ascii, 7bit, iso o mac, con ascii come impostazione predefinita.

-f, --force

Forza la conversione di file binari.

-h, --help

Visualizza aiuto ed esci.

-k, --keepdate

Mantenere l'indicatore della data del file di output uguale al file di input.

-L, --license

Visualizza la licenza del programma.

-l, --newline

Aggiungi nuova riga aggiuntiva.

dos2unix: solo le interruzioni di riga DOS vengono modificate in due interruzioni di riga Unix. In modalità Mac solo le interruzioni di riga del Mac vengono modificate in due interruzioni di riga Unix.

unix2dos: solo le interruzioni di riga Unix vengono modificate in due interruzioni di riga DOS. In modalità Mac le interruzioni di linea Unix vengono modificate in due interruzioni di linea Mac.

-m, --add-bom

Scrivere un segno di ordine byte UTF-8 nel file di output. Non usare mai questa opzione quando la codifica di output è diversa da UTF-8. Vedi anche la sezione UNICODE.

-n, --newfile OUTFILE DELL'INFILE ...

Nuova modalità file. Converti il ​​file INFILE e scrivi l'output nel file OUTFILE. I nomi dei file devono essere indicati in coppia e i caratteri jolly non devono essere utilizzati o si perderanno i file.

La persona che avvia la conversione in modalità nuovo file (accoppiato) sarà il proprietario del file convertito. Le autorizzazioni di lettura / scrittura del nuovo file saranno le autorizzazioni del file originale meno l'umask della persona che esegue la conversione.

-o, --oldfile FILE ...

Modalità file precedente. Convertire il file FILE e sovrascriverne l'output. Per impostazione predefinita, il programma viene eseguito in questa modalità. È possibile utilizzare nomi jolly.

Nella modalità file precedente (sul posto) il file convertito ottiene le stesse autorizzazioni proprietario, gruppo e lettura / scrittura del file originale. Inoltre, quando il file viene convertito da un altro utente che dispone delle autorizzazioni di scrittura sul file (ad esempio, root utente). La conversione verrà interrotta quando non è possibile conservare i valori originali. Il cambio di proprietario potrebbe significare che il proprietario originale non è più in grado di leggere il file. Il cambio di gruppo potrebbe essere un rischio per la sicurezza, il file potrebbe essere reso leggibile per le persone a cui non è destinato. La conservazione delle autorizzazioni di proprietario, gruppo e lettura / scrittura è supportata solo su Unix.

-q, --quiet

Modalità silenziosa. Elimina tutti gli avvisi e i messaggi. Il valore restituito è zero. Tranne quando vengono utilizzate opzioni della riga di comando errate.

-s, --safe

Salta i file binari (impostazione predefinita).

-F, --follow-link simbolico

Segui i collegamenti simbolici e converti gli obiettivi.

-R, --replace-link simbolico

Sostituisci i collegamenti simbolici con i file convertiti (i file di destinazione originali rimangono invariati).

-S, --skip-symlink

Mantieni invariati collegamenti e target simbolici (impostazione predefinita).

-V, --version

Visualizza le informazioni sulla versione ed esce.


Modalità Mac

In modalità normale le interruzioni di riga vengono convertite da DOS in Unix e viceversa. Le interruzioni di riga del Mac non vengono convertite.

In modalità Mac le interruzioni di riga vengono convertite da Mac a Unix e viceversa. Le interruzioni di riga DOS non vengono modificate.

Per eseguire in modalità Mac, utilizzare l'opzione della riga di comando "-c mac" o utilizzare i comandi "mac2unix" o "unix2mac".

Modalità di conversione

ascii

In modalità "ascii" vengono convertite solo le interruzioni di riga. Questa è la modalità di conversione predefinita.

Sebbene il nome di questa modalità sia ASCII, che è uno standard a 7 bit, la modalità effettiva è 8 bit. Utilizzare sempre questa modalità quando si convertono file Unicode UTF-8.

7bit

In questa modalità tutti i caratteri non ASCII a 8 bit (con valori da 128 a 255) vengono convertiti in uno spazio a 7 bit.

iso

I caratteri vengono convertiti tra un set di caratteri DOS (tabella codici) e un set di caratteri ISO ISO-8859-1 (Latin-1) su Unix. I caratteri DOS senza equivalente ISO-8859-1, per i quali non è possibile la conversione, vengono convertiti in un punto. Lo stesso vale per i caratteri ISO-8859-1 senza controparte DOS.

Quando viene utilizzata solo l'opzione "-iso" dos2unix tenterà di determinare la tabella codici attiva. Quando ciò non è possibile, dos2unix utilizzerà la tabella codici predefinita CP437, utilizzata principalmente negli Stati Uniti. Per forzare una specifica tabella codici utilizzare le opzioni "-437" (US), "-850" (Europa occidentale), "-860" (portoghese), "-863" (francese canadese) o "-865" (nordico) . La tabella codici di Windows CP1252 (Europa occidentale) è supportata anche con l'opzione "-1252". Per altre tabelle di codici usare dos2unix in combinazione con iconv. iconv può convertire tra un lungo elenco di codifiche di caratteri.

Non utilizzare mai la conversione ISO su file di testo Unicode. Danneggerà i file codificati UTF-8.

Qualche esempio:

Converti dalla tabella codici predefinita DOS in Unix Latin-1:

dos2unix -iso -n in.txt out.txt

Convertire da DOS CP850 a Unix Latin-1:

dos2unix -850 -n in.txt out.txt

Convertire da Windows CP1252 a Unix Latin-1:

dos2unix -1252 -n in.txt out.txt

Convertire da Windows CP1252 a Unix UTF-8 (Unicode):

iconv -f CP1252 -t UTF-8 in.txt | dos2unix> out.txt

Converti dalla tabella codici predefinita Unix Latin-1 a DOS:

unix2dos -iso -n in.txt out.txt

Convertire da Unix Latin-1 a DOS CP850:

unix2dos -850 -n in.txt out.txt

Convertire da Unix Latin-1 a Windows CP1252:

unix2dos -1252 -n in.txt out.txt

Convertire da Unix UTF-8 (Unicode) a Windows CP1252:

unix2dos <in.txt | iconv -f UTF-8 -t CP1252> out.txt

Vedi anche http://czyborra.com/charsets/codepages.html e http://czyborra.com/charsets/iso8859.html.

NOTA: le modalità di conversione ascii, 7bit e iso sono simili a quelle di dos2unix / unix2dos in SunOS / Solaris.


Unicode

codifiche

Esistono diverse codifiche Unicode. Su Linux i file Unicode sono in genere codificati nella codifica UTF-8. Su Windows Unicode i file di testo possono essere codificati in UTF-8, UTF-16 o UTF-16 big endian, ma sono per lo più codificati in formato UTF-16.

Conversione

I file di testo Unicode possono avere interruzioni di riga DOS, Unix o Mac, come i normali file di testo.

Tutte le versioni di dos2unix e unix2dos possono convertire file codificati UTF-8, poiché UTF-8 è stato progettato per la retrocompatibilità con ASCII.

dos2unix e unix2dos con supporto Unicode UTF-16 possono leggere file di testo con codifica UTF-16 di piccole e grandi dimensioni. Per vedere se dos2unix è stato creato con il supporto UTF-16 digitare "dos2unix -V".

Le versioni Windows di dos2unix e unix2dos convertono i file con codifica UTF-16 sempre in file con codifica UTF-8. Le versioni Unix di dos2unix / unix2dos convertono i file codificati UTF-16 nella codifica dei caratteri locali quando è impostato su UTF-8. Utilizzare il comando locale per scoprire qual è la codifica del carattere locale.

Poiché i file di testo in formato UTF-8 sono ben supportati su Windows e Unix, dos2unix e unix2dos non hanno alcuna opzione per scrivere file UTF-16. Tutti i caratteri UTF-16 possono essere codificati in UTF-8. La conversione da UTF-16 a UTF-8 è senza perdita. I file UTF-16 verranno ignorati su Unix quando la codifica del carattere locale non è UTF-8, per evitare la perdita accidentale di testo. Quando si verifica un errore di conversione da UTF-16 a UTF-8, ad esempio quando il file di input UTF-16 contiene un errore, il file verrà ignorato.

La conversione in modalità ISO e 7 bit non funziona sui file UTF-16.

Marchio ordine byte

Sui file di testo Unicode Windows in genere è presente un Byte Order Mark (BOM), poiché molti programmi Windows (incluso Blocco note) aggiungono le distinte base per impostazione predefinita. Vedi anche https://en.wikipedia.org/wiki/Byte_order_mark.

Sui file Unicode Unix in genere non è presente una DBA. Si presume che i file di testo siano codificati nella codifica dei caratteri della locale.

dos2unix può rilevare solo se un file è nel formato UTF-16 se il file ha una DBA. Quando un file UTF-16 non ha una DBA, dos2unix vedrà il file come file binario.

Usa dos2unix in combinazione con iconv per convertire un file UTF-16 senza BOM.

Dos2unix non scrive mai una DBA nel file di output, a meno che non si usi l'opzione "-m".

Unix2dos scrive una DBA nel file di output quando il file di input ha una DBA o quando viene utilizzata l'opzione "-m".

Esempi

Converti da Windows UTF-16 (con BOM) a Unix UTF-8:

dos2unix -n in.txt out.txt

Converti da Windows UTF-16 (senza BOM) a Unix UTF-8:

iconv -f UTF-16 -t UTF-8 in.txt | dos2unix> out.txt

Converti da Unix UTF-8 a Windows UTF-8 con BOM:

unix2dos -m -n in.txt out.txt

Converti da Unix UTF-8 a Windows UTF-16:

unix2dos <in.txt | iconv -f UTF-8 -t UTF-16> out.txt

Conversione ricorsiva

Usa dos2unix in combinazione con i comandi find e xargs per convertire ricorsivamente file di testo in una struttura ad albero di directory. Ad esempio, per convertire tutti i file .txt nella struttura di directory con il tipo di directory corrente:

trova . -name * .txt | xargs dos2unix

Localizzazione

LANG

La lingua principale viene selezionata con la variabile di ambiente LANG. La variabile LANG è composta da più parti. La prima parte è in caratteri minuscoli il codice della lingua. Il secondo è facoltativo ed è il prefisso internazionale in maiuscolo, preceduto da un trattino basso. C'è anche una terza parte opzionale: codifica dei caratteri, preceduta da un punto. Alcuni esempi di shell di tipo standard POSIX:

export LANG = nl

Dutch

export LANG = nl_NL

Olandese, Paesi Bassi

export LANG = nl_BE

Olandese, belgio

export LANG = es_ES

Spagnolo, spagna

export LANG = es_MX

Spagnolo, messico

export LANG = en_US.iso88591

Codifica inglese, USA, latino-1

export LANG = en_GB.UTF-8

Codifica inglese, Regno Unito, UTF-8

Per un elenco completo dei codici lingua e paese, consultare il manuale di gettext: https://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes

Sui sistemi Unix è possibile utilizzare il comando locale per ottenere informazioni specifiche sulla locale.

LINGUA

Con la variabile d'ambiente LANGUAGE è possibile specificare un elenco di priorità delle lingue, separate da due punti. Dos2unix dà la preferenza a LANGUAGE piuttosto a LANG. Ad esempio, prima olandese e poi tedesco: "LANGUAGE = nl: de". Devi prima abilitare la localizzazione, impostando LANG (o LC_ALL) su un valore diverso da "C", prima di poter utilizzare un elenco di priorità della lingua attraverso la variabile LANGUAGE. Vedi anche il manuale di gettext: https://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable

Se selezioni una lingua che non è disponibile otterrai i messaggi inglesi standard.

DOS2UNIX_LOCALEDIR

Con la variabile d'ambiente DOS2UNIX_LOCALEDIR il set LOCALEDIR durante la compilazione può essere ignorato. LOCALEDIR viene utilizzato per trovare i file della lingua. Il valore predefinito GNU è "/ usr / local / share / locale". Opzione --version visualizza LOCALEDIR utilizzato.

Esempio (shell POSIX):

export DOS2UNIX_LOCALEDIR = $ HOME / share / locale

Valori di ritorno

In caso di successo, viene restituito zero. Quando si verifica un errore di sistema, verrà restituito l'ultimo errore di sistema. Per altri errori viene restituito 1.

Il valore restituito è sempre zero in modalità silenziosa, tranne quando vengono utilizzate opzioni della riga di comando errate.

Esempi

dos2unix

Ottieni input da stdin e scrivi output su stdout.

dos2unix a.txt b.txt
dos2unix -o a.txt b.txt

Entrambi i comandi precedenti faranno la stessa cosa: convertire e sostituire, sia a.txt che b.txt in un solo comando.

dos2unix -k a.txt

Converte e sostituisce a.txt mantenendo il timbro della data originale.

#goog-gt-tt {display:none !important;}.goog-te-banner-frame {display:none !important;}.goog-te-menu-value:hover {text-decoration:none !important;}body {top:0 !important;}#gtranslate_element {display:none!important;}

var gt_not_translated_list = ["-ascii","-iso","-c, --convmode CONVMODE","-f, --force","-h, --help","-k, --keepdate","-L, --license","-l, --newline","-m, --add-bom","-o, --oldfile FILE ...","-q, --quiet","-s, --safe","-F,","-R,","-S, --skip-symlink","-V, --version","dos2unix -iso -n in.txt out.txt","dos2unix -850 -n in.txt out.txt","dos2unix -1252 -n in.txt out.txt","unix2dos -iso -n in.txt out.txt","unix2dos -850 -n in.txt out.txt","unix2dos -1252 -n in.txt out.txt","dos2unix -n in.txt out.txt","unix2dos -m -n in.txt out.txt","DOS2UNIX_LOCALEDIR","dos2unix a.txt b.txt","dos2unix -o a.txt b.txt","dos2unix -k a.txt"];
document.cookie = "googtrans=/en/it; domain=.balogs.xyz";
document.cookie = "googtrans=/en/it";
function GTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: 'en',layout: google.translate.TranslateElement.InlineLayout.SIMPLE,autoDisplay: false,multilanguagePage: true}, 'gtranslate_element');}


Pagine utili:

Informazioni sul formato .do

Lascia un commento