6.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.
6.4.1 ls
Dateien eines Verzeichnisses anzeigen
Für die Auflistung von Dateien in der Shell ist der ls-Befehl zuständig. Ohne Argument zeigt ls den Inhalt des Arbeitsverzeichnisses an, allerdings kann man sich die Dateien jedes beliebigen Verzeichnisses durch dessen Angabe als Argument auflisten lassen:
Listing 6.10 Dateien auflisten mit ls
$ 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
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:
Listing 6.11 Versteckte Dateien anzeigen
$ ls
test test.c
$ ls -a
test test.c .vimlog
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 erhält:
Listing 6.12 Lange und ausführliche Dateilistings
$ 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
In diesem Beispiel können Sie das Rechtesystem auch in der Praxis sehen: Beide Dateien haben den Eigentümer jploetner und gehören zur 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 im Einzelnen bedeuten und was man mit ls sonst noch machen kann, erfahren Sie in Teil III, »Die Shell«, und in der Kommandoreferenz ab Seite #$refpage#kr_ls#.
6.4.2 more, less und most
Dateien anzeigen
Möchte man sich textuelle Dateien (etwa Shellskripte, ein README oder Dateien aus /etc) ansehen, so 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. Sie 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 umfassendere Bedienung mittels Cursor- und den Bildlauftasten. Bei beiden Pagern kann man in der angezeigten Datei suchen, indem man den Slash (/), gefolgt vom Suchbegriff, eintippt. Über die Taste N kann man schließlich zur nächsten Fundstelle des Suchbegriffs springen.
Mit dem Programm most können Sie gegenüber less nochmals an Bedienkomfort gewinnen, denn most most kann farbige Ausgaben verschiedener Eingabe-Typen (etwa Manpages) erstellen.
Sowohl less, als auch most können mehrere Dateien gleichzeitig geöffnet haben (das nächste Fenster erhält man durch :n, bei less kann das vorherige zudem mit :p erreicht werden). In most können auch Fenster aufgeteilt werden, sodass Sie mehrere geöffnete Dateien gleichzeitig betrachten können (Strg + X und anschließend 2 drücken).
Beenden können Sie alle drei Programme durch die Taste Q.
6.4.3 Und Dateitypen?
Einige Verwirrung bei der Arbeit mit Dateien entsteht hinsichtlich der Verwendung von Dateiendungen. Endungen wie .jpg oder .txt sollten 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 – der bekanntlich eine Datei »versteckt« – kann man den Punkt so oft 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 alle Dateien nur eine Folge von Bits und Bytes. Die Anwendung allein ist dafür zuständig, diese Daten zu interpretieren.
Folglich sind Erweiterungen wie .jpg und .txt nur für Sie als Benutzer relevant. Sie können auf den ersten Blick erkennen, um welche 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 gilt jedoch für grafische Oberflächen wie KDE oder GNOME: Wenn Sie mit einem Klick auf eine Textdatei diese Datei in einen Editor laden und anschließend bearbeiten wollen, so muss 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. [Fn. Diese »Einfachheit« und die Wahlmöglichkeit gilt für die Programmierer der grafischen Oberfläche, die Ihnen als Nutzer dann schließlich eine Möglichkeit zur Verknüpfung von Dateitypen zu Programmen anbieten.]
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:
Listing 6.13 In Aktion: file
$ file test.c
test.c: ASCII C program text
$ file testtest:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.2.0, dynamically linked (uses shared libs), not stripped
Je nach Dateityp kann die Analyse dabei relativ kurz oder auch etwas ausführlicher ausfallen.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.