- BEZEICHNUNG
- ÜBERSICHT
- BESCHREIBUNG
- OPTIONEN
- MAC-MODUS
- UMWANDLUNGSMODI
- UNICODE
  - Zeichenkodierungen
  - Umwandlung
  - Markierung der Bytereihenfolge
  - Unicode-Beispiele
- BEISPIELE
- REKURSIVE UMWANDLUNG
- LOKALISIERUNG
- RÜCKGABEWERT
- STANDARDS
- AUTOREN
- SIEHE AUCH

# BEZEICHNUNG

dos2unix - Formatumwandlung für Textdateien von DOS/Mac nach Unix und umgekehrt

# ÜBERSICHT

        dos2unix [Optionen] [DATEI …] [-n EINGABEDATEI AUSGABEDATEI …]
        unix2dos [Optionen] [DATEI …] [-n EINGABEDATEI AUSGABEDATEI …]

# BESCHREIBUNG

Das Paket Dos2unix enthält die Werkzeuge `dos2unix` und `unix2dos` zum Umwandeln einfacher Textdateien aus dem DOS- oder Mac-Format in das Unix-Format und umgekehrt.

In Textdateien unter DOS/Windows sind Zeilenumbrüche, auch als neue Zeile (NL) bekannt, eine Kombination aus zwei Zeichen: einem Wagenrücklauf (Carriage Return, CR) gefolgt von einem Zeilenvorschub (Line Feed, LF). In Unix-Textdateien bestehen Zeilenumbrüche nur aus einem Zeichen, dem Zeilenvorschub (LF). In Mac-Textdateien aus der Zeit vor MacOSX bestand ein Zeilenumbruch aus einem einzelnen CR-Zeichen. Heute verwendet Mac OS Zeilenumbrüche im Unix-Stil (LF).

Neben Zeilenumbrüchen kann Dos2unix auch die Zeichenkodierung von Dateien umwandeln. Einige DOS-Codepages können in Unix Latin-1 umgewandelt werden, und Windows-Unicode-Dateien (UTF-16) können in Unix-Unicode-Dateien (UTF-8) umgewandelt werden.

Binärdateien werden automatisch übersprungen, sofern die Umwandlung nicht erzwungen wird.

Nicht-reguläre Dateien, wie Verzeichnisse und FIFOS (Weiterleitungen) werden automatisch übersprungen.

Symbolische Links und deren Ziele werden per Vorgabe unverändert belassen. Symbolische Links können optional ersetzt werden, oder die Ausgabe wird in das Ziel des symbolischen Links geschrieben. Unter Windows wird das Schreiben in das Ziele eines symbolischen Links nicht unterstützt.

Dos2unix wurde nach dem Vorbild der dos2unix-Version unter SunOS/Solaris entwickelt, doch es gitb einen wesentlichen Unterschied zu: Diese Version ersetzt per Vorgabe Dateien bei der Umwandlung (Alte-Datei-Modus), während unter SunOS/Solaris nur die paarweise Umwandlung (Neue-Datei-Modus) unterstützt wird. Siehe dazu die Optionen `-o` und `-n`.

# OPTIONEN

--

  nimmt alle folgenden Optionen als Dateinamen an. Verwenden Sie diese Option, wenn Sie Dateien umwandeln wollen, deren Namen mit einem Minuszeichen beginnen. Um beispielsweise eine Datei namens »-bla« umzuwandeln, können Sie folgenden Befehl verwenden:

          dos2unix -- -bla

  oder im Neue-Datei-Modus:

          dos2unix -n -- -bla ausgabe.txt

-ascii

  wandelt nur Zeilenumbrüche um. Dies ist der vorgegebene Umwandlungsmodus.

-iso

  wandelt aus dem DOS- in den ISO-8859-1-Zeichensatz um. Weitere Informationen hierzu finden Sie im Abschnitt UMWANDLUNGSMODI.

-1252

  verwendet die Windows-Codepage 1252 (Westeuropäisch).

