Wichtige SolarisBefehle

3

Wichtige Solaris-Befehle

An diesem Tag lernen Sie die wichtigsten und gebräuchlichsten Unix-Befehle kennen. Zuerst werden Befehle für die Arbeit mit Dateien und Verzeichnissen erläutert und anschließend einige Befehle, mit deren Hilfe Sie Informationen über das System erhalten. Anschließend lernen Sie, wie Sie nach Dateien oder in Dateien nach Suchmustern suchen. Am Schluss erfahren Sie noch etwas über den Unterschied zwischen symbolischen und Hard Links und wie Sie diese erzeugen.

3.1

Aufbau von Unix-Befehlen

Befehle unter Unix werden an der Eingabeaufforderung hinter dem Promptzeichen eingegeben und haben in der Regel den folgenden Aufbau: $ befehlsname [-Option(en)] [Argument(e)]

Nicht jeder Befehl kennt Optionen und Argumente und diese müssen bei den meisten Befehlen nicht unbedingt verwendet werden. Das Promptzeichen kann vom Benutzer seinen Anforderungen gemäß eingerichtet werden. Standardmäßig ist das Promptzeichen der Bourne- und KornShell ein Dollarzeichen $ (vgl. Tag 7). Unabhängig von der Shell wird dem Benutzer root aber das Hashzeichen # zugeordnet. Die einfachste Form eines Befehls besteht daher nur in der Eingabe des Befehlsnamens. Der nachfolgende Befehl gibt das aktuelle Verzeichnis aus, in dem Sie sich befinden: $ pwd

Ein Befehl, der in der Regel ein Argument verwendet, ist der Befehl cd zum Wechseln des Verzeichnisses. Im nachfolgenden Beispiel wird in das Verzeichnis /etc gewechselt: $ cd /etc

Der Befehl ls wird meist mit einer oder mehreren Optionen verwendet. Die Optionen beeinflussen die Ausgabe oder Verarbeitung des Befehls und können häufig aneinander gereiht eingegeben werden. Im nachfolgenden Beispiel wird der Inhalt eines Verzeichnisses ausführlich (-l = long) und einschließlich der versteckten Dateien (-a = all) aufgelistet: $ ls -al

Versteckte Dateien in Unix sind meist Konfigurationsdateien. Sie beginnen immer mit einem Punkt und werden normalerweise nicht angezeigt, wenn der Inhalt eines Verzeichnisses aufgelistet wird.

68

Namenskonventionen

Der Befehl ls kann sowohl mit Optionen als auch mit Argumenten verwendet werden. Das nachfolgende Beispiel bewirkt ein ausführliches Listing aller Dateien in den Verzeichnissen /etc und /sbin: $ ls -al /etc /sbin

Die Verzeichnisstruktur von Solaris wird an Tag 11 erläutert.

3.2

Namenskonventionen

Bei der Erzeugung von Dateien und Verzeichnissen sollten Sie daran denken, dass Unix Groß- und Kleinschreibung unterscheidet. Aus diesem Grund werden die Dateien /export/ home/her/bericht, /export/home/her/BERICHT, /export/home/her/Bericht, /export/home/ her/berICHT usw. als separate Dateien unter Unix betrachtet. Um Probleme mit anderen Betriebssystemen, die die Groß- und Kleinschreibung nicht unterscheiden, bzw. Verwirrung zu vermeiden, verwenden Sie am besten immer die Kleinschreibung. Ein Dateiname setzt sich unter Unix aus dem Pfadnamen und dem eigentlichen Dateinamen zusammen: /export/home/her/bericht

Der erste Schrägstrich steht dabei für das Verzeichnis /, während die anderen Schrägstriche Trennzeichen zwischen den einzelnen Verzeichnissen darstellen. Der eigentliche Dateiname in diesem Beispiel wäre bericht, der Pfadanteil /export/home/her. Sonderzeichen haben unter Unix oft eine spezielle Bedeutung und sollten daher vermieden werden. Die folgenden Zeichen . , _ können problemlos verwendet werden. Einen Bindestrich (-) sollten Sie nie am Anfang eines Dateinamens verwenden. Außerdem sollten Sie die deutschen Sonderzeichen, wie zum Beispiel die Umlaute ä, ö, ü und das Zeichen ß, sowie Leerzeichen in Dateinamen unbedingt vermeiden, da diese bei einem Unix-System zu Problemen führen können. Die Sonderzeichen werden an Tag 7 ausführlich erläutert.

69

Wichtige Solaris-Befehle

3.3

Hilfebefehle

Der Befehl man Mit dem Befehl man erhalten Sie eine Online-Hilfe, die so genannten Manual Pages. Dazu geben Sie zuerst den Befehl man und dann den Suchbegriff ein. Die Befehlssyntax sieht folgendermaßen aus: $ man [-Optionen] befehlsname

Wenn Sie Hilfe zu dem Befehl pwd suchen, geben Sie an der Befehlszeile man pwd ein. Sie erhalten folgende Ausgabe: $ man pwd Reformatting page. Please Wait... done User Commands NAME pwd - print working directory

pwd(1)

Die Navigation in den Manual Pages erfolgt über bestimmte Tasten, die bereits an Tag 1 beschrieben wurden. Sie entspricht der des Befehls more, der in Abschnitt 3.7 erläutert wird. Die Ausgabe der Manual Pages erfolgt gegliedert (vgl. Tag 1). Die Manual Pages sind in Sektionen aufgebaut. So enthält zum Beispiel die Sektion 1 Benutzerbefehle und die Sektion 4 verschiedene Dateiformate. Daher erhalten Sie mit dem Befehl $ man passwd

Informationen zum Befehl passwd, während der Befehl $ man -s4 passwd

Informationen über die Datei /etc/passwd ausgibt. Wenn Sie keine Sektionsnummer angeben, werden die Informationen der Sektion 1 ausgegeben.

Der Befehl apropos Wenn Sie den Namen eines Befehls nicht kennen, durchsuchen Sie die Online-Hilfe nach Stichwörtern. Dazu verwenden Sie entweder den Befehl apropos oder den Befehl man mit der Option -k, zum Beispiel: $ apropos edit

oder $ man -k edit

70

Systeminformationsbefehle

Sie erhalten folgende Ausgabe: align_equals textedit_filters (1) - filters provided with textedit 1) atobm bitmap (1) - bitmap editor and converter utilities for the X Windows System bitmap

Der Befehl whatis Wenn Sie nur eine Kurzhilfe möchten, dann verwenden Sie den Befehl whatis, zum Beispiel: $ whatis ls ls (1) - list contents of directory ls (1b) - list the contents of a directory

Die Stichwort- und Kurzhilfe funktionieren nur, wenn zuvor vom Systemadministrator mit dem Befehl catman -w eine entsprechende Indexdatei erzeugt wurde.

3.4

Systeminformationsbefehle

Es gibt eine Anzahl von einfachen Befehlen, mit denen Sie einige Informationen über das System und die darin angemeldeten Benutzer erhalten. Die gebräuchlichsten werden in diesem Abschnitt aufgeführt.

Der Befehl hostname Dieser Befehl gibt den Namen Ihres Rechners aus: $ hostname suso01

Der Befehl uname Mit Hilfe des Befehls uname erhalten Sie detailliertere Informationen über die Hardware und die Betriebssystemversion des Systems. Ohne Option wird nur der Name des Betriebssystems ausgegeben: $ uname SunOS

71

Wichtige Solaris-Befehle

Alle verfügbaren Optionen erhalten Sie mit der Option -a: $ uname -a SunOS suso01 5.8 Generic_108528-06 sun4u sparc SUNW,Sun-Blade-100

Die Ausgabe zeigt das Betriebssystem (SunOS), den Rechnernamen (suso01), die Releasenummer des Betriebssystems (5.8), die Betriebssystemversion (Generic), die Hardwarekategorie, den Prozessortyp und die Hardwarebezeichnung an. An Tag 1 wurde ausführlich erläutert, wie die Bezeichnungen und Releasenummern für das Betriebssystem SunOS zusammengesetzt sind.

Weitere mögliche Optionen des Befehls sind: Option

Bedeutung

-i

Nur Hardwarebezeichnung ausgeben.

-m

Nur Hardwarekategorie anzeigen.

-n

Nur Rechnernamen anzeigen.

-p

Nur Prozessortyp anzeigen.

-r

Nur Releasenummer anzeigen.

-s

Nur Betriebssystemname anzeigen.

-S hostname

Ändern des Hostnamens.

-v

Nur Versionsnummer des Betriebssystems anzeigen.

Tabelle 3.1: Optionen des Befehls uname

