Der ultimative Dos2Unix- und Unix2Dos-Leitfaden: Konvertieren von Dateien zwischen Windows und Unix

Letzte Aktualisierung: 20/05/2025
Autor: Holger
  • Verstehen der unterschiedlichen Zeilenumbruchformate in Textdateien zwischen OS hilft, Inkompatibilitäten zu vermeiden.
  • dos2unix und unix2dos ermöglichen Ihnen die sichere Konvertierung von Textdateien zwischen Windows und Linux/Unix, mit mehreren erweiterten Optionen, um die Konvertierung an jeden Bedarf anzupassen.
  • Der Konvertierungsprozess umfasst nicht nur Zeilenumbrüche, sondern auch die Verwaltung von Kodierungen, BOM-Tags und symbolischen Links, die in modernen Umgebungen von entscheidender Bedeutung sind.
  • Integrieren Sie diese Befehle in Skripten und Automatisierungen erleichtert die Massendateiverwaltung in gemischten Umgebungen und optimiert den Arbeitsablauf zwischen Computern und Servern.

Unix-DOS-Format

Hatten Sie schon einmal das Problem, dass Textdateien in Ihrem bevorzugten Editor unter Linux oder Windows nicht korrekt angezeigt werden? Das liegt meist an den unterschiedlichen Zeichen, die Betriebssysteme für das Zeilenende verwenden. Wenn Sie in gemischten Umgebungen arbeiten oder mit Kollegen zusammenarbeiten, die verschiedene Systeme nutzen, ist Ihnen dieses kleine, aber dennoch lästige Problem wahrscheinlich schon öfter begegnet. Glücklicherweise gibt es klassische Befehle wie `dos2unix` und `unix2dos` , mit denen Sie Dateien problemlos zwischen DOS/Windows- und Unix/Linux-Textformaten konvertieren können.

Im folgenden Artikel erklären wir die Befehle `dos2unix` und `unix2dos` detailliert . Wir behandeln alles von den grundlegendsten Konzepten wie Zeilenumbrüchen und den Unterschieden zwischen den Systemen bis hin zu einer Übersicht der fortgeschrittensten Optionen beider Programme, detaillierten Anwendungsbeispielen, Alternativen und Tipps , die Ihnen in jeder Situation weiterhelfen. Wenn Sie sich jemals gefragt haben, was die einzelnen Parameter genau bewirken oder warum eine Datei manchmal als beschädigt angezeigt wird, obwohl sie es nicht ist, finden Sie hier die Antwort. Wir verwenden dabei eine klare Sprache und praktische Beispiele, sodass sowohl Anfänger als auch Fortgeschrittene die Funktionsweise der Befehle vollständig verstehen können.

Warum gibt es dos2unix und unix2dos?

Im Hinblick auf die Kompatibilität von Betriebssystemen ist einer der auffälligsten (und gleichzeitig ärgerlichsten) Unterschiede die Darstellung des Zeilenendes in Textdateien. Unter Unix und Linux wird das Zeilenende durch das Zeichen LF (Line Feed, \n ) gekennzeichnet, während unter DOS/Windows die Sequenz CRLF (Carriage Return + Line Feed, \r\n ) verwendet wird . Erschwerend kommt hinzu, dass ältere Macs (vor OSX) nur CR ( \r ) verwendeten, obwohl sie sich heutzutage dem Unix-Format anpassen.

Was passiert dann? Wenn Sie eine unter Windows erstellte Datei in einem Linux-Texteditor bearbeiten, sehen Sie oft störende ^M -Zeichen am Ende jeder Zeile, oder die Datei wird von manchen Programmen nicht korrekt verarbeitet. Umgekehrt kann das Öffnen einer Linux-Datei im Windows-Editor dazu führen, dass der Text durcheinander erscheint, als ob er sich in einer einzigen Zeile befände. Hier kommen dos2unix und unix2dos (und ähnliche Programme wie fromdos , todos , mac2unix oder unix2mac ) ins Spiel, mit denen Sie einfach zwischen verschiedenen Zeilenumbruchformaten wechseln können.

