Eine frei verwendbare Unix-Grundlagenschulung mit muLinux
Um diese Übung auf unsere Arbeitsdiskette zu speichern, legen wir diese in das Disketten-Laufwerk, mounten das Laufwerk nach /a und wechseln in das Verzeichnis /a.
/# mount /dev/fd0 /a
/# cd /a
/a#
Dateien suchen und finden mit find
Unix besitzt ein umfangreiches Verzeichnissystem.
Die Suche nach bestimmten Dateien gleicht manchmal der Suche nach der Nadel im Heuhaufen.
Für diese Suche stellt Unix den Befehl find zur Verfügung.
Dieser Befehl durchsucht ein Startverzeichnis und alle dort enthaltenen Unterverzeichnisse nach Dateien, die bestimmten Kriterien genügen.
Auf diese Dateien wird dann ein find-spezifischer Befehl angewendet.
Die allgemeine Syntax ist:
/# find Verzeichnis Optionen
Leider verfügt muLinux-Variante von find längst nicht über alle Möglichkeiten wie die Standardvariante.
Es ist aber trotzdem erstaunlich, wie viel Unix-Befehle auf eine Diskette passen.
Das angegebene Verzeichnis ist das Startverzeichnis für die Suche.
Es wird dieses Verzeichnis und all Unterverzeichnisse durchsucht.
Es ist meist ungünstig das Hauptverzeichnis / anzugeben, da die Suche mitunter sehr lange dauert.
Optionen
Die Optionen definieren die Suchbedingungen und die damit zusammenhängenden Aktionen.
-name Dateiename
Die Option -name bewirkt eine Suche nach Dateien oder Verzeichnisse mit dem hier angegebenen Dateienamen.
Leider akzeptiert die muLinux-Variante von find hier keine Wildcard-Zeichen, wie z. B. den Stern *.
-user Nutzername
Mit -user können Dateien oder Verzeichnisse eines Nutzers gesucht werden.
-print
Die Option -print ist eine Aktion.
Diese gibt die gefundenen Dateienamen aus.
Genaugenommen ist die Angabe von -print bei der muLinux-Variante von find nicht notwendig.
Die Standardvariante von find enthält noch andere Aktionsvarianten, z. B. das Ausführen von Programmen bei bestimmten Bedingungen.
Beispiele
/# find / -name passwd -print
Es wird, beginnend vom Hauptverzeichnis /, nach allen Dateien mit den Namen "passwd" gesucht.
Diese werden durch -print auf den Bildschirm ausgegeben.
Es erscheinen aber auch Fehlermeldungen, da Unterverzeichnisse von /proc nicht durchsucht werden können.
Wer diese Fehlermeldungen nicht sehen will, schickt sie einfach in den Mülleimer:
/# find / -name passwd -print 2> /dev/null
Wir modifizieren diesen Befehl (Befehlswiederholung mit Cursortaste auf), um nach allen Dateien mit dem Namen ls zu suchen:
/# find / -name ls -print 2> /dev/null
Dieser Befehl findet auch Dateien, in denen sich die Buchstabenfolge "ls" befindet.
/# find / -user craxi -print 2> /dev/null > /a/gefunden.txt
Alle Namen von Dateien des Nutzer "craxi" werden in der Datei "gefunden.txt" auf der Diskette gespeichert. Fehlermeldungen werden ignoriert.
/# find -h
Die Option -h listet alle Optionen von find auf.
Wer die Möglichkeit hat an einen "richtigen" Unix zu arbeiten, sollte sich unbedingt den Befehl find mit allen seinen Optionen anschauen.
Außerdem gibt es dort auch den schnelleren Such-Befehl locate.
Programme finden mit which
Das Programm which gibt den Pfad eines Befehls aus.
/# which ls
/bin/ls
Das Programm ls befindet sich also im Verzeichnis /bin.
/# which find
/usr/bin/find
Das Programm find ist im Verzeichnis /usr/bin.
Dateiart feststellen mit file
Bei der Vielzahl von Dateien kann es passieren, daß man nicht weis, was sich in einer Datei (engl. file) verbirgt.
Hier hilft der Befehl file:
file Dateiename(n)
Der Befehl versucht aufgrund der Anfangsdaten in der Datei herauszufinden, um welchen Inhalt es sich bei der angegebenen Datei oder den Dateien handelt.
Beispiele
/# file /etc
/etc: directory
/etc ist also ein Verzeichnis (engl. directory).
/# file /etc/passwd
/etc/passwd: ASCII text or data
Die Datei passwd ist eine ASCII-Datei.
/# file /etc/* | grep "link"
Hier werden alles aller Links im Verzeichnis /etc angezeigt.
/# file /bin/cat
/bin/cat: ELF executable
/bin/cat ist ein ausführbares Programm.
Um diese Übung zu beenden heben wir die mount-Zuordnung unserer Arbeitsdiskette auf.
/a# cd /
/# umount /a
/#
Robert.Warnke@giso.de (copyleft) Robert Warnke, Berlin (Germany) | http://rowa.giso.de
|