Der Befehl showrev Dieser Befehl gibt Informationen über die Soft- und Hardware aus. Wenn Sie keine Option verwenden, werden der Hostname und die HostID, die Releasenummer des Betriebssystems, die Hardwarekategorie und der Prozessortyp sowie die Kernelversionsnummer ausgegeben: $ showrev Hostname: suso2 Hostid: 83086231 Release: 5.8 Kernel architecture: sun4u Application architecture: sparc Hardware provider: Sun_Microsystems

72

Systeminformationsbefehle

Domain: Kernel version: SunOS 5.8 Generic 108528-06 December 2000

Der Befehl kennt auch mehrere Optionen: Option

Bedeutung

-a

Ausführliche Ausgabe.

-c befehl

Informationen zum angegebenen Befehl anzeigen.

-p

Nur Informationen über vorhandene Patches anzeigen.

-s hostname

Den Befehl auf einem anderen System ausführen.

-w

Nur Informationen zur OpenWindows-Version anzeigen.

Tabelle 3.2: Optionen des Befehls showrev

Ein Patch ist eine Ergänzung oder Ausbesserung zu einem Softwarepaket. Patches werden an Tag 13 ausführlich erläutert.

Die Option -s kann nur verwendet werden, wenn auf dem Zielrechner das Paket Solstice Adminsuite installiert wurde. Außerdem muss dort der Daemon admind aktiv sein. Wenn Sie die Option -c verwenden, um Informationen über einen Befehl bzw. ein Programm zu erhalten, zeigt sich folgende Ausgabe: $ showrev -c cp PATH is: /usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb PWD is: / LD_LIBRARY_PATH is not set in the current environment ________________________________________________________________ File: /usr/bin/cp ================= File type: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped Command version: SunOS 5.8 Generic February 2000 File mode: r-xr-xr-x User owning file: root Group owning file: bin Library information: libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Sun-Blade-100/lib/libc_psr.so.1 Sum: 48668 __________________________________________________________________

73

Wichtige Solaris-Befehle

In diesem Beispiel lassen Sie sich ausführliche Informationen zum installierten Befehl cp anzeigen. Dazu gehören die Zugriffs- und Besitzrechte, Bibliotheksverweise, die Befehlsversion, die Prüfsumme und der Dateityp. Beim Dateityp handelt es sich um ein ausführbares Programm für Sparc-Rechner, das im Format ELF als 32-Bit-Version vorliegt und dynamisch gelinkt ist.

Der Befehl date Dieser Befehl gibt das Datum und die Uhrzeit des Systems aus: $ date Sat Jul

7 16:05:36 MEST 2001

Das Ausgabeformat des Befehls hängt vom Wert der Variablen LANG ab. Shellvariablen werden an Tag 7 ausführlich erklärt.

Sie können das Ausgabeformat mit Hilfe der Option +format beeinflussen. Im nachfolgenden Beispiel wird das Datum im Format »zweistellige Tages- und Monats- und vierstellige Jahresangabe« ausgegeben: $ date +"%d.%m.%Y" 07.07.2001

Es gibt sehr viele verschiedene Ausgabeformate, die Sie mit Hilfe des Befehls man date nachschlagen können. Außerdem lässt sich mit diesem Befehl die Systemzeit umstellen. Dazu muss das Format mmddHHMM (zweistellige Monats-, Tages-, Stunden- und Minutenangabe) eingehalten werden. # date 07071605 Sat Jul 7 16:05:36 MEST 2001

Die Änderung der Systemzeit ist allein dem Benutzer root vorbehalten.

Der Befehl kennt folgende Optionen: Option

Bedeutung

-a sss.fff

Die Hardwareuhr beschleunigen oder verlangsamen (durch Voranstellen eines Minuszeichens), in Sekunden und Sekundenbruchteilen sss.fff.

-u

Das Datum in Greenwich Mean Time (GMT-Zeit) anzeigen oder setzen.

Tabelle 3.3: Optionen des Befehls date

74

Systeminformationsbefehle

Der Befehl cal Der Befehl gibt den aktuellen Monatskalender zurück: $ cal July 2001 S M Tu W Th F S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Als Optionen kennt der Befehl die Monats- und die Jahresangabe. So gibt zum Beispiel der Befehl $ cal 2 1999

den Monatskalender vom Februar 1999 aus. Wenn Sie als Option nur die Jahreszahl mitgeben, erhalten Sie einen Jahreskalender. So gibt zum Beispiel der Befehl $ cal 2001

den Jahreskalender für das Jahr 2001 aus. Der Kalender reicht von Januar im Jahre 1 bis Dezember im Jahre 9999 und berücksichtigt auch die Schaltjahre entsprechend. Auch die Kalenderregulierung im September 1752 ist enthalten. Wenn Sie als Option das Jahr 99 mitgeben, erhalten Sie daher eine andere Ausgabe als bei Verwendung der Option 1999.

Der Befehl id Dieser Befehl zeigt die Benutzeridentifikation an, das heißt den Namen und die Nummer des Benutzers: $ id uid=533(her) gid=102(buha)

Ein Benutzername kann als Argument des Befehls verwendet werden. Die Option -a gibt zusätzlich die sekundären Gruppen des Benutzers aus: $ id -a olli uid=541(olli) gid=107(entw) groups=107(entw),105(hw),102(buha)

75

Wichtige Solaris-Befehle

Der Befehl who Dieser Befehl zeigt an, welche Benutzer am System angemeldet sind: $ who root root root her

console pts/4 pts/5 pts/7

Jul Jul Jul Jul

7 15:25 7 15:25 7 16:22 7 15:39

(:0) (:0.0) (:0.0) (:0.0)

Die erste Spalte enthält den Benutzernamen und die zweite die Bezeichnung des Geräts, an dem sich der Benutzer angemeldet hat. Mögliche Geräte sind console (der physikalische Rechner), pts (das Pseudoterminal, zum Beispiel ein Terminalfenster der CDE) und term (ein physikalisch angeschlossenes Terminal). Die dritte und die vierte Spalte enthalten Datum und Uhrzeit der Anmeldung und die letzte Spalte zeigt an, ob sich ein Benutzer von einem Remote-System aus angemeldet hat. Der Befehl erhält seine Informationen aus der Datei /var/adm/utmpx.

Der Befehl kennt folgende Optionen: Option

Bedeutung

-a

Ausführliche Ausgabe.

-b

Die Bootzeit des Systems anzeigen.

-d

Nur die Prozesse anzeigen, die einmal vom Prozess init gestartet und inzwischen beendet sind.

-H

Spaltenüberschriften ausgeben.

-l

Die Leitungen und den Portmonitor anzeigen, an denen Anmeldungen erwartet werden.

-m

Nur Informationen des aktuellen Terminals ausgeben.

-p

Nur die Prozesse anzeigen, die aktiv sind und vom Prozess init wieder gestartet werden, falls sie beendet werden.

-q

Nur Anzeige der Namen; diese Option ignoriert alle anderen Optionen.

-r

Nur aktuellen Runlevel ausgeben.

-s

Standardausgabe, kann auch weggelassen werden.

Tabelle 3.4: Optionen des Befehls who

76

Systeminformationsbefehle

Option

Bedeutung

-t

Anzeigen, wann die Systemzeit zuletzt mit dem Befehl date geändert wurde.

-u

Anzeigen, wie lange an einem Terminal keine Eingabe mehr durch den Benutzer erfolgte und wie die PID der Anmeldeshell des Benutzers lautet.

Tabelle 3.4: Optionen des Befehls who (Forts.)

Die PID ist die Prozess-ID, also die Zahl, die ein Befehl während seiner Ausführung als Prozessnummer zugeordnet bekommt (vgl. Tag 9).

Mit folgendem Befehl erhalten Sie Ihren aktuellen Benutzernamen: $ who am i her pts/7

Jul 7

15:25

(:0.0)

Es gibt einen ähnlichen Befehl im Verzeichnis /usr/ucb: $ whoami her

Der Befehl whoami gibt den aktuellen Benutzernamen an, während der Befehl who am i den ursprünglichen Anmeldenamen zeigt. Daher kann es nach einem Wechsel der Benutzeridentität mit dem Befehl su zu unterschiedlichen Ausgaben kommen. Der Befehl su wird am 8. Tag ausführlich erläutert.

Der Befehl last Dieser Befehl zeigt an, welche Benutzer sich am System angemeldet bzw. abgemeldet haben und wann das System erneut gestartet wurde: $ last root root reboot root reboot root reboot root reboot root reboot root

console console system boot console system boot console system boot console system boot console system boot console

:0 :0 :0 :0 :0 :0 :0