Wie funktionieren dos2unix und unix2dos?

Der Kern beider Befehle ist sehr einfach: Sie konvertieren Zeilenumbrüche in Textdateien zwischen DOS/Windows- und Unix-Formaten. `dos2unix` wandelt jedes CRLF- Zeilenende ( `\r\n` ) in ein LF- Zeilenende ( `\n` ) um, während `unix2dos` das Gegenteil bewirkt. Es gibt auch Varianten für die Konvertierung zwischen Mac- und Unix-Formaten. Beide Befehle können die Originaldatei überschreiben oder die Konvertierung in einer neuen Datei speichern, indem die entsprechende Option angegeben wird. Betrachten wir die grundlegende Verwendung:

  • Konvertierung von DOS/Windows nach Unix/Linux: dos2unix archivo.txt
  • Konvertierung von Unix/Linux nach DOS/Windows: unix2dos archivo.txt
  • Speichern Sie das Ergebnis in einer neuen Datei: dos2unix -n origen.txt destino.txt

Zeilenumbrüche in Betriebssystemen: eine Geschichte der Inkompatibilitäten

Dieses Problem reicht bis in die Anfänge der Computertechnik zurück, als jedes Betriebssystem unterschiedliche Konventionen verwendete. Unix/Linux nutzte stets den Zeilenumbruch LF ( \n ). DOS/Windows entschied sich für die Kombination CRLF ( \r\n ), eine Konvention, die von Schreibmaschinen übernommen wurde. Das klassische Mac OS (vor Mac OS X) verwendete CR ( \r ), obwohl auch heute noch Dateien in unterschiedlichen Formaten Inkompatibilitäten verursachen.

  • Unix/Linux: jede Zeile endet mit \n (LF).
  • DOS/Windows: Jede Zeile endet mit \ R \ n (CRLF).
  • Klassischer Mac: Jede Zeile endet mit \r (CR).
  Tipps zur Vermeidung von Mautgebühren und Autobahnen mithilfe von Apple Maps auf Ihrem iPhone

Heute verwenden Mac OS X und seine Nachfolger die Unix-Konvention mit LF als Zeilenumbruchzeichen. Die Problematik gemischter Dateiformate besteht jedoch weiterhin, insbesondere beim Datenaustausch zwischen verschiedenen Plattformen.

Was macht dos2unix (und unix2dos) eigentlich mit Dateien?

Beide Befehle lesen die Datei zeilenweise , erkennen Zeilenumbrüche gemäß dem Quellformat und schreiben die Datei um, indem sie das passende Zeilenumbruchzeichen oder die passende Zeichenfolge für das Zielsystem einfügen. Abhängig von Version und Optionen können sie außerdem Aspekte wie Zeichenkodierung (z. B. Unicode), Dateiverwaltung mit Byte Order Marks (BOMs), Datumserhaltung und Dateiberechtigungen berücksichtigen.

Allgemeine Optionen und Parameter in dos2unix und unix2dos

Beide Befehle verfügen über eine große Auswahl an Parametern, um ihre Funktionsweise an bestimmte Situationen anzupassen. Wir listen hier die häufigsten und ihren Nutzen auf:

  • -n: Ermöglicht Ihnen, die Eingabe- und Ausgabedateien anzugeben. Beispiel: dos2unix -n input.txt output.txt. Auf diese Weise können Sie die Originaldatei behalten.
  • -k: Behält das Änderungsdatum der Ausgabedatei bei, das mit dem der Eingabedatei übereinstimmt.
  • -o: Führt die Konvertierung „vor Ort“ durch, d. h. die Originaldatei wird mit dem Ergebnis überschrieben.
  • -f: Erzwingt die Konvertierung auch bei Binärdateien, obwohl dies im Allgemeinen nicht empfohlen wird.
  • -c: Gibt den Konvertierungsmodus an: ASCII (Standard), 7bit, iso o mac. Zum Beispiel dos2unix -c iso archivo.txt.
  • -b / –keep-bom: Behält die Byte Order Mark (BOM) in Unicode-Dateien bei.
  • -m / –add-bom: Fügt der Ausgabedatei explizit eine Stückliste hinzu.
  • -l / –Neue Zeile: Fügt nach jedem konvertierten Zeilenumbruch eine zusätzliche Leerzeile ein.
  • –allow-chown: Ermöglicht Ihnen, den Dateibesitzer auf einigen Systemen und Modi zu ändern.
  • -h / -Hilfe: Zeigt Hilfe an und beendet das Programm.
  • -q / -ruhig: Aktivieren Sie den Lautlosmodus, um keine Nachrichten auf dem Bildschirm anzuzeigen.
  • -v / –Verbose: Zeigt detaillierte Informationen zur Konvertierung an.