-437

  verwendet die DOS-Codepage 437 (US). Dies ist die vorgegebene Codepage für die ISO-Umwandlung.

-850

  verwendet die DOS-Codepage 850 (Westeuropäisch).

-860

  verwendet die DOS-Codepage 860 (Portugiesisch).

-863

  verwendet die DOS-Codepage 863 (Kanadisches Französisch).

-865

  verwendet die DOS-Codepage 865 (Skandinavisch).

-7

  wandelt 8bit-Zeichen in ein 7bit-Bitmuster um.

-c, --convmode UMWANDLUNGSMODUS

  legt den Umwandlungsmodus fest. UMWANDLUNGSMODUS kann ascii, 7bit, iso oder mac sein, wobei ascii die Vorgabe ist.

-f, --force

  erzwingt die Umwandlung von Binärdateien.

-h, --help

  zeigt eine Hilfe an und beendet das Programm.

-k, --keepdate

  übernimmt den Zeitstempel der Eingabedatei in die Ausgabedatei.

-L, --license

  zeigt die Lizenz des Programms an.

-l, --newline

  fügt eine zusätzliche neue Zeile hinzu.

  dos2unix: Nur DOS-Zeilenumbrüche werden in Unix-Zeilenumbrüche umgewandelt. Im Mac-Modus werden nur Mac-Zeilenumbrüche in Unix-Zeilenumbrüche umgewandelt.

  unix2dos: Nur Unix-Zeilenumbrüche werden in DOS-Zeilenumbrüche umgewandelt. Im Mac-Modus werden nur Unix-Zeilenumbrüche in Mac-Zeilenumbrüche umgewandelt.

-m, --add-bom

  schreibt eine UTF-Markierung der Bytereihenfolge in die Ausgabedatei. Verwenden Sie diese Option niemals, wenn die Kodierung der Ausgabedatei nicht UTF-8 ist. Weitere Informationen finden Sie im Abschnitt UNICODE.

-n, --newfile EINGABEDATEI AUSGABEDATEI …

  Neue-Datei-Modus. Die EINGABEDATEI wird umgewandelt und in die AUSGABEDATEI geschrieben. Die Dateinamen müssen paarweise angegeben werden. Platzhalter sollten nicht verwendet werden, sonst werden Sie Ihre Dateien verlieren.

  Der Benutzer, der die Umwandlung im Neue-Datei-Modus startet, wird Besitzer der umgewandelten Datei. Die Lese- und Schreibrechte werden aus den Zugriffsrechten der Originaldatei minus der umask(1) der Person ermittelt, die die Umwandlung ausgeführt hat.

-o, --oldfile DATEI …

  Alte-Datei-Modus. Die DATEI wird umgewandelt und durch die Ausgabedatei überschrieben. Per Vorgabe werden Umwandlungen in diesem Modus ausgeführt. Platzhalter sind verwendbar.

  Im Alte-Datei-Modus (Ersetzungsmodus) erhalten die umgewandelten Dateien den gleichen Eigentümer, die gleiche Gruppe und die gleichen Lese- und Schreibberechtigungen wie die Originaldatei, auch wenn die Datei von einem anderen Benutzer umgewandelt wird, der Schreibrechte für die Datei hat (zum Beispiel der Systemadministrator). Die Umwandlung wird abgebrochen, wenn es nicht möglich ist, die originalen Werte beizubehalten. Die Änderung des Eigentümers könnte zum Beispiel bewirken, dass der ursprüngliche Eigentümer die Datei nicht mehr lesen kann. Die Änderung der Gruppe könnte ein Sicherheitsrisiko sein, da die Datei vielleicht für Benutzer lesbar wird, für die sie nicht bestimmt ist. Die Beibehaltung von Eigentümer, Gruppe und Schreib- und Leserechten wird nur unter Unix unterstützt.

-q, --quiet

  Stiller Modus, in dem alle Warnungen und sonstige Meldungen unterdrückt werden. Der Rückgabewert ist 0, außer wenn fehlerhafte Befehlszeilenoptionen angegeben werden.