Sat Sat Sat Sun Sun Sat Sat Tue Tue Tue Tue Sun

Jul Jul Jul Jul Jul Jun Jun Jun Jun Jun Jun Jun

7 7 7 1 1 30 30 26 26 26 26 17

15:25 15:24 15:23 12:06 11:24 17:59 17:58 19:05 19:04 18:54 18:39 14:03

still logged in - 15:24 (00:00) - 19:13

(07:07)

- 22:36

(04:36)

- 19:53

(00:47)

- 19:03

(00:09)

- down

(9+04:36)

77

Wichtige Solaris-Befehle

Die erste Spalte zeigt die Benutzernamen oder die Reboot-Information und die zweite wiederum die Bezeichnung des Geräts, an dem sich der Benutzer angemeldet hat. Die dritte Spalte enthält den Rechnernamen, von dem sich der jeweilige Benutzer angemeldet hat (0 steht für lokal). Die vierte und fünfte Spalte informieren über Datum und Uhrzeit der Anmeldung. Die letzte Spalte zeigt an, wie lange ein Benutzer angemeldet war. Der Befehl erhält seine Informationen aus der Datei /var/adm/wtmpx.

Mit dem Argument reboot werden nur die Zeiten der Systemstarts angezeigt: $ last reboot reboot system reboot system reboot system reboot system

boot boot boot boot

Sat Sun Sat Tue

Jul 7 15:23 Jul 1 11:24 Jun 30 17:58 Jun 26 19:04

Der Befehl kennt folgende Optionen: Option

Bedeutung

-a

Den Rechnernamen in der letzten Spalte anzeigen.

-f dateiname

Die Datei dateiname statt der Datei /var/adm/wtmpx verwenden.

-n nummer

Die Anzahl der angezeigten Einträge begrenzen.

Tabelle 3.5: Optionen des Befehls last

Der Befehl finger Der Befehl gibt Informationen zu einem Benutzer aus und kann für lokale und RemoteAbfragen von Benutzerkennungen verwendet werden. $ finger Login root her olli

Name Superuser Ute Hertzog Oliver Dorsch

TTY Idle console pts/3 pts/5 41

When Where Mon 15:25 (:0) Mon 16:23 (:0) Mon 13:45 (:0)

Die erste Spalte enthält den Benutzernamen, die zweite Spalte weitergehende Informationen zum Benutzer, die dem Kommentarfeld der Datei /etc/passwd entnommen werden. Die nächste Spalte informiert über das Gerät, an dem der Benutzer angemeldet ist. In der vierten Spalte steht die Zeit in Minuten, seit der der Benutzer keine Aktionen mehr durchgeführt hat. Die fünfte Spalte zeigt an, wann er sich angemeldet hat, und die letzte Spalte enthält den Namen des Systems, von dem aus der Benutzer sich angemeldet hat.

78

Systeminformationsbefehle

Die Ausgabe des Befehls kann über die Datei /etc/default/finger gesteuert werden. Zur Ausführung des Befehls muss der Daemon fingerd aktiv sein.

Es ist auch möglich, gezielt Informationen zu einzelnen Benutzerkonten abzurufen, indem der Benutzername als Argument verwendet wird: $ finger her Login name: her Directory: /export/home/her Shell: /bin/bash On since July 7 09:47:38 on pts/3 from :0 No unread mail No Plan.

Bei einem Benutzer eines Remote-Systems geben Sie den Benutzernamen gemeinsam mit dem Rechnernamen in folgender Form ein: benutzername@rechnername. Wenn Sie aus Sicherheitsgründen vermeiden möchten, dass der Befehl auf einem Rechner im Netz ausgeführt werden kann, dann müssen Sie in der Datei /etc/inetd.conf den Start des Daemons fingerd deaktivieren. Wenn der Benutzer in seinem Homeverzeichnis eine ASCII-Datei mit dem Namen .plan oder .project angelegt hat, wird der Inhalt dieser Datei auch angezeigt. Einige Optionen des Befehls sind: Option

Bedeutung

-b

Die Ausgabe des Homeverzeichnisses und der Shell des Benutzers unterdrücken.

-f

Die Ausgabe der Überschriftszeile unterdrücken.

-h

Die Ausgabe der Datei .project unterdrücken.

-p

Die Ausgabe der Datei .plan unterdrücken.

-s

Kurzausgabe.

-w

Die Ausgabe des ausführlichen Namens unterdrücken.

Tabelle 3.6: Optionen des Befehls finger

Der Befehl tty Dieser Befehl gibt den Terminal- bzw. Leitungsnamen des angeschlossenen Terminals aus. $ tty /dev/pts/3

79

Wichtige Solaris-Befehle

3.5

Befehle für die Verzeichnisverwaltung

Der Befehl mkdir Mit diesem Befehl erzeugen Sie neue Verzeichnisse: $ mkdir /project

Mit Hilfe der Option -m können Sie dem neu angelegten Verzeichnis die gewünschten Zugriffsrechte zuweisen. Zugriffsrechte steuern, wer welche Befehle mit einer Datei oder einem Verzeichnis durchführen darf. Sie werden an Tag 6 ausführlich behandelt.

Die Option -p ermöglicht es Ihnen, Verzeichnisse rekursiv zu erzeugen: $ mkdir -p /project/kunde1/auftrag200 /project/kunde1/auftrag300

Mit diesem Befehl werden sowohl die Unterverzeichnisse auftrag200 und auftrag300 als auch das Verzeichnis kunde1 angelegt. Ein neu angelegtes Verzeichnis hat immer automatisch zwei Unterverzeichnisse: die Verzeichnisse . (das für das aktuelle Verzeichnis steht) und .. (das für das übergeordnete Verzeichnis steht).

Der Befehl rmdir Mit diesem Befehl können Sie ein leeres Verzeichnis löschen: $ rmdir /project

Ist das Verzeichnis nicht leer, wird der Befehl nicht ausgeführt und Sie erhalten eine entsprechende Fehlermeldung: rmdir: directory "/project": Directory not empty

Verzeichnisse, die nicht leer sind, können Sie mit dem Befehl rm löschen (vgl. Abschnitt 3.6).

80

Befehle für die Verzeichnisverwaltung

Der Befehl ls Dieser Befehl listet den Inhalt von Verzeichnissen auf. Wenn Sie kein Argument verwenden, wird der Inhalt des aktuellen Verzeichnisses angezeigt: $ ls -l total 8 -rw-r-----rw-r--r--rw-r--r-drwxr-xr-x

1 1 1 2

root root root root

other other other other

146 65 63 512

Jul 8 11:28 bericht Jul 7 20:27 obst Jul 8 11:29 obst1 Jul 8 11:28 schulung

Die Option -l bewirkt ein ausführliches Auflisten des Verzeichnisinhalts mit folgenden Informationen: 쐽

Das erste Zeichen der ersten Spalte gibt den Dateityp aus: 왘

- bedeutet, dass es sich um eine normale Datei handelt: entweder eine ASCIITextdatei, eine Applikationsdatei oder eine binäre Datei.



d bedeutet, dass es sich um ein Verzeichnis handelt.



l bedeutet, dass es sich um einen symbolischen Link handelt (vgl. Abschnitt 3.9).



b bedeutet, dass es sich um eine blockorientierte Gerätedatei handelt.



c bedeutet, dass es sich um eine zeichenorientierte Gerätedatei handelt.



p bedeutet, dass es sich um eine spezielle Named Pipe-Datei (FIFO) der Interprozesskommunikation handelt.



s bedeutet, dass es sich um eine Socket-Datei für die Prozesse handelt.



D bedeutet, dass es sich um eine Door-Datei (Verweisdatei) für die Kommunikation handelt.

Block- und zeichenorientierte Gerätedateien werden an Tag 11 ausführlich beschrieben. Dateien zur Interprozesskommunikation werden an Tag 9 behandelt. 쐽

Der restliche Teil der ersten Spalte enthält die Zugriffsberechtigungen. Diese werden an Tag 6 ausführlich behandelt.



Die dritte Spalte enthält den so genannten Link Counter. Dieser gibt bei Dateien die Anzahl der Hard Links (vgl. Abschnitt 3.9) und bei Verzeichnissen die Anzahl der Unterverzeichnisse zurück.



Die vierte Spalte enthält den Besitzer der Datei.



Die fünfte Spalte gibt die Gruppe an, die Rechte an der Datei hat.

81

Wichtige Solaris-Befehle