Dies sind nur einige der verfügbaren Optionen. Die meisten modernen Versionen von dos2unix/unix2dos bieten viele weitere, insbesondere für die Verarbeitung von Kodierungen, symbolischen Links und selektiver Musterkonvertierung.

Erweiterte Handhabung von Kodierungen und Unicode

Eines der größten Probleme bei der Konvertierung von Textdateien heutzutage sind die Zeichenkodierungen . Der UTF-8- Standard ist unter Unix/Linux am weitesten verbreitet und wird aktuell auch unter Windows empfohlen. Viele Dateien liegen jedoch in UTF-16 , ISO-8859-1 , Windows-1252 und anderen Kodierungen vor . Aktuelle Versionen von dos2unix verarbeiten die meisten dieser Fälle recht gut, wobei jedoch wichtige Nuancen zu beachten sind:

  • Konvertieren Sie UTF-16 in UTF-8: dos2unix versucht, UTF-16-Dateien in UTF-8 (unter Windows) oder in die lokale Kodierung (unter Unix/Linux) umzuwandeln. Wenn der UTF-16-Datei eine BOM fehlt, wird sie möglicherweise als Binärdatei behandelt und nicht konvertiert.
  • Stücklistenverwaltung: Unter Windows ist es üblich, mit Unicode-Dateien zu arbeiten, die über eine Byte-Order-Markierung verfügen. Dos2unix kann es hinzufügen oder entfernen, abhängig von den Optionen -b y -m.
  • Spezifische Kodierungen: Mittels Parametern -iso, -1252, -850, usw. können Sie die Konvertierung zwischen bestimmten Codepages erzwingen, was nützlich ist, wenn Sie eine Datei aus einer alten Umgebung oder einem bestimmten Speicherort erhalten.
  Vollständige Anleitung und Expertentipps zum Senden von Blindkopien in Outlook

Es ist wichtig zu beachten, dass die Optionen zur Konvertierung der Kodierung nicht zum Ändern von Binärdateien, sondern nur von einfachen Textdateien vorgesehen sind. Die Verwendung von dos2unix/unix2dos auf Binärdateien kann zu Datenbeschädigungen führen.

Anwendungsbeispiele Schritt für Schritt erklärt

Schauen wir uns einige praktische Beispiele an, um die häufigsten und auch einige fortgeschrittene Fälle zu veranschaulichen:

  • Eine Datei konvertieren und überschreiben:
    dos2unix documento.txt
    Dieser Befehl verarbeitet die Datei, entfernt die CR-Zeichen aus jeder Zeile und schreibt das Ergebnis in dieselbe Datei.
  • Erstellen Sie eine neue Datei, ohne das Original zu ändern:
    dos2unix -n entrada.txt salida.txt
    Die Konvertierung wird in „output.txt“ gespeichert.
  • Konvertieren Sie mehrere Dateien gleichzeitig:
    dos2unix archivo1.txt archivo2.txt archivo3.txt
  • Konvertierung einer Datei erzwingen, die mit einem Bindestrich beginnt:
    dos2unix -- -foo.txt
  • Dateien in einem Verzeichnis rekursiv konvertieren:
    find . -name '*.txt' -print0 | xargs -0 dos2unix
    Dadurch werden alle TXT-Dateien in der Ordnerstruktur vom aktuellen Verzeichnis abwärts konvertiert.
  • Konvertieren Sie Dateien mit einer bestimmten Kodierung:
    dos2unix -iso -n origen.txt destino.txt
    Konvertiert zwischen einer DOS-Codepage und dem ISO-8859-1-Standard.
  • Ermitteln und auflisten, welche Dateien konvertiert werden müssen:
    dos2unix -ic *.txt
    Zeigt nur Dateien an, die DOS-Zeilenumbrüche enthalten.