-s, --safe

  überspringt Binärdateien (Vorgabe).

-ul, --assume-utf16le

  nimmt an, dass die Eingabedatei das Format UTF-16LE hat.

  Wenn die Eingabedatei eine Markierung der Bytereihenfolge enthält (BOM), dann hat die BOM Vorrang vor dieser Option.

  Durch eine falsche Annahme (die Eingabedatei war nicht in UTF-16LE kodiert) mit erfolgreicher Umwandlung erhalten Sie eine UTF-8-Ausgabedatei mit fehlerhaftem Text. Sie können die fehlgeschlagene Umwandlung mit iconv(1) rückgängig machen, indem Sie die Rückumwandlung von UTF-8 nach UTF-16LE vornehmen. Dadurch gewinnen Sie die Originaldatei zurück.

  Die Annahme von UTF-16LE wirkt wie ein Umwandlungsmodus. Beim Wechsel zum vorgegebenen ascii-Modus wird die UTF16LE-Annahme deaktiviert.

-ub, --assume-utf16be

  nimmt an, dass die Eingabedatei das Format UTF-16BE hat.

  Diese Option ist gleichbedeutend mit `-ul`.

-F, --follow-symlink

  folgt symbolischen Links und wandelt die Zieldateien um.

-R, --replace-symlink

  ersetzt symbolische Links durch die umgewandelten Dateien (die originalen Zieldateien bleiben unverändert).

-S, --skip-symlink

  erhält symbolische Links als solche und lässt die Ziele unverändert (Vorgabe).

-V, --version

  zeigt Versionsinformationen an und beendet das Programm.

# MAC-MODUS

Im Normalmodus werden Zeilenumbrüche von DOS nach Unix und umgekehrt umgewandelt. Mac-Zeilenumbrüche werden nicht verändert.

Im Mac-Modus werden Zeilenumbrüche von Mac nach Unix und umgekehrt umgewandelt. DOS-Zeilenumbrüche werden nicht verändert.

Um das Programm im Mac-Modus auszuführen, verwenden Sie die Befehlszeilenoption `-c mac` oder die Befehle `mac2unix` oder `unix2mac`.

# UMWANDLUNGSMODI

ascii

  Im `ascii`-Modus werden nur Zeilenumbrüche umgewandelt. Dies ist der vorgegebene Umwandlungsmodus.

  Obwohl der Name dieses Modus auf ASCII hinweist, welches ein 7-bit-Standard ist, bezieht sich der eigentliche Modus auf 8 Bit. Verwenden Sie diesen Modus immer dann, wenn Sie Unicode-Dateien in UTF-8-Kodierung umwandeln.

7bit

  In diesem Modus werden alle Nicht-ASCII-Zeichen aus 8 Bit in das 7-Bit-Bitmuster umgewandelt.