Die sechste Spalte enthält die Dateigröße in Bytes. Eine Datei belegt immer mindestens zwei Blöcke zu 512 Byte auf der Festplatte, auch wenn ihre tatsächlich angezeigte Größe kleiner ist, wie zum Beispiel bei der Datei obst. Die erste Ausgabe total 8 des Befehls ls -l zeigt die Anzahl der durch den Verzeichnisinhalt belegten Festplattenblöcke (zu 512 Byte) an (vgl. Tag 10). Gerätedateien zeigen statt einer Größe in Byte zwei Zahlen an: die Major und Minor Device Number (vgl. Tag 10).



Die nächsten Spalten beinhalten das Datum und die Uhrzeit der Erstellung bzw. der letzten Änderung der Datei oder des Verzeichnisses. Wenn die Datei älter als ein halbes Jahr ist, wird statt der Uhrzeit die Jahreszahl ausgegeben.



Die letzte Spalte enthält den Namen der Datei oder des Verzeichnisses. Unter Unix wird alles als Datei betrachtet. Verzeichnisse, Gerätedateien, symbolische Links sind nur Sonderformen von Dateien. Selbst Prozesse werden im Verzeichnis /proc als Verzeichnisse oder Dateien verwaltet (vgl. Tag 9).

Weitere wichtige Optionen des Befehls ls sind: Option

Bedeutung

-a

Auch versteckte (mit einem Punkt beginnende) Dateien anzeigen.

-C

Mehrspaltige Ausgabe.

-c

Letzte Veränderung des Inode-Eintrags anzeigen (gemeinsam mit Option l).

-d

Ausgabe des Inhalts von Unterverzeichnissen unterdrücken.

-F

Kennung für den Dateityp hinter dem Dateinamen ausgeben: / steht für Verzeichnis, * für ausführbare Dateien, @ für symbolische Links, | für Pipe-Dateien, > für Door-Dateien und = für Socket-Dateien.

-i

Inode-Nummer anzeigen.

-R

Den Inhalt von Unterverzeichnissen rekursiv anzeigen.

-t

Sortierreihenfolge verändern: nicht alphabetisch sortieren, sondern nach Änderungsdatum.

-u

Datum des letzten Zugriffs auf die Datei anzeigen, statt des Änderungsdatums (gemeinsam mit Option l).

Tabelle 3.7: Optionen des Befehls ls

82

Befehle für die Datei- und Verzeichnisverwaltung

Ein Inode enthält sämtliche Informationen zu einer Datei oder einem Verzeichnis. Inodes werden an Tag 10 ausführlich erläutert.

Der Befehl cd Mit diesem Befehl können Sie in ein anderes Verzeichnis wechseln. Im nachfolgenden Beispiel wird in das Verzeichnis /etc gewechselt: $ cd /etc

Wenn Sie den Befehl ohne Argument verwenden, wechseln Sie in Ihr Homeverzeichnis. Wenn Sie als root angemeldet sind, wechseln Sie in das Verzeichnis /. Mit dem Befehl $ cd ..

wechseln Sie in das darüber liegende Verzeichnis. Sie können als Argument des Befehls entweder einen relativen oder einen absoluten Pfadnamen verwenden. Der relative Pfadname geht von dem Verzeichnis aus, in dem Sie sich im Moment befinden. Im nachfolgenden Beispiel wechseln Sie mit einer relativen Pfadangabe vom Verzeichnis /export/home/her/berichte in das Verzeichnis /export/home/her/ grafik: $ cd ../grafik

Alternativ können Sie auch mit der absoluten Pfadangabe in das Verzeichnis wechseln, wobei der absolute Pfad in diesem Fall mehr Schreibaufwand erfordert: $ cd /export/home/her/grafik

Der absolute Pfad beginnt immer ab dem Wurzelverzeichnis / und ist völlig unabhängig von der aktuellen Position im Verzeichnisbaum. Ein absoluter Pfad beginnt immer, ein relativer Pfad niemals mit dem Schrägstrich /, der für das Wurzelverzeichnis root steht.

3.6

Befehle für die Datei- und Verzeichnisverwaltung

Die nachfolgenden Befehle können sowohl für Dateien als auch für Verzeichnisse verwendet werden.

83

Wichtige Solaris-Befehle

Der Befehl rm Mit diesem Befehl löschen Sie Dateien oder Verzeichnisse. Im folgenden Beispiel werden mehrere Dateien mit diesem Befehl gelöscht: $ rm prot1 prot2 prot3

Der Befehl löscht die Dateien normalerweise sofort ohne Rückfrage. Unter Solaris ist es nicht möglich, einen Löschvorgang wieder rückgängig zu machen. In diesem Fall könnten Sie nur noch auf die letzte Datensicherung zurückgreifen (vgl. Tag 14). Sie können den Befehl auch interaktiv starten, dann werden Sie vor dem Löschen noch einmal gefragt, ob Sie sicher sind: $ rm -i prot2000 rm: remove prot2000 (yes/no)? y

Mit diesem Befehl lassen sich auch Verzeichnisse löschen, die nicht leer sind. Dazu verwenden Sie die Option -r: $ rm -r bericht

Der gefährlichste Unix-Befehl überhaupt ist der Befehl rm -rf *, denn er löscht rekursiv alles ab der Stelle im Verzeichnisbaum, an der Sie sich gerade befinden. Die Option -f bedeutet, dass auch schreibgeschützte Dateien ohne zusätzliche Bestätigung gelöscht werden sollen. Bevor Sie einen solchen Befehl absetzen, sollten Sie zumindest zuvor mit dem Befehl pwd überprüfen, in welchem Verzeichnis Sie sich befinden.

Der Befehl cp Mit diesem Befehl kopieren Sie Dateien und Verzeichnisse. Im nachfolgenden Beispiel wird die Datei prot1 auf die Datei prot1000 kopiert: $ cp prot1 prot1000

Der Befehl überschreibt die Datei prot1000, wenn sie bereits existiert.

Die Option -p kopiert auch die Zugriffsrechte und den Besitzer usw. über die Informationsdaten einer bereits bestehenden Datei.

84

Befehle für die Datei- und Verzeichnisverwaltung

Normalerweise werden die Informationsdaten beim Kopieren entsprechend dem kopierenden Benutzer gesetzt. Das heißt, er wird der Besitzer, seine primäre Gruppe (vgl. Tag 8) erhält Gruppenbesitz und das Erstellungsdatum ist das aktuelle Datum. Sie können den Befehl auch interaktiv starten, dann werden Sie vor dem Überschreiben noch einmal gefragt, ob Sie sicher sind: $ cp -i prot1 prot1000 rm: overwrite prot1000 (yes/no)? y

Der Befehl wird auch dazu verwendet, ganze Verzeichnisbäume zu kopieren. Dazu verwenden Sie die Option -r: $ cp -r bericht bericht2001

Ist das Verzeichnis bereits vorhanden, wird das Verzeichnis bericht unterhalb des Verzeichnisses bericht2001 angelegt. Ansonsten wird das Verzeichnis bericht2001 mit dem Inhalt des Verzeichnisses bericht erzeugt. Sie können auch mehrere Dateien in ein Verzeichnis kopieren: $ cp prot1 prot1000 bericht2001

In diesem Fall muss das Verzeichnis bericht2001 bereits existieren. Es ist allerdings nicht möglich, mehrere Dateien in eine Datei zu kopieren. Dazu sollten Sie den Befehl cat verwenden (vgl. Abschnitt 3.7).

Der Befehl mv Mit diesem Befehl können Sie Dateien und Verzeichnisse umbenennen und/oder verschieben. Im nachfolgenden Beispiel wird eine Datei umbenannt: $ mv prot1 prot1111

Der Befehl überschreibt die Datei prot1111, wenn sie bereits existiert.

Sie können den Befehl auch interaktiv starten. Dann werden Sie vor dem Überschreiben noch einmal gefragt, ob Sie sicher sind: $ mv -i prot1 prot1111 rm: overwrite prot1111 (yes/no)? y

85

Wichtige Solaris-Befehle

Sie können den Befehl auch verwenden, um eine Datei oder ein Verzeichnis zu verschieben: $ mv prot1111 bericht

Hier wurde die Datei prot1111 in das Verzeichnis bericht verschoben. Mit Hilfe dieses Befehls lassen sich auch ganze Verzeichnisbäume umbenennen: $ mv bericht protokolle

Es ist auch möglich, gleichzeitig zu verschieben und umzubenennen: $ mv protokolle/prot1111 prot1

Die Datei prot1111 im Verzeichnis protokolle wird ins aktuelle Verzeichnis verschoben und wieder prot1 genannt.

3.7

Befehle für die Dateiverwaltung

Dateien anzeigen und bearbeiten Der Befehl cat Mit diesem Befehl können Sie sich den Inhalt von kleinen Dateien anzeigen lassen. Zur Anzeige von großen Dateien ist er nicht geeignet, da der Befehl die Datei komplett bis zum Ende ausgibt: $ cat prot1000

