A. Willemer Wie werde ich UNIX-Guru
| | I ANWENDUNG |
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.
|
II ADMINISTRATION |
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel
|
III NETZWERK |
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls
|
IV DAS X-WINDOW SYSTEM |
Die grafische Oberfläche von UNIX einrichten und nutzen
|
V PROGRAMMIERUNG VON SHELLSKRIPTEN |
Automatisieren von Tasks durch Shell-Skripte.
|
VI PERL |
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk
|
VII PROGRAMMIERWERKZEUGE |
C-Compiler, Analyse-Tools, CVS, yacc, diff
|
VIII UNIX-SYSTEMAUFRUFE |
UNIX-Befehle in eigenen Programmen nutzen
|
IX LITERATUR |
Weiterführende Literatur zu UNIX und LINUX
|
| |
Mit dem Kommando find ist es möglich, einen Verzeichnisbaum
rekursivRekursiv heißt »selbstaufrufend« und ist eine besondere
Programmiertechnik. Da das Durchlaufen von Bäumen durch rekursive Programme
am einfachsten zu realisieren ist, nennt man Bäume »rekursive Strukturen«
und das Durchlaufen der kompletten Äste eines Baumes »rekursiv«. Vgl. Wirth,
Niklaus: Algorithmen und Datenstrukturen mit Modula-2. 4. Aufl. Stuttgart,
Teubner, 1986. S. 174ff.
nach Dateien zu
durchsuchen und diese auszugeben oder Aktionen auf den gefundenen Dateien
auszuführen. find ist also ein sehr mächtiger Befehl.
Soll nur eine Datei gesucht werden, reicht die vereinfachte Syntax:
find Pfadname -name Dateimaske -print
Der Pfadname gibt an, ab welcher Stelle die rekursive Suche beginnt. Die
Dateimaske beschreibt die gesuchte Datei. Es können die normalen Wildcards
verwendet werden, um mehrere Dateien anzusprechen.
Neben der flexiblen Suche ist die interessanteste Fähigkeit von find
die Ausführung eines Kommandos auf jeder der gefundenen Dateien.
Die zuständige Option heißt -exec . Dahinter wird ein Befehl gesetzt,
der mit einem Semikolon abgeschlossen wird. Letzteres muss durch einen Backslash
gegen die Interpretation durch die Shell geschützt werden.
Die Shell würde das Semikolon als Trennzeichen zwischen zwei Befehlen
interpretieren, die nacheinander ausgeführt werden. Vergißt man den Backslash,
würde die Shell das Semikolon selbst interpretieren und nicht an find
weiterreichen.
Der Bezug auf die gefundene Datei
wird im Befehl durch ein Paar geschweifter Klammern repräsentiert.
Um beispielsweise alle Dateien namens core in den Heimatverzeichnissen
zu löschen, lautet der Befehl:
find /home -name core -exec rm {} ;
Der erste Parameter gibt an, wo die Suche beginnen soll. -name
fordert, dass ein Dateiname, der unter dem Verzeichnis /home
gefunden wird, der Dateimaske entspricht. Nur dann wird die Datei von find
weiter bearbeitet. Man kann es auch so ausdrücken, dass die Optionen
einen Wahrheitswert zurückliefern müssen, der wahr ist, wenn die weiteren
Optionen bearbeitet werden sollen. Die Maske zu -name ist einfach
core. Nur Dateien mit dem Namen core werden also weiter
bearbeitet. Zwischen der Option -exec und dem ; steht
der Befehl, der auf die gefundenen Dateien angewandt wird. Der gefundene
Dateiname mit seinem Pfad wird dort eingesetzt, wo sich im Befehl das
geschweifte Klammernpaar befindet. Fände find eine Datei namens
core im Verzeichnis /home/arnold, würde der folgende
Befehl generiert und per -exec ausgeführt:
rm /home/arnold/core
Der Befehl find kennt noch einige Optionen, die teils die Suche nach speziellen
Dateien ermöglichen und teils die Ausgabe informativer gestalten. Wie oben
schon angedeutet, hängt es vom dem Wahrheitswert, den die Optionen
zurückliefert ab, ob die gefundene Datei weiterbearbeitet wird.
Hier sind die wichtigsten Optionen zusammengefasst:
- [-name Dateimaske]
ist wahr, wenn die Dateimaske mit dem gefundenen Dateinamen
übereinstimmt. Es können reguläre Ausdrücke verwendet werden.
- [-print]
ist immer wahr. Bewirkt, dass das Ergebnis der Suche angezeigt wird.
Bei einigen
find -Versionen muss -print nicht explizit
angegeben werden, wenn keine weitere Option verwendet wird.
- [-ls]
ist immer wahr. Es bewirkt, dass neben dem Pfadnamen noch ein wenig
Statistik angezeigt wird. Dies beinhaltet die folgenden Angaben:
- i-node Nummer der Datei (siehe S. inode)
- Größe in Kilobytes (1024 Bytes)
- Protection mode
- Anzahl der »harten« Links
- Benutzer
- Gruppe
- Größe in Bytes
- Änderungszeitpunkt
- [-type Zeichen]
Der Dateityp wird erfragt. Das Zeichen kann folgende Werte haben:
[Dateitypen]C|L
Zeichen & Bedeutung
f & Dateien
d & Verzeichnisse
l & symbolische Links
b c & Peripheriedateien
p s & Kommunikationsendpunkte (named pipe und socket)
- [-perm Oktalzahl]
Erfragt die Berechtigung, die in oktaler Darstellung angegeben wird. Zur Codierung
siehe das Kapitel »Berechtigungen« auf S. rechte.
Beispiel:
find . -perm 0600 -print
Es werden alle Dateien unterhalb des aktuellen Verzeichnisses mit
Schreib- und Leserecht für den Benutzer und ansonsten
keinen Rechten angezeigt.
Man kann festlegen, dass mindestens die angegebenen Rechte vorhanden sein
müssen. Dazu muss der Zahl ein Minuszeichen vorangehen.
- [-exec Befehl]
Führt einen Befehl aus. Die aktuelle Datei wird durch das geschweifte
Klammernpaar { } als Argument
gekennzeichnet. Der Befehl hört mit einem Semikolon auf. Damit die Shell
es nicht selbst interpretiert, muss es mit einem Backslash versehen werden.
Beispiel:
-exec rm { } ;
Man kann die verschiedenen Optionen von find kombinieren. Man könnte
beispielsweise
nach Dateien suchen, die .rhosts heißen und nicht die Berechtigung
600 haben.
Dazu muss man die Aussagen miteinander logisch verknüpfen. Nach den Gesetzen der
Logik heißt UND, dass beide Aussagen zutreffen müssen, und ODER, dass
mindestens eine der Aussagen zutreffen muss.
Derartige Konstruktionen werden vor allem im Bereich der Shellprogrammierung
benötigt.
Mit Hilfe der folgenden Operatoren sind logische Ausdrücke kombinierbar:
- [( )]
Eine Gruppe von logischen Ausdrücken und Operatoren in Klammern.
Klammern sind besondere Zeichen für UNIX und müssen per Backslash gequotet werden.
- [!]
Die Negation eines logischen Ausdrucks. Das Ausrufezeichen (!) repräsentiert den
NICHT-Operator.
- [-a]
Die UND-Verknüpfung von logischen Ausdrücken. Werden mehrere logische Ausdrücke
hintereinander geschrieben, wird dies implizit als UND interpretiert. Man kann auch
explizit den Operator -a verwenden.
- [-o]
Die ODER-Vernüpfung von logischen Ausdrücken wird durch den Operator -o erreicht.
Hier sehen Sie zunächst den Befehl, der das obige Beispiel aufgreift und alle
Dateien
namens .rhosts in den Heimatverzeichnissen löscht, die nicht die
Berechtigung 600 haben:
find /home -name .rhosts -a ! -perm 0600 -exec rm { } ;
Das folgende Beispiel sucht ab dem aktuellen Verzeichnis alle Dateien, die auf
.log oder .aux enden:
find . -name *.log -o -name *.aux
Vor den Sternen muss ein Backslash stehen, damit sie an find
durchgereicht und nicht bereits durch die Shell interpretiert werden.
| |
|
|
Ihre Meinung? |
|
|
|
|
| |
| |
Shopping |
|
Versandkostenfrei bestellen in Deutschland und Österreich Info
|
|
| |
| |
|