Was ist mit Binärdateien?

Standardmäßig ignorieren dos2unix und unix2dos Binärdateien automatisch, um versehentliche Beschädigungen zu verhindern. Falls Sie die Konvertierung aus irgendeinem Grund erzwingen müssen, können Sie den Parameter `-f` verwenden . Diese Vorgehensweise wird jedoch nicht empfohlen, da sie Nicht-Textdateien unbrauchbar machen kann.

Verwalten symbolischer Links und Verzeichnisse

Standardmäßig verändern diese Befehle weder symbolische Links noch Verzeichnisse. Sie bieten jedoch Optionen wie -F (symbolischen Links folgen und deren Ziele konvertieren), -R (symbolische Links durch die konvertierten Dateien ersetzen) oder -S (symbolische Links ignorieren, was die Standardeinstellung ist).

Optionen zum Anzeigen und Debuggen

Wenn Sie wissen möchten, welches Format eine Datei hat oder wie viele Zeilenumbrüche jedes Typs sie enthält, können Sie die Option -i (oder –info ) verwenden:

  • dos2unix -i archivo.txt zeigt detaillierte Informationen zu Zeilenumbrüchen und Dateityp an.

Durch das Hinzufügen bestimmter Flags können Sie benutzerdefinierte Informationen erhalten (z. B. nur Dateien mit CRLF, nur Sprungzählung vom Unix-Typ usw.).

Konvertierungsmodi: ASCII, ISO, 7 Bit, Mac

  • ascii (Standard): Konvertiert nur Zeilenenden. Es ist die sichere Option für UTF-8-Dateien.
  • ISO: Führt die Konvertierung zwischen DOS-Codetabellen und dem ISO-8859-1-Standard durch. Nützlich für alte oder mehrsprachige Dateien.
  • 7bit; Eliminiert 8-Bit-Zeichen, nützlich für sehr alte Systeme oder solche, die extreme Kompatibilität erfordern.
  • Mac: Konvertiert zwischen klassischen Mac- und Unix-Formaten.

Diese Modi unterstützen die Kombination mit anderen Optionen, um verschiedene Dateitypen entsprechend den Anforderungen des Benutzers zu konvertieren.

Arbeiten mit Skripten und alternativen Befehlen

Wenn auf Ihrem System dos2unix/unix2dos nicht installiert ist oder Sie die Konvertierung manuell (oder in Skripten) durchführen müssen, gibt es mehrere Alternativen mit klassischen Unix-Befehlen:

  • Verwenden von sed: sed 's/\r$//' fichero.txt (das ^M wird eingegeben mit STRG+V STRG+M).
  • Im modernen GNU sed: sed 's/\x0D$//' fichero.txt.
  • Konvertieren von Unix nach DOS mit sed: sed 's/$/\r/' fichero.txt.
  • Verwenden von tr: tr -d '\r' < input.file > output.file.
  • Mit Perl: perl -pi -e 's/\r\n/\n/g' input.file.

Diese Methoden sind nützlich, wenn Sie bestimmte Programme nicht installiert haben oder eine schnelle Lösung für eingeschränkte Systeme benötigen.

  So entpacken Sie ZIP-Dateien Schritt für Schritt über die Befehlszeile in Windows

Konvertierungsbeispiele mit verschiedenen Kodierungen

