Aufmacher

Konvertierung auf der Shell

Verwandlung auf Befehl

Unterschiedliche Zeilenenden oder Zeichenkodierungen machen Linuxern den Datenaustausch schwer. Ein paar Konvertierungstools auf der Shell helfen aus der Misere.

Wenn Sie häufig Textdokumente zwischen Windows- und Linux-Systemen tauschen, passen Sie mit wenigen Kommandos auf der Shell die unterschiedlichen Zeilenenden an – dos2unix und unix2dos konvertieren mit nur einem Befehl. Sollte darüber hinaus ein Zeichensatz Ärger machen, wandeln iconv und recode den Buchstabensalat in ein leckeres und lesbares Gericht um.

Was gibt's?

Dateiendungen sind Schall und Rauch: Linux unterscheidet Dateitypen nach inhaltlichen Kriterien und nicht nach der Endung des Dateinamens. So erkennt es beispielsweise eine MP3-Datei auch als solche, wenn sie einen Namen trägt, der auf etwas ganz anderes schließen lässt. Abbildung 1 zeigt den Gnome-Dateimanager Nautilus, der sowohl die als Text getarnte MP3-Datei (im Beispiel huhn.txt) als auch die als PNG verkleidete LaTeX-Datei (brief.png) richtig identifiziert hat.

Abbildung 1: Mogeln gilt nicht – Linux erkennt Dateitypen nicht anhand ihrer Enden, sondern anhand ihres Inhalts.

Auf der Kommandozeile hilft das Programm file dabei, die Dateitypen richtig zu erkennen (Listing 1). Das praktische Tool schaut sich Dateien ganz genau an und versucht mit verschiedenen Tests herauszufinden, um was für einen Typ es sich handelt. In der Regel ermöglichen bereits die ersten paar Bytes einer Datei die korrekte Zuordnung. Nur wenn file gar nicht fündig wird, meldet es:

$ file komischedatei
komischedatei:  data
Listing 1
$ file *
brief.png:      LaTeX 2e document text
huhn.txt:       MP3 file with ID3 version 2.3.0 tag
test.txt:       ISO-8859 text

Das Programm zeigt sich netterweise auch recht informativ, wenn es um Textdateien geht. Dass Text nicht gleich Text ist, zeigt die Ausgabe in Listing 2: Drei Textdateien ergeben drei verschiedene Ausgaben von file: Einmal UTF-8, einmal Windows-Zeilenenden (CRLF, siehe nächster Abschnitt) und einmal ISO-8859. Die nächsten Abschnitte stellen Programme vor, mit denen Sie diese unterschiedlichen Texte für den Austausch mit anderen Systemen fit machen.

Listing 2
$ file *
utf8.txt:       UTF-8 Unicode text
win.txt:        ISO-8859 text, with CRLF line terminators
iso8859.txt:    ISO-8859 text

Das Ende der Zeile …

… ist oft der Anfang des Ärgers, denn die verschiedenen Betriebssysteme nutzen unterschiedliche Kennzeichnungen für Zeilenenden. Die Syntax, die übrigens der Funktionsweise von Schreibmaschinen nachempfunden wurde, fällt unter Linux und Windows unterschiedlich aus: Während Linux-Systemen ein Line Feed (Zeilenvorschub, \n = "new line") ausreicht, repräsentiert unter Windows eine Kombination aus Line Feed und Carriage Return (Wagenrücklauf, \r = "return") den Umbruch.

Spätestens beim Öffnen einer Textdatei in einem Editor fällt dieser kleine, aber feine Unterschied auf: Eine unter Windows erstellte Textdatei zeigt im Vim beispielsweise überall ^M-Zeichen (Abbildung 2). Eine mögliche Lösung bieten die beiden Shell-Tools dos2unix (sprich: "DOS to Unix") und unix2dos ("Unix to DOS"). Wie der Name vermuten lässt, wandeln sie Dateien von einem ins andere Format um.

Unter einigen Linux-Distributionen kommen die beiden Helfer in jeweils eigenen Paketen daher; aktuelle Debian-Versionen liefern stattdessen das Paket tofrodos aus, das die beiden Programme fromdos und todos enthält. Hier weisen zwei symbolische Links von /usr/bin/dos2unix und /usr/bin/unix2dos auf die verwandten Tools, sodass der Benutzer einerseits wie gewohnt mit dos2unix und unix2dos, aber auch mit fromdos und todos arbeiten kann. Die Programme leisten grundsätzlich dasselbe, an einigen Stellen weichen sie allerdings voneinander ab. Der Artikel spricht im Folgenden von dos2unix/unix2dos (da der Aufruf ja auch auf Debian-Systemen funktioniert) und erklärt die jeweils abweichenden Optionen.

Abbildung 2: Zeichen wie von Geisterhand – die unterschiedlichen Zeilenenden erscheinen im Vim als ^M.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...