2.4 Arbeiten mit Dateien
Unser nächster Schwerpunkt soll das Arbeiten mit Dateien sein. Zuerst wollen wir dabei betrachten, wie man sich Dateien in der Shell anzeigen lassen kann.
2.4.1 ls
Dateien eines Verzeichnisses anzeigen
Für diese Aufgabe ist der ls-Befehl zuständig. Ohne Argument zeigt ls den Inhalt des Arbeitsverzeichnisses an, allerdings kann man sich die Dateien eines jeden beliebigen Verzeichnisses durch dessen Angabe als Argument auflisten lassen:
$ pwd /usr/src/linux-2.6.10 $ ls arch crypto fs ipc MAINTAINERS ... CREDITS drivers init lib mm REPORTING-BUGS sound $ ls /home jploetner mploetner aploetner
Listing 2.7 Dateien auflisten mit ls
Versteckte Dateien anzeigen
Im Normalfall – also wie hier im Listing ohne Angabe weiterer Optionen – zeigt ls nur Dateien und Verzeichnisse an. Mit einem Punkt beginnende und somit »versteckte« Elemente eines Verzeichnisses werden ausgeblendet. Möchte man sich diese Dateien dennoch alle anzeigen lassen, sollte man das -a-Flag benutzen:
$ ls test test.c $ ls -a test test.c .vimlog
Listing 2.8 Versteckte Dateien anzeigen
Natürlich kann ls auch viele mit einer Datei verknüpfte Metadaten wie Rechte oder Eigentümer und Gruppe anzeigen. Man will mit anderen Worten ein langes Listing, das man mit dem -l-Flag bekommen kann:
$ ls -l -rwxr-xr-x 1 jploetner users 28 05-03-13 22:03 test -rw-r--r-- 1 jploetner users 371 05-02-10 13:40 test.c
Listing 2.9 Lange und ausführliche Dateilistings
In diesem Beispiel können Sie das Rechtesystem auch in der Praxis sehen: Beide Dateien haben den Eigentümer »jploetner« und sind in der Gruppe »users«. Ganz am Anfang sieht man auch drei Dreiertupel, die in der Reihenfolge Eigentümer, Gruppe und Sonstige jeweils über die Berechtigungen r (read), w(write) und x (execute) Auskunft geben. Wird der entsprechende Buchstabe in der Ausgabe von ls angezeigt, so wird das Recht gewährt. Andernfalls signalisiert ein Minus das Fehlen der entsprechenden Berechtigung. Was die weiteren von ls angezeigten Daten nun im Einzelnen bedeuten und was man mit ls auch sonst noch machen kann, erfahren Sie im Shell-Kapitel und in der Kommandoreferenz.
2.4.2 more und less
Dateien anzeigen
Möchte man sich Dateien ansehen, kann man sich zum Beispiel zweier Programme bedienen: more und less.
Beide Tools sind sogenannte Pager und zeigen den Inhalt einer Datei als Text interpretiert an. Beide Programme unterscheiden sich dabei nur in ihrer Bedienung, wobei less etwas benutzerfreundlicher ist als more.
Bei more kann man nur mittels der Enter-Taste jeweils eine Zeile tiefer scrollen, less dagegen erlaubt eine intuitivere und komplettere Bedienung mittels Cursor- und den Bildlaufleisten. Bei beiden Pagern kann man in der angezeigten Datei suchen, indem man den Slash (»/«), gefolgt vom zu suchenden Wort, eintippt. Über die Taste n kann man schließlich zur nächsten Fundstelle des Suchbegriffs springen.
2.4.3 Und Dateitypen?
Einige Verwirrung bei der Arbeit mit Dateien entsteht immer um die Verwendung von Dateiendungen. Mit Dateiendungen wie .jpg oder .txt möchte man ja im Regelfall einen Rückschluss auf den Dateiinhalt erlauben, also im Beispiel auf eine Bild- beziehungsweise Textdatei hinweisen.
Eine konsistente Lösung
Unter Linux wie auch unter BSD und anderen Unix-Versionen ist der Punkt nun ein gültiger Bestandteil des Dateinamens. Mit Ausnahme eines Punkts als ersten Buchstaben im Dateinamen – womit man ja eine Datei »versteckt« – kann man den Punkt so oft wie man will oder eben auch gar nicht verwenden. Der Kernel kann nur Programme starten, keine Bild- oder Textdateien.
Auf Dateien wird unabhängig vom Dateityp über ein einheitliches Interface mittels open(), read() und auch write() zugegriffen. Für das System sind somit alle Dateien nur eine Folge von Bits und Bytes, und die Anwendung ist allein dafür zuständig, diese Daten zu interpretieren.
Mit anderen Worten sind Erweiterungen wie eben .jpg und .txt nur für Sie als Benutzer relevant.
Sie können auf den ersten Blick erkennen, um was für eine Art Datei es sich handelt. Wenn Sie nun aber unbedingt eine Musikdatei in einem Texteditor bearbeiten wollen, können Sie dies tun – dem System ist das egal.
Eine Einschränkung sei aber hier schon einmal vorab für grafische Oberflächen wie KDE oder GNOME genannt: Wenn Sie mit einem Klick auf eine Textdatei diese Datei in einen Editor laden und anschließend bearbeiten wollen, so muss natürlich eine gewisse Verknüpfung vom Dateityp zu der für diesen Typ bevorzugten Anwendung bestehen. Der Einfachheit halber bietet es sich dann natürlich an, diese Zuordnung aufgrund der Dateiendungen vorzunehmen. <Diese »Einfachheit« und die Wahlmöglichkeit bezieht sich natürlich auf die Programmierer der grafischen Oberfläche, die Ihnen als Nutzer dann schließlich eine Möglichkeit der Verknüpfung von Dateitypen zu Programmen vorsetzen.>
file
Analyse des Inhalts
Eine weitere Möglichkeit ist der Versuch, den Inhalt aufgrund bestimmter charakteristischer Muster zu erkennen. Für die Kommandozeile ist hier das file-Tool das Programm der Wahl: Wird es mit einer zu untersuchenden Datei aufgerufen, gibt es den aufgrund einer Inhaltsanalyse vermuteten Dateityp aus:
$ ls test.c test $ file test.c test.c: ASCII C program text $ file test test:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), not stripped
Listing 2.10 In Aktion: file
Je nach Dateityp kann die Analyse dabei relativ kurz oder auch etwas ausführlicher erfolgen.