3.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.
3.4.1 ls
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:
$ pwd /usr/src/linux-6.5.7 $ ls arch crypto fs ipc MAINTAINERS ... CREDITS drivers init lib mm REPORTING-BUGS sound $ ls /home jploetner mploetner aploetner
Listing 3.10 Dateien auflisten mit ls
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öchten Sie sich diese Dateien dennoch alle anzeigen lassen, sollten Sie das -a-Flag benutzen:
$ ls test test.c $ ls -a test test.c .vimlog
Listing 3.11 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 erhält:
$ ls -l -rwxr-xr-x 1 jploetner users 28 05-03-23 22:03 test -rw-r--r-- 1 jploetner users 371 05-02-23 13:40 test.c
Listing 3.12 Lange und ausführliche Dateilistings
In diesem Beispiel sehen Sie das Rechtesystem auch in der Praxis: Beide Dateien haben den Eigentümer jploetner und gehören zur Gruppe users. Ganz am Anfang erkennen Sie 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.
3.4.2 more, less und most
Möchten Sie sich textuelle Dateien (etwa Shellskripte, ein README oder Dateien aus /etc) ansehen, so können Sie sich zum Beispiel dieser zwei 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 können Sie nur mittels der (¢)-Taste jeweils eine Zeile tiefer scrollen, less dagegen erlaubt eine intuitivere und umfassendere Bedienung mittels Cursor- und den Bildlauftasten. Bei beiden Pagern können Sie in der angezeigten Datei suchen, indem Sie den Slash (/), gefolgt vom Suchbegriff und (¢), eintippen. Über die Taste (N) schließlich springen Sie zur nächsten Fundstelle des Suchbegriffs.
Mit dem Programm most können Sie gegenüber less nochmals an Bedienkomfort gewinnen, denn most kann farbige Ausgaben verschiedener Eingabetypen (etwa Manpages) erstellen.
Sowohl less als auch most können mehrere Dateien gleichzeitig geöffnet haben (das nächste Fenster erhalten Sie durch :n, bei less erreichen Sie das vorherige zudem mit :p). In most können Sie Fenster auch aufteilen, sodass Sie mehrere geöffnete Dateien gleichzeitig betrachten können (drücken Sie dazu (Strg) + (X) und anschließend (2)).
Beenden können Sie alle drei Programme durch die Taste (Q).
3.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.
Unter Linux und anderen Unix-Varianten ist der Punkt 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 des Dateinamens wie .jpg und .txt nur für Sie als Benutzerin oder 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: 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 anhand der Dateiendungen vorzunehmen.[ 20 ]
file
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:
$ 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 3.13 In Aktion: file
Je nach Dateityp kann die Analyse dabei relativ kurz oder auch etwas ausführlicher ausfallen.