Eine wichtige Einsatzmöglichkeit des Befehls ist das Aneinanderketten von Dateien: $ cat prot1 prot2 prot3 > protgesamt

Hier werden die Dateien prot1, prot2 und prot3 auf die Datei protgesamt kopiert.

Der Befehl more Dieser Befehl listet den Inhalt von Dateien bildschirmweise auf: $ more prot1000 Protokoll der Besprechung vom 4.7.2001 Anwesende: ..... ---More---(15%)

86

Befehle für die Dateiverwaltung

Sie haben die Möglichkeit, den Befehl mit Hilfe von internen Befehlen zu steuern. Die Tabelle führt die wichtigsten internen Befehle auf: Eingabe

Funktion

(____)

Eine Bildschirmseite weiterblättern.

(b)

Eine Bildschirmseite zurückblättern.

(¢)

Eine Zeile weiterblättern.

(?) oder (h)

Hilfe anzeigen.

(q)

Den Befehl beenden.

seitenzahl

Anzahl von Seiten (seitenzahl) weiterblättern.

/suchbegriff

Nach Suchbegriff suchen und die dazugehörige Seite anzeigen.

Tabelle 3.8: Interne Befehle des Befehls more

Ab Solaris 9 können Sie statt des Befehls more auch die Befehle less oder pg verwenden, die ebenfalls bildschirmweise blättern, sich allerdings bezüglich ihrer internen Befehle etwas unterscheiden.

Der Befehl head Dieser Befehl gibt standardmäßig die ersten zehn Zeilen einer Datei aus. Sie können die Anzahl der auszugebenden Zeilen steuern, indem Sie diese als Option eingeben. Hier werden die ersten zwölf Zeilen ausgegeben: $ head -12 prot1000

Der Befehl tail Dieser Befehl gibt standardmäßig die letzten zehn Zeilen einer Datei aus. Sie können die Anzahl der auszugebenden Zeilen steuern, indem Sie diese als Option eingeben. Hier werden die letzten sieben Zeilen ausgegeben: $ tail -7 prot1000

Mit Hilfe der Option -f lassen sich Protokolldateien, deren neue Einträge am Ende eingefügt werden, sehr gut überwachen. Der Befehl endet mit dieser Option nicht am Dateiende, sondern wartet auf weitere angehängte Zeilen, die er dann anzeigt.

87

Wichtige Solaris-Befehle

Der Befehl vi Dieser Befehl ist ein sehr mächtiger Texteditor. Er steht auf jedem Unix-System zur Verfügung. An dieser Stelle sollen nur kurz die wichtigsten Funktionen des vi erläutert werden, da eine ausführliche Erklärung den Umfang des Buchs sprengen würde. Natürlich gibt es unzählige Texteditoren unter Unix, wie zum Beispiel emacs, joe elvis oder den CDE-Editor dtpad. Allerdings stehen diese in der Regel auf alten Solaris-Systemen oder im Single-User-Modus nicht zur Verfügung. Der Texteditor vi kennt drei Betriebsmodi: 쐽

Befehlsmodus



Eingabemodus



Befehlszeilenmodus Befehlsmodus : / ?

i a o Return

Escape

Befehlszeilenmodus

Eingabemodus

Abbildung 3.1: Die Betriebsmodi des vi

Der Befehl wird folgendermaßen gestartet: $ vi protokoll_mai

Wenn Sie beim Aufruf keinen Dateinamen angeben, müssen Sie der neu angelegten Datei vor dem Speichern einen Namen zuweisen.

Standardmäßig befinden Sie sich jetzt im Befehlsmodus. Mit den nachfolgenden Befehlen wechseln Sie in den Eingabemodus und können dann Text erfassen. Wenn Sie die Taste (Esc) drücken, gelangen Sie wieder in den Befehlsmodus.

88

Befehle für die Dateiverwaltung

Die wichtigsten Befehle zum Hinzufügen von Text sind: Befehl

Funktion

a

Hinter dem Cursor einfügen.

A

Am Zeilenende einfügen.

i

Vor dem Cursor einfügen.

I

Am Zeilenanfang einfügen.

Tabelle 3.9: Befehle, um Text hinzuzufügen

Die wichtigsten Befehle zum Löschen von Text sind: Befehl

Funktion

x

Lösche ein Zeichen (fünf Zeichen löschen: 5x).

dw

Lösche ein Wort.

dd

Lösche eine Zeile (12 Zeilen löschen: 12dd).

D

Lösche bis zum Zeilenende.

d0

Lösche bis zum Zeilenanfang.

dG

Lösche bis zum Dateiende.

Tabelle 3.10: Befehle, um Text zu löschen

Die wichtigsten Befehle zum Bewegen im Text sind: Befehl

Funktion

j

Den Cursor nach unten bewegen.

k

Den Cursor nach oben bewegen.

h

Den Cursor nach links bewegen.

l

Den Cursor nach rechts bewegen.

0

An den Zeilenanfang bewegen.

Tabelle 3.11: Befehle, um sich im Text zu bewegen

89

Wichtige Solaris-Befehle

Befehl

Funktion

$

Ans Zeilenende bewegen.

G

Sich ans Dateiende bewegen.

w

Ein Wort vorwärts gehen.

b

Ein Wort zurück gehen.

Tabelle 3.11: Befehle, um sich im Text zu bewegen (Forts.)

Die wichtigsten Befehle, um Text zu kopieren und einzufügen, sind: Befehl

Funktion

Y

In einen Textpuffer schreiben.

3Y

Drei Zeilen in den Puffer schreiben.

p

Unterhalb des Cursors einfügen.

P

Oberhalb des Cursors einfügen.

O

Eine Zeile oberhalb des Cursors einfügen.

o

Eine Zeile unterhalb des Cursors einfügen.

Tabelle 3.12: Befehle, um Text zu kopieren und einzufügen

Die wichtigsten Befehle zum Ändern und Suchen von Text: Befehl

Funktion

cw

Ein Wort ändern.

4cw

Vier Worte ändern.

C

Eine Zeile ändern.

r

Ein Zeichen ersetzen.

R

Eine Zeile überschreiben.

u

Letzte Änderung rückgängig machen.

.

Letzte Änderung wiederholen.

Tabelle 3.13: Befehle, um Text zu ändern und zu suchen

90

Befehle für die Dateiverwaltung

Befehl

Funktion

n

Letzte Suche wiederholen.

N

Letzte Suche in umgekehrter Richtung wiederholen.

/ausdruck

Vorwärts nach ausdruck suchen.

?ausdruck

Rückwärts nach ausdruck suchen.

Tabelle 3.13: Befehle, um Text zu ändern und zu suchen (Forts.)

Die wichtigsten Befehle, um Text zu speichern und zu laden, sind: Befehl

Funktion

:w

Speichern.

:w datei

Speichern unter dem Namen datei.

:w! datei

Speichern unter dem Namen datei erzwingen.

:wq

Speichern und beenden (entspricht der Eingabe ZZ)

:q

Beenden, ohne zu speichern.

:q!

Beenden, ohne zu speichern, erzwingen.

:e!

Aktuelle Datei neu laden.

:e datei

Die Datei datei zum Editieren laden.

Tabelle 3.14: Befehle, um Text zu speichern und zu laden

Sehr viele Einstellungen können die Arbeit mit dem vi erleichtern: Befehl

Funktion

:set nu

Zeilennummern anzeigen.

:set nonu

Keine Zeilennummern anzeigen.

:set all

Alle Einstellungen anzeigen.

:set list

Unsichtbare Zeichen anzeigen.

:set tabstop=4 Die Tabulatorweite auf vier Zeichen setzen.

Tabelle 3.15: Die wichtigsten Einstellungen des vi

91

Wichtige Solaris-Befehle

Befehl

Funktion

:set wm=7

Die Zeilen um sieben Leerzeichen vom rechten Rand einrücken.

:set autoindent

Automatische Einrückung aktivieren.

Tabelle 3.15: Die wichtigsten Einstellungen des vi (Forts.)

Um die Einstellungen dauerhaft zu erhalten, müssen diese im Homeverzeichnis in eine Datei mit der Bezeichnung .exrc eingegeben werden. Diese Datei wird beim Aufruf des vi gelesen, sofern sie vorhanden ist.

