Linux-Arbeitskreis Hamburg

Werkzeuge für den Anfang

Grundlagen

Jedes Unix-System verfügt über eine Anzahl von sehr "mächtigen" Werkzeugen, deren Bedienung aber für Anfänger oft sehr unübersichtlich ist.

Das fängt schon bei den Editoren an. Die Standardeditoren unter Linux sind so umfangreich, daß es dafür extra Anleitungsbücher gibt. Es existiert aber auch ein Editor, der wesentlich einfacher zu bedienen ist, das er mit Wordstar-Befehlen arbeitet, ähnlich wie auch Turbo-Pascal das macht.

Joe der Editor

Gestartet wird joe durch die Eingabe joe <dateiname>

Für die Bedienung von joe muß man nur ein paar einfache Befehle kennen
STRG-k h : Hilfe an oder ausschalten
STRG-k x : Speichern und Beenden
STRG-c : verlassen ohne speichern
Cursortasten : Bewegen im Text
Backspace : Zeichen links löschen

Dateien betrachten mit less

Für den Anfänger ist es gefährlich eine Datei in einen Editor zu laden, nur um sie zu betrachten. In Linux dient zum Betrachten einer Datei der Befehl less.

less <Dateiname>

z.B. less /etc/services

Mit der Leertaste bzw. den Cursortasten kann man innerhalb des Textes Navigieren, mit q" wird die Anzeige beendet.

Hilfe finden

Unix-Entwickler sind wohl eine besondere Spezies. Fast alle Unix-Werkzeuge besitzen eine enorme Flexibilität, aber auch eine entsprechende Komplexität. Will man Informationen über die Möglichkeiten eines Befehles haben, so gibt es in der Regel zwei Möglichkeiten, die hier am Beispiel des Befehles find" dargestellt sind:

find --help liefert eine kurze Übersicht über die Schalter, die man im Zusammenhang mit diesem Befehl nutzen kann.

man find ruft die Man-Page" (den Eintrag in das Handbuch) für den Befehl. Hier erhält man einen sehr ausführlichen Text von mehreren Bildschirmseiten.

Suchen von Dateien mit find

Wie man schon an der Man-Page sehen kann verfügt find" über sehr viele Möglichkeiten. Die einfachst Art des Aufrufes ist aber:

find <Startverzeichnis> -name <Suchmaske>

z.B. find / -name *.conf

So aufgerufen würde find ausgehend vom Wurzelverzeichnis alle Dateien finden, die am Ende .conf" heißen.
Mir geht es oft so, daß ich sogar den Namen nicht mehr genau weiß, mich aber noch daran erinnern kann, wann die Datei zuletzt verändert wurde. Dann suche ich mit dem folgenden Aufruf:

find <Startverzeichnis> -mtime <Anzahl Tage>

z.B. find / -mtime 7

Das Beispiel würde alle Dateien finden, deren Inhalt von 7 Tagen verändert wurde.

Natürlich kann man die beiden Schalter auch kombinieren, um nur diejenigen Dateien zu finden, die *.conf" heißen und vor 7 Tagen verändert wurden.

Suchen von Dateiinhalten mit grep

Während find nur nach Dateinamen sucht, sucht grep Texte innerhalb von Dateien. Daher sollte man mit grep nicht alle Dateien der Festplatte durchsuchen, daß würde relativ lange dauern. Der Aufruf kann folgendermaßen aussehen:

grep <Text> <Datei(en)>

Soll Groß- und Kleinschreibung nicht beachtet werden, so muß man zusätzlich noch den Schalter -i angeben, also

grep -i <Text> <Datei(en)>

z.B. grep -i ftp /etc/services

würde in der Datei /etc/services nach dem Auftreten der Zeichenfolge ftp suchen, wobei die Groß-/Kleinschreibung keine Rolle spielt. Alle Fundstellen werden dann ausgegeben.

Piping

Auch unter DOS kann man Ein- und Ausgaben mit dem Symbol  "|" umleiten. Unter Linux wird von dieser Möglichkeit sehr oft Gebrauch gemacht.

Im Prinzip ist das so, daß beim Piping die Ausgabe eines Programmes als Eingabe für das nächste Programm genutzt wird.

Die Programme find und grep lassen sich z.B. folgendermaßen kombinieren:

find / -name "*.conf" |  grep hallo

Damit würde in der Ausgabe des "find"-Befehles nach dem Auftreten der Zeichenkette "hallo" gesucht. Das könnte man auch einfacher haben. Normalerweise will man in den Dateien, deren namen mit "find" gefunden wurden, nach einer bestimmten Zeichenkette suchen. Genau diesen Effekt hat das Kommando "xargs". Die Dateinamen, die "find" ausgibt, werden als Argumente für "grep" aufgefaßt.

find / -name "*.conf" |  xargs grep hallo

Hier würden mit find erst einmal alle Dateien gesucht werden, die dem Muster "*.conf" entsprechen. In diesen Dateien würde grep dann jeweils nach der Zeichenkette hallo" suchen.

Übungsaufgaben

1. Suche alle Dateien heraus, in denen die Domainbezeichnung, also der mit WiNShuttle vereinbarte Bezeichner für die Schule auftaucht und betrachte sie mittels less.

2. Suche alle Dateien heraus, in denen die IP-Adresse auftaucht und betrachte sie mittels less.

Hinweis: Es würde sehr lange dauern, wenn man alle Dateien auf dem Speichermedium mittels grep nach diesen Informationen durchsuchen würde. Etwas schneller geht es, wenn man bedenkt, daß diese Angaben ja bei der Installation des Systems eingetragen wurden. Man muß dann nur wissen, vor wievielen Tagen die Installation vorgenommen wurde.


Kritik, Anregungen und Ergänzungen willkommen. Zusammengestellt von Uwe Debacher, letzte Änderung am 27.01.2006