Dateiinhalte anzeigen und vergleichen

LinuxBeginner
Jetzt üben

Einführung

Herzlich willkommen zu diesem praktischen Lab über die Arbeit mit Dateien unter Linux! Wenn Sie neu in der Linux-Welt sind, brauchen Sie sich keine Sorgen zu machen. Wir begleiten Sie Schritt für Schritt durch den Prozess. In diesem Lab lernen Sie, wie Sie Dateiinhalte einsehen, bestimmte Abschnitte einer Datei isolieren und Dateien miteinander vergleichen. Dies sind grundlegende Fertigkeiten, die Ihnen helfen werden, sich im Linux-Dateisystem zurechtzufinden und es zu verstehen.

Dateiinhalte ausgeben

Öffnen Sie zunächst ein Terminal auf dem Desktop ODER wechseln Sie zum Terminal-Tab in der Lab-Umgebung.

Terminal window screenshot

Sobald das Terminal geöffnet ist, sehen Sie die Eingabeaufforderung (Prompt), die normalerweise mit einem $-Symbol endet. Hier geben wir unsere Befehle ein.

Verwenden wir nun den Befehl cat, um den Inhalt einer Datei anzuzeigen:

  1. Tippen Sie den folgenden Befehl im Terminal ein und drücken Sie die Eingabetaste:
cat /tmp/hello

Hierbei ist /tmp/hello der Pfad zu der Datei, die wir betrachten möchten. /tmp ist ein Verzeichnis (Ordner) auf Ihrem System und hello ist der Name der Datei in diesem Verzeichnis.

  1. Nach dem Drücken der Eingabetaste sollten Sie den Inhalt der Datei sehen:
Hi,
I am Labby!

Dies ist der vollständige Inhalt der Datei /tmp/hello. Der Befehl cat hat ihn für uns direkt im Terminal ausgegeben.

Dateiinhalte mit Zeilennummern anzeigen

Nun verwenden wir den Befehl cat erneut, fügen aber diesmal Zeilennummern zur Ausgabe hinzu.

  1. Geben Sie den folgenden Befehl im Terminal ein und bestätigen Sie mit der Eingabetaste:
cat -n /tmp/hello

Das -n wird hier als Option oder Flag bezeichnet. Es weist cat an, alle Ausgabezeilen zu nummerieren.

  1. Sie sollten nun den Inhalt der Datei mit vorangestellten Zeilennummern sehen:
     1 Hi,
     2 I am Labby!

Dies ist besonders hilfreich, wenn Sie mit längeren Dateien arbeiten und sich auf bestimmte Zeilen beziehen müssen.

Die ersten Zeilen einer Datei ausgeben

Als Nächstes verwenden wir den Befehl head. Wie der Name schon sagt (englisch für "Kopf"), wird head verwendet, um den Anfang einer Datei zu betrachten.

  1. Geben Sie den folgenden Befehl im Terminal ein und drücken Sie die Eingabetaste:
head -n1 /tmp/hello

Hier ist -n1 eine Option, die head anweist, nur die erste Zeile anzuzeigen. Die Zahl 1 kann durch jede beliebige Zahl ersetzt werden, um entsprechend viele Zeilen auszugeben.

  1. Sie sollten diese Ausgabe sehen:
Hi,

Dies ist lediglich die erste Zeile der Datei. Standardmäßig, also ohne die Option -n1, würde head die ersten 10 Zeilen der Datei anzeigen.

Die ersten Bytes einer Datei anzeigen

Wir nutzen den Befehl head erneut, aber diesmal, um eine bestimmte Anzahl von Bytes (Zeichen) vom Anfang der Datei anzuzeigen.

  1. Geben Sie den folgenden Befehl im Terminal ein und drücken Sie die Eingabetaste:
head -c1 /tmp/hello

Die Option -c1 weist head an, nur das erste Byte der Datei anzuzeigen. Wie bei -n können Sie die 1 durch eine beliebige Zahl ersetzen.

  1. Sie sollten diese Ausgabe sehen:
H

Dies ist das erste Zeichen der Datei. In Textdateien entspricht ein Zeichen in der Regel einem Byte.

Die letzten Zeilen einer Datei ausgeben

Kommen wir nun zum Befehl tail. Wie Sie vielleicht schon ahnen, ist tail (englisch für "Schwanz" oder "Ende") das Gegenstück zu head – es zeigt das Ende einer Datei an.

  1. Geben Sie den folgenden Befehl im Terminal ein und drücken Sie die Eingabetaste:
tail -n1 /tmp/hello

Genau wie bei head bewirkt die Option -n1, dass nur eine Zeile ausgegeben wird – in diesem Fall die letzte Zeile der Datei.

  1. Sie sollten diese Ausgabe sehen:
I am Labby!

Dies ist die letzte Zeile unserer Datei. Ohne die Option -n1 würde tail standardmäßig die letzten 10 Zeilen anzeigen.

Die letzten Bytes einer Datei anzeigen