Mit Dateien arbeiten Der Befehl touch Mit diesem Befehl können neue leere Dateien erzeugt oder das letzte Änderungs- oder Zugriffsdatum von bestehenden Dateien geändert werden. Unter Solaris werden sowohl das Erstellungs- bzw. das letzte Änderungsdatum als auch das Zugriffsdatum mitprotokolliert. Das Erstellungs- bzw. letzte Änderungsdatum erhalten Sie mit dem Befehl ls -l, während der Befehl ls -lu das letzte Zugriffsdatum ausgibt. Das Zugriffsdatum wird geändert, wenn auf eine Datei oder ein Verzeichnis zugegriffen wurde, ohne dass eine Änderung erfolgte. Das ist zum Beispiel der Fall, wenn eine Datei mit dem Befehl more angezeigt wird. Das nachfolgende Beispiel zeigt, wie das Änderungsdatum einer Datei manipuliert wird: $ touch -m 03030101 prot1000 $ ls -l prot1000 -rw-r--r-1 root other

65

Mar

Das Datum wird in folgender Form eingegeben: [[CC]YY]MMDDhhmm [.SS]

Die Zeiteinheiten haben folgende Bedeutung: 쐽

C = Jahrhundert



Y = Jahr



M = Monat

92

3

01:01

prot1000

Befehle für die Dateiverwaltung



D = Tag



h = Stunde



m = Minute



S = Sekunde

Der Befehl kennt folgende Optionen: Option

Bedeutung

-a

Änderung des Datums des letzten Zugriffs.

-c

Änderung nur bei bereits vorhandenen Dateien.

-m

Änderung des Datums der letzten Änderung.

-r

Änderung des Datums mit Hilfe einer Referenzdatei.

-t

Angabe des Änderungszeitpunkts.

Tabelle 3.16: Optionen des Befehls touch

Der Befehl which Dieser Befehl zeigt an, in welchem Pfad sich ein Befehl befindet: $ which ls /usr/bin/ls

Zur Suche wird die Variable PATH verwendet. Variablen werden in Tag 7 ausführlich behandelt.

Der Befehl erkennt auch definierte Aliase (vgl. Tag 7): $ which ll ll: aliased to ls -al

Wenn sich ein Befehl nicht in einem der Pfade befindet, die in der Variablen PATH enthalten sind, erhalten Sie eine entsprechende Meldung: $ no lx in /usr/sbin

/usr/bin

/usr/dt/bin usr/openwin/bin

93

Wichtige Solaris-Befehle

Der Befehl file Dieser Befehl versucht, den Typ einer Datei zu ermitteln, indem der oberste Teil einer Datei ausgewertet wird. $ file * poem: gedicht: sammlung: testdatei: prot10: prog99: stripped

English text ascii text directory empty file symbolic link ELF 32-bit MSB executable SPARC Version 1, statically linked,

Das Ergebnis des Befehls stimmt nicht immer, da nur ein Teil der Datei ausgewertet wird.

Die Informationen zur Auswertungen der Dateien sind in der Datei /etc/magic hinterlegt.

Der Befehl kennt folgende Optionen: Option

Bedeutung

-c

Überprüfung der Datei magic auf Konsistenz.

-m

Verwendung einer anderen Datei als die Datei magic.

Tabelle 3.17: Optionen des Befehls file

Der Befehl wc Dieser Befehl zählt Zeilen, Worte, Zeichen und Bytes in einer Datei: $ wc prot1000 17 39

108

prot1000

In dieser Ausgabe werden die Zeilen, Worte und Bytes für die Datei prot1000 angezeigt.

94

Befehle für die Dateiverwaltung

Der Befehl kennt folgende Optionen: Option

Bedeutung

-c

Anzahl der Bytes ausgeben.

-l

Anzahl der Zeilen ausgeben.

-m

Anzahl der Zeichen ausgeben.

-w

Anzahl der Worte ausgeben.

Tabelle 3.18: Optionen des Befehls wc

Der Befehl diff Dieser Befehl vergleicht den Inhalt von zwei Dateien und gibt alle unterschiedlichen Zeilen aus: $ diff obst obst1 3a4 > pfirsich 7d7 < mandarinen

Zuerst wird die Nummer der abweichenden Zeilen und dann deren Inhalt angezeigt. In diesem Beispiel weicht die vierte Zeile der zweiten Datei mit dem Eintrag pfirsich von der ersten Datei ab und die erste Datei hat in der siebten Zeile den abweichenden Eintrag mandarinen.

Der Befehl cmp Dieser Befehl vergleicht zwei Dateien und bricht an der ersten Stelle ab, an der sich diese unterscheiden. $ cmp obst obst1 obst obst1 differ: char 21, line 4

Mit der Option -l werden auch die Stelle, an der sich die Dateien unterscheiden, und die unterschiedlichen Zeichen im Oktalformat ausgegeben.

Der Befehl od Der Befehl od konvertiert Daten in andere Darstellungsformen, zum Beispiel in die hexadezimale Darstellung:

95

Wichtige Solaris-Befehle

$ od -t cx1 0000000 f 66 0000020 r 72 0000040 \n 0a 0000060 n 6e 0000100 \n 0a 0000101

obst

e 65 n 6e t 74 e 65

i g 69 67 e \n 65 0a r a 72 61 n \n 6e 0a

e \n 65 0a m e 6d 65 u b 75 62 k i 6b 69

z 7a l 6c e 65 w 77

i t r o 69 74 72 6f o n e \n 6f 6e 65 0a n \n m a 6e 0a 6d 61 i s \n m 69 73 0a 6d

n 6e a 61 n 6e a 61

e \n 65 0a p f 70 66 d a 64 61 n g 6e 67

b 62 e 65 r 72 o 6f

i 69 l 6c i 69 \n 0a

Die Option -t kennt folgende Einstellungen: 쐽

c = normales Zeichen oder a = named character



f = Fließkommazahl



d = Dezimalzahl mit Vorzeichen oder u = Dezimalzahl ohne Vorzeichen



o = Oktalzahl oder x = Hexadezimalzahl

Zuletzt kann noch die Anzahl Bytes angegeben werden, aus denen sich die einzelnen Komponenten zusammensetzen.

3.8

Suchbefehle

Der Befehl find Mit Hilfe dieses Befehls können Sie eine Datei im Verzeichnisbaum suchen, wobei sich bestimmte Suchkriterien festlegen lassen. Der Befehl führt eine rekursive Suche durch und gibt die gefundenen Dateien am Bildschirm aus. Die Befehlssyntax lautet: $ find suchpfad -suchkriterium/en [aktion(en)]

Der Suchpfad kann ein relativer oder absoluter Pfad sein, die Suchkriterien sollen die Suche eingrenzen und die Aktionen werden mit den gefundenen Dateien ausgeführt. Wenn Sie die Suche im Verzeichnis / starten, dauert sie möglicherweise recht lang, da sie im Wurzelverzeichnis beginnt und sämtliche Verzeichnisse durchsucht. Ein solcher Befehl kann auch die Systemleistung stark in Anspruch nehmen.

96

Suchbefehle

Die Suchkriterien sind normalerweise über eine UND-Verknüpfung miteinander verbunden. Wenn Sie eine ODER-Verknüpfung verwenden möchten, dann geben Sie die Option -o zwischen den beiden Suchkriterien ein, die Sie mit ODER verbinden möchten. Im nachfolgenden Beispiel wird im Homeverzeichnis und in den darunter liegenden Verzeichnissen nach einer Datei mit dem Namen fa.txt gesucht und die gesuchte Datei in Langform ausgegeben: $ find ~ -name fa.txt -ls 661149 1 -rw-r—r-- 1 behoerden/text/fa.txt

her

buha

189

Jul

5

15:34

/export/home/her/

Das Zeichen ~ ist ein Platzhalter für das Homeverzeichnis (vgl. Tag 7).

Es gibt eine ganze Reihe von Suchkriterien, die verwendet werden können: Suchkriterium

Bedeutung

-name datei

Nach einem bestimmten Dateinamen suchen.

-type typ

Nach einem bestimmten Dateityp suchen; möglich ist: f für eine normale Datei, d für ein Verzeichnis, l für einen symbolischen Link, c für eine zeichen- und b für eine blockorientierte Gerätedatei, p für eine Named PipeDatei und s für eine Socket-Datei.

-user benutzer

Nach einem bestimmten Benutzer suchen.

-nouser

Nach Dateien ohne Benutzer suchen.

-group gruppe

Nach einer bestimmten Gruppe suchen.

-nogroup

Nach Dateien ohne Gruppe suchen.

-perm rechte

Nach bestimmten Berechtigungen suchen.

-size [+/-]i