iso

  Die Zeichen werden aus dem DOS-Zeichensatz (der Codepage) in den ISO-Zeichensatz ISO-8859-1 (Latin-1) in Unix umgewandelt. DOS-Zeichen ohne Äquivalent in ISO-8859-1, für die die Umwandlung nicht möglich ist, werden durch einen Punkt ersetzt. Gleiches gilt für ISO-8859-1-Zeichen ohne DOS-Gegenstück.

  Wenn nur die Option `-iso` angegeben ist, versucht dos2unix die aktive Codepage selbst zu ermitteln. Sollte dies nicht möglich sein, wird die Standard-Codepage CP437 verwendet, welche hauptsächlich in den USA eingesetzt wird. Um eine bestimmte Codepage zu erzwingen, verwenden Sie die Optionen `-437` (US), `-850` (Westeuropäisch), `-860` (Portugiesisch), `-863` (Kanadisches Französisch) oder `-865` (Skandinavisch). Die Windows-Codepage CP1252 (Westeuropäisch) wird durch die Option `-1252` unterstützt.

  Wenden Sie niemals die ISO-Umwandlung auf Unicode-Textdateien an. In UTF-8 kodierte Dateien werden dadurch beschädigt.

  Einige Beispiele:

  Umwandlung aus der vorgegebenen DOS-Codepage nach Unix Latin-1

          dos2unix -iso -n in.txt ausgabe.txt

  Umwandlung von DOS CP850 nach Unix Latin-1

          dos2unix -850 -n eingabe.txt ausgabe.txt

  Umwandlung von Windows CP1252 nach Unix Latin-1

          dos2unix -1252 -n eingabe.txt ausgabe.txt

  Umwandlung von Windows CP1252 nach Unix UTF-8 (Unicode)

          iconv -f CP1252 -t UTF-8 eingabe.txt | dos2unix > ausgabe.txt

  Umwandlung von Unix Latin-1 in die vorgegebene DOS-Codepage

          unix2dos -iso -n eingabe.txt ausgabe.txt

  Umwandlung von Unix Latin-1 nach DOS CP850

          unix2dos -850 -n eingabe.txt ausgabe.txt

  Umwandlung von Unix Latin-1 nach Windows CP1252

          unix2dos -1252 -n eingabe.txt ausgabe.txt

  Umwandlung von Unix UTF-8 (Unicode) nach Windows CP1252

          unix2dos < eingabe.txt | iconv -f UTF-8 -t CP1252 > ausgabe.txt

  Siehe auch http://czyborra.com/charsets/codepages.html und http://czyborra.com/charsets/iso8859.html.

# UNICODE

## Zeichenkodierungen

Es gibt verschiedene Unicode-Zeichenkodierungen. Unter Unix und Linux sind Unicode-Dateien typischerweise in UTF-8 kodiert. Unter Windows können Textdateien in UTF-8, UTF-16 oder UTF-16 in Big-Endian-Bytereihenfolge kodiert sein, liegen aber meist im Format UTF-16 vor.

## Umwandlung

Unicode-Textdateien können DOS-, Unix- oder Mac-Zeilenumbrüche enthalten, so wie reguläre Textdateien.

Alle Versionen von dos2unix und unix2dos können UTF-8-kodierte Dateien umwandeln, weil UTF-8 im Hinblick auf Abwärtskompatiblität mit ASCII entwickelt wurde.

Dos2unix und unix2dos mit Unterstützung für UTF-16 können in UTF-16 kodierte Dateien in Little-Endian- und Big-Endian-Bytereihenfolge lesen. Um festzustellen, ob dos2unix mit UTF-16-Unterstützung kompiliert wurde, geben Sie `dos2unix -V` ein.

Die Windows-Versionen von dos2unix und unix2dos wandeln UTF-16-kodierte Dateien stets in UTF-8-Dateien um. Die entsprechenden Unix-Versionen wandeln UTF-16-kodierte Dateien in die lokale Zeichenkodierung um, falls diese nicht auf UTF-8 gesetzt ist. Verwenden Sie den Befehl locale(1), um die lokale Zeichenkodierung zu ermitteln.

Da in UTF-8 formatierte Textdateien sowohl unter Windows als auch unter Unix gut unterstützt werden, haben dos2unix und unix2dos keine Option zum Schreiben von UTF-16-Dateien. Alle UTF-16-Zeichen können verlustlos in UTF-8 kodiert werden. UTF-16-Dateien werden unter Unix übersprungen, wenn die lokale Zeichenkodierung nicht UTF-8 ist, um unbeabsichtigte Verluste von Textteilen zu verhindern. Wenn eine Umwandlung von UTF-16 nach UTF-8 Fehlermeldungen verursacht, zum Beispiel die UTF-16-Eingabedatei einen Fehler enthält, dann wird diese Datei übersprungen.

Umwandlungen im ISO- und 7bit-Modus funktionieren mit UTF-16-Dateien nicht.

## Markierung der Bytereihenfolge