Ähnlich wie bei head können wir tail verwenden, um eine bestimmte Anzahl von Bytes am Ende einer Datei anzuzeigen.

  1. Versuchen wir zunächst, das letzte Byte anzuzeigen. Geben Sie den folgenden Befehl ein:
tail -c1 /tmp/hello

Möglicherweise sehen Sie keine sichtbare Ausgabe. Das liegt daran, dass das letzte Zeichen oft ein Zeilenumbruch (Newline) ist, der unsichtbar bleibt.

  1. Versuchen wir es stattdessen mit den letzten zwei Bytes. Geben Sie diesen Befehl ein:
tail -c2 /tmp/hello
  1. Nun sollten Sie folgendes sehen:
!

Die Option -c2 weist tail an, die letzten 2 Bytes der Datei anzuzeigen. In diesem Fall wird das Ausrufezeichen ausgegeben, welches das letzte sichtbare Zeichen in unserer Datei ist.

Dateien vergleichen

Jetzt lernen wir, wie man den Befehl diff verwendet, um zwei Dateien zu vergleichen und die Unterschiede zwischen ihnen zu identifizieren.

  1. Stellen wir zunächst sicher, dass wir uns im richtigen Verzeichnis befinden. Geben Sie folgenden Befehl ein:
cd ~/project

Dies wechselt in den Ordner "project" in Ihrem Benutzerverzeichnis. Das Symbol ~ ist eine Abkürzung für Ihr Home-Verzeichnis.

  1. Vergleichen wir nun zwei Dateien. Geben Sie diesen Befehl ein:
diff file1 file2

Dies weist diff an, die Inhalte von file1 und file2 gegenüberzustellen.

  1. Sie sollten eine Ausgabe ähnlich dieser sehen:
1c1
< this is file1
---
> this is file2

Lassen Sie uns die Bedeutung dieser Ausgabe aufschlüsseln. Der Befehl diff beschreibt, welche Änderungen nötig wären, um die erste Datei identisch mit der zweiten zu machen.

  • 1c1: Dies bedeutet, dass Zeile 1 in der ersten Datei geändert (changed) werden muss, um mit Zeile 1 der zweiten Datei übereinzustimmen.
  • < this is file1: Das Symbol < kennzeichnet eine Zeile aus der ersten Datei (file1).
  • ---: Dies ist ein Trenner zwischen den Zeilen der beiden Dateien.
  • > this is file2: Das Symbol > kennzeichnet eine Zeile aus der zweiten Datei (file2).

Einfach ausgedrückt zeigt uns diff, dass der Inhalt von Zeile 1 in beiden Dateien unterschiedlich ist. Damit file1 exakt wie file2 aussieht, müsste die Zeile "this is file1" durch "this is file2" ersetzt werden.

Verzeichnisse vergleichen

Abschließend verwenden wir den Befehl diff, um ganze Verzeichnisse miteinander zu vergleichen.

  1. Geben Sie den folgenden Befehl im Terminal ein:
diff -r ~/Desktop ~/Code

Die Option -r (rekursiv) weist diff an, auch alle Unterverzeichnisse zu vergleichen. ~/Desktop und ~/Code sind die Pfade der beiden Verzeichnisse, die wir prüfen.

  1. Die Ausgabe könnte etwa so aussehen:
Only in /home/labex/Desktop: code.desktop
Only in /home/labex/Desktop: gedit.desktop
Only in /home/labex/Desktop: gvim.desktop
Only in /home/labex/Desktop: xfce4-terminal.desktop

Diese Ausgabe zeigt, dass das Verzeichnis Desktop vier Dateien enthält, die im Verzeichnis Code nicht vorhanden sind.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab zu Dateiinhalten und Vergleichen erfolgreich abgeschlossen. Hier ist eine kurze Zusammenfassung dessen, was Sie gelernt haben:

  1. Sie haben cat genutzt, um den gesamten Inhalt einer Datei anzuzeigen.
  2. Sie haben gelernt, wie man mit cat -n Zeilennummern einblendet.
  3. Sie haben head verwendet, um den Anfang einer Datei nach Zeilen oder Bytes zu betrachten.
  4. Sie haben tail verwendet, um das Ende einer Datei nach Zeilen oder Bytes zu betrachten.
  5. Sie haben gelernt, wie man mit diff die Inhalte von Dateien vergleicht.
  6. Schließlich haben Sie diff -r eingesetzt, um ganze Verzeichnisstrukturen zu vergleichen.

Diese Befehle sind grundlegende Werkzeuge unter Linux. Im weiteren Verlauf Ihrer Arbeit mit Linux werden Sie diese Befehle häufig benötigen, um Dateien und Verzeichnisse zu inspizieren und zu analysieren.

Tipp: Wenn Sie einmal vergessen sollten, wie ein Befehl funktioniert, können Sie jederzeit man gefolgt vom Befehlsnamen eingeben (z. B. man cat), um das Handbuch (Manual Page) aufzurufen. Dort finden Sie detaillierte Informationen zu allen verfügbaren Optionen.

Üben Sie diese Befehle weiter an verschiedenen Dateien, um routinierter im Umgang mit der Kommandozeile zu werden!