Nach einer bestimmten Größe suchen. i steht für einen 512-Byte-Block. Bei Verwendung des Pluszeichens wird nach Dateien gesucht, die größer sind, bei einem Minuszeichen nach Dateien, die kleiner sind. Ohne Minus- oder Pluszeichen wird nach Dateien gesucht, die genau i Blöcke groß sind. Soll nach einer Größe in Byte gesucht werden, muss hinter der Größe ein c für die Byte-Angabe stehen.

Tabelle 3.19: Die wichtigsten Suchkriterien des Befehls find

97

Wichtige Solaris-Befehle

Suchkriterium

Bedeutung

-atime [+/-]i

Nach einem bestimmten Zugriffsdatum in i Tagen suchen. Bei Verwendung des Pluszeichens wird nach Dateien gesucht, auf die vor mehr als i zuletzt zugegriffen wurde, bei einem Minuszeichen nach Dateien, auf die vor weniger als i Tagen zuletzt zugegriffen wurde. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, auf die zuletzt vor genau i Tagen zugegriffen wurde.

-mtime [+/-]i

Nach einem bestimmten Änderungsdatum in i Tagen suchen. Mit einem Pluszeichen wird nach Dateien gesucht, die vor mehr als i zuletzt geändert wurden, mit einem Minuszeichen nach Dateien, die vor weniger als i Tagen zuletzt geändert wurden. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, die zuletzt vor genau i Tagen geändert wurden.

-ctime [+/-]i

Nach einem bestimmten Erstellungsdatum in i Tagen suchen. Wenn das Pluszeichen verwendet wird, wird nach Dateien gesucht, die vor mehr als i erstellt wurden, bei einem Minuszeichen nach Dateien, die vor weniger als i Tagen erstellt wurden. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, die vor genau i Tagen erstellt wurden.

-newer datei

Nach Dateien suchen, die neuer sind als die angegebene Datei.

-inum inodenr

Nach bestimmten Inode-Nummern suchen.

-mount

Nur im angegebenen Dateisystem suchen.

-depth

Zuerst in den Unterverzeichnissen suchen.

-follow

Den symbolischen Links folgen.

-fstype typ

Nur in bestimmten Dateisystemtypen suchen.

-links i

Nur nach Dateien mit einer Anzahl i von Links suchen.

Tabelle 3.19: Die wichtigsten Suchkriterien des Befehls find (Forts.)

Die Aktionen des Befehls sind: Aktion

Bedeutung

-print

Die gefundenen Dateien ausgeben. Dies ist die standardmäßige Aktion, die nicht unbedingt eingegeben werden muss.

-ls

Die gefundenen Dateien in Langform ausgeben.

Tabelle 3.20: Die Aktionen des Befehls find

98

Suchbefehle

Aktion

Bedeutung

-exec befehl {} \;

Den angegebenen Befehl für jede gefundene Datei ausführen. Dabei wird jeder gefundene Dateiname in die geschweiften Klammern übergeben. Wenn Sie einen Befehl zum Löschen der gefundenen Dateien verwenden, werden Ihnen die Dateien nicht mehr angezeigt, sondern sofort gelöscht, wenn sie mit den Suchkriterien übereinstimmen!

-ok befehl {} \;

Den angegebenen Befehl für jede gefundene Datei ausführen. Sie werden allerdings bei bestimmten Befehlen, wie zum Beispiel dem Löschen, gefragt, ob Sie die jeweils gefundene Datei wirklich löschen wollen.

Tabelle 3.20: Die Aktionen des Befehls find (Forts.)

Im nachfolgenden Beispiel wird ab dem aktuellen Verzeichnis nach allen normalen Dateien der Benutzer her und olli gesucht, die zuletzt vor weniger als sieben Tagen geändert wurden. Anschließend werden diese ausgegeben: $ find . \( -user her -o -user olli \) -type f -mtime -7 -print /export/home/her/brief-lg.txt /export/home/her/mond.jpg /export/home/olli/dokument1

Bei mehreren Auswahlkriterien, die mit der Option -o verknüpft werden, müssen die umgebenden Klammern mit Hilfe des Backslash maskiert werden (vgl. Tag 7). Im nachfolgenden Beispiel wird ab dem Wurzelverzeichnis nach Dateien mit dem Namen core gesucht und die gefundenen Dateien werden sofort ohne Rückfrage gelöscht: $ find / -name core -exec rm {} \;

Der Befehl grep Dieser Befehl durchsucht Dateien nach Suchmustern. Im Gegensatz zum Befehl find kann er nicht rekursiv suchen. Die Syntax des Befehls lautet: $ grep [-Option(en)] suchmuster datei(en)

Im folgenden Beispiel wird nach dem Suchmuster Vielfalt in der Datei prot1000 gesucht. Die gefundene Zeile wird mit Zeilennummer ausgegeben. $ grep -n Vielfalt prot1000 19:eine grosse Vielfalt an verschiedenen Produkten bietet gerade

99

Wichtige Solaris-Befehle

Der Befehl kennt folgende Optionen: Option

Bedeutung

-b

Nummer des Plattenblocks ausgeben, in dem das Suchmuster steht.

-c

Anzahl der Zeilen ausgeben, die das Suchmuster enthalten.

-i

Groß- und Kleinschreibung ignorieren.

-n

Zeilennummer ausgeben, die das Suchmuster enthält.

-v

Umgekehrt suchen: nur Zeilen ausgeben, die das Suchmuster nicht enthalten.

Tabelle 3.21: Die Optionen des Befehls grep

Es gibt zwei weitere Versionen des Befehls unter Solaris: fgrep und egrep. Der Befehl fgrep kennt keine regulären Ausdrücke (siehe nächster Abschnitt), während egrep weitere reguläre Ausdrücke kennt. Da der Befehl grep nicht rekursiv arbeitet, muss er mit dem Befehl find kombiniert werden, wenn sich die Datei mit dem Suchmuster im Verzeichnisbaum unterhalb des aktuellen Verzeichnisses befindet. Im nachfolgenden Beispiel werden im Verzeichnis /etc und in den darunter liegenden Verzeichnissen Dateien gesucht, die das Suchmuster PASSREQ enthalten: $ find /etc -type f -exec grep -n PASSREQ {} /dev/null \;

Da der Befehl grep normalerweise keine Dateinamen ausgibt, wenn er nur eine Datei durchsucht, wird ihm parallel die leere Datei /dev/null zum Durchsuchen »aufgezwungen«. Auf diese Weise erhalten Sie auch die Dateinamen mit den Fundstellen.