Unicode-Textdateien unter Windows haben typischerweise eine Markierung der Bytereihenfolge (BOM), da viele Windows-Programme (zum Beispiel Notepad) solche BOMs standardmäßig hinzufügen. Weitere Informationen hierzu finden Sie auf http://de.wikipedia.org/wiki/Byte-Reihenfolge.

Unter Unix haben Textdateien üblicherweise keine BOM. Es wird stattdessen angenommen, dass Textdateien in der Zeichenkodierung entsprechend der Spracheinstellung vorliegen.

Dos2unix kann nur dann erkennen, ob eine Datei UTF-16-kodiert ist, wenn die Datei eine BOM enthält. Ist dies nicht der Fall, nimmt dos2unix an, dass es sich um eine Binärdatei handelt.

Verwenden Sie die Optionen `-ul` oder `-ub`, um eine UTF-16-Datei ohne BOM umzuwandeln.

Dos2unix schreibt nur dann eine BOM in die Ausgabedatei, wenn Sie die Option `-m` angeben.

Unix2dos schreibt eine BOM in die Ausgabedatei, wenn die Eingabedatei ebenfalls eine solche Markierung hat, oder wenn die Option `-m` angegeben ist.

## Unicode-Beispiele

Umwandlung von Windows UTF-16 (mit BOM) nach Unix UTF-8

        dos2unix -n eingabe.txt ausgabe.txt

Umwandlung von Windows UTF-16LE (ohne BOM) nach Unix UTF-8

        dos2unix -ul -n eingabe.txt ausgabe.txt

Umwandlung von Unix UTF-8 nach Windows UTF-8 mit BOM

        unix2dos -m -n eingabe.txt ausgabe.txt

Umwandlung von Unix UTF-8 nach Windows UTF-16

        unix2dos < eingabe.txt | iconv -f UTF-8 -t UTF-16 > ausgabe.txt

# BEISPIELE

Aus der Standardeingabe lesen und in die Standardausgabe schreiben:

        dos2unix
        dos2unix -l -c mac

a.txt umwandeln und ersetzen, b.txt umwandeln und ersetzen:

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

a.txt im ascii-Modus umwandeln und ersetzen:

        dos2unix a.txt

a.txt im ascii-Modus umwandeln und ersetzen, b.txt im 7bit-Modus umwandeln und ersetzen:

        dos2unix a.txt -c 7bit b.txt
        dos2unix -c ascii a.txt -c 7bit b.txt
        dos2unix -ascii a.txt -7 b.txt

a.txt aus dem Mac- in das Unix-Format umwandeln:

        dos2unix -c mac a.txt
        mac2unix a.txt

a.txt aus dem Unix- in das Mac-Format umwandeln:

        unix2dos -c mac a.txt
        unix2mac a.txt

a.txt unter Beibehaltung des Zeitstempels umwandeln:

        dos2unix -k a.txt
        dos2unix -k -o a.txt

a.txt umwandeln und das Ergebnis nach e.txt schreiben:

        dos2unix -n a.txt e.txt

a.txt umwandeln und das Ergebnis nach e.txt schreiben, wobei e.txt den gleichen Zeitstempel erhält wie a.txt:

        dos2unix -k -n a.txt e.txt

a.txt umwandeln und ersetzen, b.txt umwandeln und das Ergebnis nach e.txt schreiben:

        dos2unix a.txt -n b.txt e.txt
        dos2unix -o a.txt -n b.txt e.txt

a.txt umwandeln und das Ergebnis nach e.txt schreiben, a.txt umwandeln und ersetzen, b.txt umwandeln und ersetzen, d.txt umwandeln und das Ergebnis nach f.txt schreiben:

        dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt

# REKURSIVE UMWANDLUNG

Verwenden Sie dos2unix zusammen mit den Befehlen find(1) und xargs(1), um Textdateien in einem Verzeichnisbaum rekursiv umzuwandeln. Um beispielsweise alle *.txt-Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen umzuwandeln, geben Sie Folgendes ein:

        find . -name *.txt |xargs dos2unix

# LOKALISIERUNG