Die Fülle an Optionen in dos2unix und unix2dos ermöglicht die Handhabung einer großen Vielfalt an Szenarien. Schauen wir uns einige Beispiele an, die veranschaulichen, wie mit spezifischen Anforderungen umgegangen werden kann:

  • Von Windows UTF-16 (mit BOM) zu Unix UTF-8:
    dos2unix -n in.txt out.txt
  • Von Windows UTF-16LE (kein BOM) zu Unix UTF-8:
    dos2unix -ul -n in.txt out.txt
  • Von Unix UTF-8 zu Windows UTF-8 (ohne BOM):
    unix2dos -m -n in.txt out.txt
  • Von Unix UTF-8 zu Windows UTF-16:
    unix2dos < in.txt | iconv -f UTF-8 -t UTF-16 > out.txt
  • Von Windows 1252 zu Unix Latin-1:
    dos2unix -1252 -n in.txt out.txt
  • Von Unix Latin-1 bis DOS 850:
    unix2dos -850 -n in.txt out.txt

In Situationen, in denen Sie zwischen ungewöhnlichen Codepages oder Dateien mit internationalen Zeichen konvertieren müssen, können Sie dos2unix/unix2dos mit anderen Hilfsprogrammen wie iconv kombinieren , um vor oder nach dem Ändern von Zeilenumbrüchen zwischen verschiedenen Kodierungen zu konvertieren.

Massenkonvertierung und Automatisierungsskripte

Eine der Stärken dieser Befehle ist ihre Integration in Skripte und automatisierte Umgebungen. Wenn Sie alle TXT-Dateien in einem Ordner (und Unterordnern) konvertieren möchten, können Sie die üblichen Shell-Befehle verwenden:

  • Unter Unix: find . -name '*.txt' -print0 | xargs -0 dos2unix
  • An Fenstern CMD: for /R %G in (*.txt) do dos2unix "%G"
  • En Powershell: get-childitem -path . -filter '*.txt' -recurse | foreach-object {dos2unix $_.Fullname}

Die Verwendung von -print0 und -0 in Unix ermöglicht die korrekte Verarbeitung von Dateinamen mit Leerzeichen, Akzenten oder Anführungszeichen.

Umgebungsvariablen und regionale Anpassung

dos2unix/unix2dos ermöglicht Ihnen, die Sprache und Lokalisierung mithilfe mehrerer Umgebungsvariablen anzupassen:

  • SPRACHE: Wählen Sie die primäre Sprache aus. Beispiel: export LANG=es_ES für Spanisch aus Spanien.
  • SPRACHE: Ermöglicht eine Liste bevorzugter Sprachen. Beispiel: LANGUAGE=es:en.
  • DOS2UNIX_LOCALEDIR: Definiert den Pfad zu den Sprachdateien des Programms.

Diese Optionen sind besonders in internationalen oder Mehrbenutzerumgebungen nützlich.

Beendigungs-, Fehler- und Rückgabemeldungen

Nach erfolgreicher Ausführung gibt das Programm 0 zurück, andernfalls 1, falls ein Fehler aufgetreten ist, der nicht mit dem Betriebssystem zusammenhängt. Im stillen Modus ( -q ) bleibt der Rückgabewert null, es sei denn, es liegt ein Fehler in den Parametern oder eine falsche Verwendung von Optionen vor.

Über dos2unix und unix2dos hinaus: Weitere Dienstprogramme und Dokumentation

Für spezielle Fälle der Textdateikonvertierung können Sie andere Befehle und Programme wie `file` , `iconv` , `find` oder `xargs` konsultieren . Diese lassen sich alle kombinieren, um robuste Lösungen zu erstellen, die vollständig auf die Bedürfnisse jedes Projekts zugeschnitten sind.

Wenn Sie tiefer einsteigen möchten, sind die folgenden Ressourcen hilfreich:

Installieren von dos2unix/unix2dos auf Hauptsystemen

In den meisten Linux-Distributionen und Unix-Umgebungen können diese Befehle problemlos installiert werden:

  • Debian / Ubuntu: sudo apt-get install dos2unix
  • CentOS/Red Hat: sudo yum install dos2unix
  • Arch Linux: sudo pacman -S dos2unix

Wenn Sie beispielsweise auf Systemen wie Ubuntu nach „dos2unix“ oder „unix2dos“ suchen und diese nicht zur Verfügung stehen, müssen Sie nur das entsprechende Paket installieren (früher war es „sysutils“). In Windows-Umgebungen gibt es portable Versionen oder Sie können Emulatoren wie Cygwin oder WSL verwenden.