Reguläre Ausdrücke (regular expressions) Der Befehl grep lässt sich über reguläre Ausdrücke steuern, die im Suchmuster verwendet werden. Im nachfolgenden Beispiel werden alle Dateien des Verzeichnisses prog_sprachen nach einem Suchmuster durchsucht, das objektorientiert lautet und am Zeilenanfang steht: $ grep -in '^objektorientiert' ~/prog_sprachen/* 51:Objektorientierte Programmiersprachen 71:objektorientierte Sprachen haben bestimmte Merkmale, wie zum 331:Objektorientiert Programmieren

100

Links

Zu den wichtigsten regulären Ausdrücken gehören: Ausdruck

Beispiel

Bedeutung

.

M...e

Der Punkt steht für genau ein beliebiges Zeichen. Die Fundstellen für das Suchmuster im Beispiel könnten also Masse, Messe, Mette, Motte, Matte, Mitte, Miete usw. lauten.

*

Mat.*

Das vorangegangene Zeichen kann kein einziges Mal, einmal oder beliebig oft im Suchmuster vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Math, Matt, Matte, Mathematik, Mat usw. lauten.

[ ]

M[oaei]tte

Die eckigen Klammern stehen für genau ein beliebiges Zeichen, das im Auswahlbereich der eckigen Klammern enthalten sein muss. Die Fundstellen für das Suchmuster im Beispiel müssen also Matte, Motte, Mette und Mitte lauten.

[^ ]

M.[es].e

Die Zeichen des Auswahlbereichs in den eckigen Klammern, die wiederum für genau ein beliebiges Zeichen stehen, dürfen nicht vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Mette, Motte, Matte, Mitte, usw., aber nicht Masse, Messe, Miete usw. lauten.

^

^Masse

Die gefundene Zeile muss am Zeilenanfang das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Anfang einer Zeile gesucht werden.

$

Masse$

Die gefundene Zeile muss am Zeilenende das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Ende einer Zeile gesucht werden.

Tabelle 3.22: Reguläre Ausdrücke

Außer den Befehlen grep und egrep verwenden auch die Befehle vi und sed reguläre Ausdrücke.

3.9

Links

Links sind Verweise auf Dateien und gegebenenfalls auf Verzeichnisse. Durch die Vergabe von Links ist es möglich, von verschiedenen Stellen im Verzeichnisbaum aus auf dieselbe Datei oder dasselbe Verzeichnis zuzugreifen, ohne eine redundante Kopie zu erstellen, die

101

Wichtige Solaris-Befehle

außerdem nochmals denselben Speicherplatz verbraucht. Links sind auch eine Möglichkeit, die Originaldatei vor versehentlichem Löschen durch den Benutzer zu schützen, indem diese an einer Stelle steht, die dem Benutzer nicht zugänglich ist.

Hard Links Ein Hard Link vergibt einer Datei einen zweiten Namen, wobei diese nicht kopiert wird, sondern einfach ein weiterer logischer Verweis auf einen vorhandenen Dateieintrag erzeugt wird. Die logischen Dateinamen von Hard Links verweisen immer auf denselben Eintrag in der Inode-Tabelle (vgl. Tag 10). Einen Hard Link erzeugen Sie mit folgendem Befehl: $ $ $ $

ln prot1000 prot1000a ls -l prot*

-rw-r--r--rw-r--r--

2 2

root root

other other

65 65

May May

3 3

10:31 10:31

prot1000 prot1000a

Die Einträge, die der Befehl ls -l für die beiden Dateien ausgibt, sind absolut identisch, bis auf den logischen Dateinamen. Da beide Dateinamen dieselbe Inode-Nummer haben, verweisen sie auch auf dieselben Dateiinformationen. Die zweite Spalte der Ausgabe enthält den so genannten Link Counter, der pro Hard Link um 1 erhöht wird. Existieren für eine Datei Hard Links, so ist es nicht mehr möglich, den ursprünglichen Verweis auf die Originaldatei zu erkennen. Alle logischen Dateinamen verweisen einfach auf denselben Inode-Eintrag. Wenn Sie einen Hard Link löschen, wird die Zahl des Link Counters herabgesetzt, bis nur noch ein einziger Dateinamen mit dem Link Counter 1 übrig ist. Wenn Sie diesen löschen, entspricht dies dem Löschen einer normalen Datei: Dateieintrag und -name werden entfernt. Ein Hard Link kann nur innerhalb derselben Partition zugewiesen werden, da für jede Partition die Inode-Nummern und die Inode-Tabelle (vgl. Tag 10) separat verwaltet werden. Daher ist es auch nicht möglich, den Befehl mv für einen Hard Link über Partitionen hinweg auszuführen. Eine weitere Einschränkung ist, dass Hard Links nicht für Verzeichnisse angelegt werden können.

Symbolische Links Ein symbolischer Link ist eine Datei, die als Daten nur den Namen und den Pfad der Originaldatei speichert, auf die sie verweist. Ein symbolischer Link hat im Gegensatz zum Hard Link auch einen eigenen Inode-Eintrag. Einen symbolischen Link können Sie wie folgt erzeugen:

102

Links

$ $ $ $

ln -s prot1000 prot1000s ls -l prot*

-rw--r—r-- 1 lrwxrwxrxw 1

root root

other other

65 65

May 3 10:31 May 27 12:52

prot1000 prot1000s à prot1000

Wenn Sie einen Befehl für den symbolischen Link absetzen, wird in Wirklichkeit die Originaldatei verwendet. Sie können symbolische Links nicht nur über Partitionen hinweg, sondern auch für Verzeichnisse verwenden. Wenn Sie den Befehl cp oder chmod ausführen, kopieren bzw. verändern Sie die Rechte für die Originaldatei, nicht für den Link. Die Befehle ls, rm und mv zeigen, löschen und verschieben hingegen den symbolischen Link, nicht die Originaldatei. Wenn Sie einen symbolischen Link löschen, hat dies keine Auswirkungen auf die Originaldatei. Wenn Sie die Originaldatei löschen, zeigt der Link ins Leere. Bei einem symbolischen Link haben Sie nur pro forma alle Rechte. Tatsächlich gelten die Rechte der Originaldatei, wenn Sie auf die Datei eine Operation ausführen möchten. Die folgende Tabelle enthält die wichtigsten Unterschiede zwischen Hard Links und symbolischen Links. Merkmal

Hard Link

Symbolischer Link

Partitionsübergreifend

nein

ja

Inode-Eintrag

wie Originaldatei

eigener Inode-Eintrag

Link Counter

wird erhöht

bleibt 1

Originaldatei

nicht mehr erkennbar

bleibt erkennbar

Quelldatei

muss existieren

muss nicht existieren (Verweis erfolgt ins Leere)

Linkdatei

darf nicht existieren

wird überschrieben, wenn sie existiert

Eigene Datenblöcke

nein

ja, mit Pfad-/Dateinamen der Originaldatei

Anwendbar auf

nur normale Dateien

auf normale Dateien, Verzeichnisse und Gerätedateien

Wesen

anderer Name für gleiche Datei

eigene Datei, die als Verweis dient

Tabelle 3.23: Vergleich Hard Links und symbolische Links

103

Wichtige Solaris-Befehle

3.10 Zusammenfassung In diesem Tag haben Sie grundlegende Unix-Befehle kennen gelernt. Mit Hilfe dieser Befehle lassen sich diverse System- und Benutzerinformationen abrufen. Außerdem können Sie nun Dateien und Verzeichnisse anzeigen, anlegen, kopieren, verschieben und löschen. Sie haben gelernt, mit welchen Befehlen Sie Dateien vergleichen und bearbeiten und wie Sie nach Dateien oder deren Inhalt suchen. Sie können nun symbolische oder Hard Links erzeugen und erkennen.

3.11 F&A F

Ich versuche, mit dem Befehl cp mehrere Dateien in eine neue Datei zu kopieren. Ist das möglich? A

F

Kann ich mit dem Befehl rmdir einen Teil meines Verzeichnisbaums (bestehend aus weiteren Unterverzeichnissen und Dateien, die ich nicht mehr benötige) im Unterverzeichnis /export/home/otto/test löschen? A

F

Nein, dieser Befehl kann nur ein leeres Verzeichnis löschen. Verwenden Sie in diesem Fall den Befehl rm -r. Vergewissern Sie sich aber zuvor mit Hilfe des Befehls pwd, ob Sie sich im richtigen Verzeichnis befinden.

Ich soll einen Link anlegen, bin mir aber nicht sicher, ob ich einen symbolischen oder einen Hard Link verwenden soll. Was soll ich tun? A

104

Nein, dieser Befehl kann nur eine Datei auf eine andere, mehrere Dateien in ein Verzeichnis oder ein Verzeichnis auf ein Verzeichnis kopieren. Verwenden Sie in diesem Fall den Befehl cat.

Es kommt darauf an, ob der Link für ein Verzeichnis oder eine Datei angelegt werden soll. Ein Hard Link kann nur für eine Datei angelegt werden. Außerdem spielt es eine Rolle, ob der Link innerhalb derselben Partition angelegt werden soll: Ein Hard Link lässt sich nicht partitionsübergreifend erzeugen. In diesen Fällen können Sie nur einen symbolischen Link verwenden. Ansonsten ist ein Hard Link schneller, da er einen direkten Zugriff auf den Inode-Eintrag bietet, ohne zunächst einen anderen Inode-Eintrag – wie beim symbolischen Link – auslesen zu müssen.

Übungen

3.12 Übungen 1. Melden Sie sich unter einer einfachen Benutzerkennung am System an (also nicht als root). Legen Sie mit dem Befehl touch eine leere Datei mit dem Datum 3.1.01 an und suchen Sie dann mit dem Befehl find nach allen Dateien in Ihrem System, die von Ihnen als einfacher Benutzer erzeugt wurden, älter als 4 Wochen und leer sind. Die Datei muss dabei auf jeden Fall angezeigt werden. 2. Zählen Sie mit Hilfe der Befehle cat und wc, wie viele Benutzer in Ihrem System angelegt wurden. Verwenden Sie dazu die Datei /etc/passwd. 3. Erzeugen Sie mit dem Befehl mkdir rekursiv einen Verzeichnisbaum unterhalb Ihres Homeverzeichnisses: Direkt unter dem Homeverzeichnis soll das Verzeichnis X, darunter das Verzeichnis Y, darunter das Verzeichnis Z und im Verzeichnis Z sollen die Verzeichnisse Z1 und Z2 angelegt werden. Verwenden Sie dazu eine einzige Befehlszeile. 4. Verschieben Sie die Unterverzeichnisse Z1 und Z2 mit dem Befehl mv in das Verzeichnis Y. 5. Suchen Sie im Verzeichnis /etc rekursiv nach allen Dateien, die das Suchmuster PATH enthalten, und lassen Sie sowohl die Zeilennummern als auch die Dateinamen dabei ausgeben.

105