LANG

  Die primäre Sprache wird durch die Umgebungsvariable LANG festgelegt. Diese Variable besteht aus mehreren Teilen: Der erste Teil besteht aus zwei Kleinbuchstaben, die den Sprachcode angeben. Der zweite Teil ist optional und bezeichnet den Ländercode in Großbuchstaben, vom davor stehenden Sprachcode durch einen Unterstrich getrennt. Der dritte Teil ist ebenfalls optional und gibt die Zeichenkodierung an, vom Ländercode durch einen Punkt getrennt. Einige Beispiele für Standard-POSIX-Shells:

          export LANG=de               Deutsch
          export LANG=de_DE            Deutsch, Deutschland
          export LANG=de_AT            Deutsch, Österreich
          export LANG=es_ES            Spanisch, Spanien
          export LANG=es_MX            Spanisch, Mexiko
          export LANG=en_US.iso88591   Englisch, USA, Latin-1-Zeichenkodierung
          export LANG=en_GB.UTF-8      Englisch, GB, UTF-8-Zeichenkodierung

  Eine vollständige Liste der Sprachen und Ländercodes finden Sie im Gettext-Handbuch: http://www.gnu.org/software/gettext/manual/gettext.html#Language-Codes

  Auf Unix-Systemen erhalten Sie mit dem Befehl locale(1) spezifische Informationen zu den Spracheinstellungen.

LANGUAGE

  Mit der Umgebungsvariable LANGUAGE können Sie eine Prioritätenliste für Sprachen übergeben, die Sie durch Doppelpunkte voneinander trennen. Dos2unix gibt LANGUAGE vor LANG den Vorzug, zum Beispiel bei Deutsch vor Niederländisch: `LANGUAGE=de:nl`. Sie müssen zunächst die Lokalisierung aktivieren, indem Sie die Variable LANG (oder LC_ALL) auf einen anderen Wert als »C« setzen, bevor Sie die Liste der Sprachprioritäten nutzen können. Weitere Informationen finden Sie im Gettext-Handbuch: http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable

  Falls Sie eine Sprache auswählen, die nicht verfügbar ist, erhalten Sie die Standardmeldungen in englischer Sprache.

DOS2UNIX_LOCALEDIR

  Durch die Umgebungsvariable DOS2UNIX_LOCALEDIR wird LOCALEDIR während der Kompilierung übergangen. LOCALEDIR wird verwendet, um Sprachdateien zu finden. Der GNU-Standardwert ist `/usr/local/share/locale`. Die Option --version zeigt das verwendete LOCALEDIR an.

  Beispiel (POSIX-Shell):

          export DOS2UNIX_LOCALEDIR=$HOME/share/locale

# RÜCKGABEWERT

Bei Erfolg wird 0 zurückgegeben. Bei aufgetretenen Systemfehlern wird der letzte Systemfehler zurückgegeben. Für alle anderen Fehler wird 1 zurückgegeben.

Der Rückgabewert ist im stillen Modus stets 0, außer wenn fehlerhafte Befehlszeilenoptionen verwendet werden.

# STANDARDS

http://de.wikipedia.org/wiki/Textdatei

http://de.wikipedia.org/wiki/Wagenr%C3%BCcklauf

http://de.wikipedia.org/wiki/Zeilenumbruch

http://en.wikipedia.org/wiki/Unicode

# AUTOREN

Benjamin Lin - <blin@socs.uts.edu.au> Bernd Johannes Wuebben (mac2unix mode) - <wuebben@kde.org>, Christian Wurll (add extra newline) - <wurll@ira.uka.de>, Erwin Waterlander - <waterlan@xs4all.nl> (Maintainer)

Projektseite: http://waterlan.home.xs4all.nl/dos2unix.html

SourceForge-Seite: http://sourceforge.net/projects/dos2unix/

Freecode: http://freecode.com/projects/dos2unix

# SIEHE AUCH

file(1) find(1) iconv(1) locale(1) xargs(1)