Unix-Einführung der Fakultät für Informatik der TU München

! zum Inhaltsverzeichnis
< zum vorangehenden Abschnitt: 2 Grundsätzliches über UNIX
> zum folgenden Abschnitt: 4 Das X Window-System


3 UNIX-Befehle

In diesem Kapitel finden Sie eine Beschreibung der Befehle, die bei der täglichen Arbeit mit Dateien hilfreich sind. Selbstverständlich sind das bei weitem nicht alle Befehle, die es unter UNIX gibt. Ebenso sind bei den beschriebenen Befehlen im Regelfall nicht alle möglichen Parameter aufgelistet, sondern nur die, die oft benötigt werden.

Bei allen der folgenden Befehle muß man auf eine Besonderheit von UNIX achten: UNIX unterscheidet zwischen Groß- und Kleinschreibung! Es ist z.B. durchaus möglich, daß es sowohl eine Datei text wie auch eine Datei Text (oder TEXT, TexT ...) gibt, die alle verschieden sind. Genauso ist es natürlich auch mit den Befehlen und den Parametern. Wenn ein Programm beharrlich behauptet, eine Datei nicht zu finden, die zweifelsfrei existiert, dann sollte man sicherheitshalber kontrollieren, ob der Dateiname nicht zufällig groß geschrieben wird.

Die Namen der oft gebrauchten UNIX-Kommandos sind sehr kurz, sie bestehen oft nur aus zwei Zeichen und sind die Abkürzungen von entsprechenden englischen Worten. Zur Erleichterung sind diese Worte jeweils in Klammern hinter dem Befehlsnamen angegeben.

Zur folgenden Beschreibung:

3.1 Die UNIX-eigene Dokumentation -- man

Zu allen UNIX-Befehlen ist eine entsprechende Kurzanleitung auch immer am Rechner abrufbar. Diese enthält im Gegensatz zu der vorliegenden Beschreibung im Regelfall die Auflistung aller möglichen Parameter sowie detailliertere Angaben zur Wirkungsweise der einzelnen Befehle. Um zu einem bestimmten UNIX-Befehl Erläuterungen zu erhalten, verwende man das Kommando

man Befehlsname

Die Wirkungsweise des Befehls man schildert das Kommando

man man

Hinweis: Die gleichen Beschreibungen, die man mit man erhält, sind auch über den Manual-Browser xman verfügbar. Dieser wird in der Standardumgebung im INFO-Workspace angezeigt.

3.2 Befehle für die Dateiverwaltung

3.2.1 cp -- Dateien kopieren (copy)

Syntax:
cp Quelldatei Zieldatei
oder
cp Datei ... Verzeichnis

Beschreibung:

Erste Form:
Die Quelldatei wird kopiert, und die Kopie erhält den Namen der angegebenen Zieldatei.

Zweite Form:
Eine oder mehrere Dateien werden in das angegebene Verzeichnis kopiert. Dabei behalten sie ihren ursprünglichen Namen.

Achtung:
Existiert bereits eine Datei mit Namen der angegebenen Zieldatei, so wird diese ohne jegliche Warnung mit dem Inhalt der Quelldatei überschrieben.

Beispiele:
cp prahmen prog5
Die Datei prahmen wird in die Datei prog5 kopiert.

cp info* /usr/stud/klimt
Alle Dateien, deren Name mit info beginnt, werden in das Verzeichnis
/usr/stud/klimt kopiert.

cp info*.c /usr/stud/klimt
Alle Dateien, deren Name mit info beginnt und mit .c endet, werden in das Verzeichnis /usr/stud/klimt kopiert.

3.2.2 ls -- Dateiverzeichnisse anzeigen (list sorted)

Syntax:
ls [-a] [-l] Datei/Verzeichnis ...

Beschreibung:
Die Dateien eines bestimmten (Standard: des aktuellen) Verzeichnisses werden aufgelistet. Dazu werden, je nach Option, bestimmte Informationen über die Dateien angezeigt. Es existieren noch eine Vielzahl von weiteren Optionen, die hier nicht angeführt werden.

Parameter:
-a
(all files) Auch Dateien, deren Name mit . beginnt, werden angezeigt.

-l
(long) Es werden zusätzliche Angaben gemacht, wie Zugriffsrechte, Eigentümer, Gruppe, Größe (in Bytes) und Datum der letzten Änderung.

Bedeutung der Spalten:

ls -l

total 2940
drwxrwxrwx   2 klimt    other       64 Aug 26 20:16 Mail
drwxr-xr-x   2 klimt    other     1024 Sep 18 11:09 News
drwxrwxrwx   2 klimt    other     1024 Oct 24 17:21 anl
-rw-r--r--   1 klimt    users        0 Oct 24 15:39 anl.toc
-rw-r--r--   1 klimt    other   390195 Jul 29 16:23 apfel1.Z
-rw-r--r--   1 klimt    other   521131 Aug  7 09:30 apfel2.Z
drwxr-xr-x   2 klimt    other     1024 Oct 24 14:59 bin
-rw-r--r--   1 klimt    other     8880 Apr  5  1990 colormap.data
drwxr-xr-x   2 klimt    other     1024 Aug 26 20:17 mand
-rw-r--r--   1 klimt    other    84976 Jul 29 14:42 medizini.doc
-rw-r--r--   1 klimt    users    66458 Oct 24 16:21 p.ps
-rw-r--r--   1 klimt    other      129 Jul 29 14:42 prompt
drwxrwxrwx   4 klimt    users     1024 Aug 28 14:03 texinfo
-rw-r--r--   1 klimt    users      163 Oct 24 15:26 texput.log
-rw-rw-r--   1 klimt    users   389368 Oct 24 11:27 unix-intro.ps
drwxr-xr-x   2 klimt    other     1024 Aug 26 20:18 xinfo-1.01.01

Die erste Spalte zeigt (unter anderem) an, ob der betreffende Eintrag ein Verzeichnis ist.

-
besagt, daß es sich um eine normale Datei handelt.
d
steht für ein Verzeichnis (directory).
l
(für link) zeigt an, daß es sich um eine symbolische Link, einen Verweis, handelt. Hinter dem Namen gibt ls -l das Ziel des Verweises an, dies kann ein Verzeichnis oder eine Datei sein (siehe auch die man-page zu ln).

Die nächsten neun Stellen zeigen die Zugriffsrechte an. Jeweils drei Stellen bezeichnen von links nach rechts die Rechte des Eigentümers, die Gruppenrechte und die der übrigen Benutzer. Die Buchstaben haben folgende Bedeutung:

r
(read permission) = Leserlaubnis
w
(write permission) = Schreiberlaubnis
x
(execution permission)
  • Bei normalen Dateien: Ausführungsrecht (Programme).
  • Bei Verzeichnissen: Recht zum Wechseln in dieses Verzeichnis.

In der folgenden Spalte steht die Anzahl der Verzeichniseinträge, unter denen die Datei insgesamt ansprechbar ist. Eine Zahl > 1 bedeutet, daß irgendwo ein Dateiname steht, der ebenfalls auf die gleiche Datei verweist.

Nun folgen der Name des Eigentümers der Datei, der Name der Gruppe, der die Datei zugeordnet ist und die Dateigröße in Zeichen. Abschließend kommt das Datum der letzten Änderung und der Dateiname. Bei Dateien, die älter als 6 Monate sind, wird die Zeit durch das Jahr ersetzt.

3.2.3 mv -- Dateien umbenennen/verschieben (move)

Syntax:
mv AlterName NeuerName

Beschreibung:
Mit diesem Befehl können Dateien oder ganze Dateiverzeichnisse umbenannt werden.

Achtung: Wenn bereits eine Datei mit dem angegebenen neuen Namen existiert, so wird diese ohne jegliche Warnung mit dem Inhalt der angegebenen Datei überschrieben.

Beispiele:
mv uebung ueb.alt
Die Datei uebung heißt ab sofort ueb.alt.

mv aufg1 sem4/aufg1
Die Datei aufg1 wird ins Unterverzeichnis sem4 verschoben.

mv briefe/* .
Alle Dateien aus dem Unterverzeichnis briefe werden ins aktuelle Verzeichnis (.) verschoben.

3.2.4 rm -- Dateien löschen (remove)

Syntax:
rm [-i] [-r] Dateiname ...

Parameter
-i
(interactive) Bei jeder Datei, die gelöscht wird, fragt das System nach, ob die Datei auch wirklich gelöscht werden soll.

Auch cp und mv verstehen übrigens den Parameter -i. Dort führt er zu einer Frage, bevor eine bestehende Datei überschrieben werden würde.

-r
(recursive) Hier darf als Parameter ein Verzeichnis angegeben werden. Es werden alle Dateien in diesem Verzeichnis, einschließlich enthaltener Verzeichnisse und deren Inhalt, und anschließend das Dateiverzeichnis selbst gelöscht. Dieser Befehl ist sehr nützlich für das Löschen kompletter Verzeichnisbäume, da im Gegensatz zu rmdir die behandelten Verzeichnisse nicht leer sein müssen. Allerdings sollte die Anwendung immer mit entsprechender Vorsicht erfolgen!

Beispiele:
rm numerik
Aus dem aktuellen Verzeichnis wird die Datei numerik gelöscht.

rm a*
Alle Dateien, deren Name mit a beginnt, werden gelöscht.

rm -r programme
Das Unterverzeichnis programme und alle Einträge, die sich darin befinden, werden gelöscht.

Warnung:
Wie bereits weiter oben erwähnt, kann eine Löschoperation nicht rückgängig gemacht werden. Bei Verwendung von Wildcards ? * seid bitte sehr vorsichtig und prüft genau, ob Ihr im richtigen Verzeichnis seid! Gebt die Namen so speiziell wie möglich an (also z.B. test*.?, und nicht *), so daß im Fall eines Irrtums der Schaden gering bleibt. Verwendet im Zweifelsfall die Option -i, um Unheil zu vermeiden. Zu leicht ist man einmal im falschen Fenster (mit einem anderen aktuellen Verzeichnis) und tippt einfach drauf los!

3.2.5 chmod -- Zugriffsrechte ändern (change mode)

Der chmod-Befehl kann auf zwei verschiedene Arten arbeiten, die erste ist leichter verständlich, die zweite manchmal effektiver.

Die Erfahrung zeigt, daß man bei einer Neuvergabe der Rechte (symbolisch mit = oder mathematisch) leichter Fehler macht als bei einer Änderung, besonders, wenn mehrere Dateien und/oder Verzeichnisse bearbeitet werden. Für einen Anfänger ist daher die anschauliche Variante (mit + bzw -) besser geeignet.

Achtung:

chmod gibt keine Warnung bei einer "fragwürdigen" Vergabe der Rechte aus. Zuteilung eines Schreib- ohne Leserechts sind zum Beispiel genauso möglich wie eine Entrechtung des Eigentümers. Bedenkt, daß Verzeichnisse das Ausführungsrecht haben müssen, um verwendbar zu sein!

Auf keinen Fall darf man sich die Ausführungserlaubnis für das eigene HOME-Verzeichnis entziehen! Da beim Login stets in das HOME-Directory des Benutzers gewechselt wird, dies aber ohne Ausführungserlaubnis nicht möglich ist, kann sich der Benutzer in solch einem Fall nicht mehr anmelden. Personen mit Superuser-Berechtigung (z.B. Kennung root) können unabhängig von den vergebenen Rechten jede Datei ansehen, ändern und ausführen. Ohne triftigen Grund werden sie das allerdings niemals tun. Es läßt sich auch nicht völlig ausschließen, daß sich Benutzer unberechtigt Zugang zu Euren Dateien verschaffen. Sollte Euch diesbezüglich etwas auffallen, sagen Sie bitte sofort den Betreuern Bescheid!

3.2.5.1 Die "anschaulichere" Variante

Syntax:
chmod [-R] [wer]wiewas[,...] Datei

Parameter:
Die Abkürzungen sind wie folgt zu verstehen:

wer
u
(user): der Eigentümer der Datei.
g
(group): die eingetragenen Gruppenmitglieder.
o
(others): alle anderen Benutzer.
wie
+
Vergabe (hinzufügen) eines Rechtes.
-
Entzug eines Rechtes.
=
Genaues Zuweisen von Rechten.
was
r
(read): Leserecht
w
(write): Schreibrecht
x
(execute): Ausführungsrecht
X
setzt execute für Verzeichnisse, aber nicht für Dateien

-R
verändert rekursiv alle Dateien und Unterverzeichnisse der angegebenen Verzeichnisse
Beispiel:
chmod o+r Telefon
gibt allen "anderen" Benutzern das Recht, die Datei Telefon zu lesen. chmod g-x a.out
entzieht allen Mitgliedern der Gruppe das Recht, a.out auszuführen. chmod o=r Telefon
erlaubt allen "anderen" Benutzern, die Datei Telefon zu lesen, entzieht ihnen aber (im Gegensatz zum ersten Beispiel) alle sonstigen Rechte, die sie bisher hatten.

chmod -R u=rwX,go=rX ~/.html-data
öffnet das .html-data Verzeichnis im HOME mit allen Dateien und Unterverzeichnissen für alle zum Lesen und gibt dem Eigentümer auch Schreibrecht. Versehentlich vergebene Execute-Attribute in diesen Datenverzeichnissen werden gleichzeitig gelöscht.

3.2.5.2 Die "mathematische" Variante

Bei manchen komplizierten Operationen kann es kürzer sein, die "mathematische" Variante zu verwenden.

Befehl:
chmod [-R] xyz Datei oder Verzeichnis [...]

Parameter:
x
Rechte des Eigentümers
y
Rechte der Gruppe
z
Rechte aller anderen Benutzer

Ein vergebenes Leserecht wird durch die Zahl 4 identifiziert; ein Schreibrecht durch 2 und ein Ausführungsrecht durch 1. x, y und z ergibt sich aus der Summe der vergebenen Rechte für den Eigentümer, die Gruppe bzw. alle anderen Benutzer.

Beispiel:
chmod 754 Datei
gestattet dem Eigentümer von Datei alle Zugriffe, den Gruppenmitgliedern das Lesen und Ausführen und allen anderen Benutzern nur das Lesen.

3.2.6 prt -- Dateien auf den Nadeldruckern ausgeben

Syntax:
prt Dateiname ...

Beschreibung:
prt ist kein UNIX-Befehl, sondern nur an den Rechnern der Informatikhalle verwendbar. Die angegebenen Dateien werden auf dem Matrixdrucker im jeweiligen Stockwerk ausgedruckt.

Achtung:
Nur reine Textdateien (z.B. Programmtexte) sind zum Drucken geeignet. Auf keinen Fall dürfen kompilierte Programme oder Objektdateien (Endung .o) ausgedruckt werden! (Es würden nur viele Seiten mit unnützem Zeichensalat entstehen.)

prt versucht, illegale Dateien zu erkennen und abzuweisen, jedoch sollte man sich darauf nicht verlassen.

3.3 Verzeichnisbefehle

3.3.1 pwd -- Aktuelles Verzeichnis anzeigen (print working directory)

Syntax:
pwd

Beschreibung:
Mit diesem Befehl wird der volle Pfadname des Verzeichnisses angegeben, in dem man sich im Moment befindet.

Hinweis:
Die genaue Funktion von pwd hängt von der verwendeten Shell ab.

3.3.2 cd -- Aktuelles Verzeichnis wechseln (change directory)

Syntax:
cd Verzeichnis

Beschreibung:
Mit diesem Befehl wechselt man vom aktuellen in das angegebene Verzeichnis, das damit zum neuen aktuellen Verzeichnis wird. Um in ein bestimmtes Verzeichnis wechseln zu können, muß man für dieses die Ausführungsberechtigung (x) haben.

Beispiele:
cd
Wechselt ins HOME-Verzeichnis (Standardwert).

cd ..
Wechselt ins übergeordnete Verzeichnis

cd bin
Befindet man sich momentan im Verzeichnis /usr/stud/klaus, so wechselt man mit diesem Befehl ins Verzeichnis /usr/stud/klaus/bin (falls dieses existiert, ansonsten gibt es eine Fehlermeldung).

cd /usr/stud/klaus
Unabhängig davon, in welchem Verzeichnis man sich befindet, gelangt man in das Verzeichnis /usr/stud/klaus.

3.3.3 mkdir -- Verzeichnis anlegen (make directory)

Syntax:
mkdir [-p] Verzeichnis ...

Beschreibung:
Im aktuellen Verzeichnis wird ein weiteres Unterverzeichnis angelegt. Dabei werden die Zugriffsrechte des neuen Verzeichnisses auf rwxr-xr-x (derzeitige Voreinstellung) gesetzt.

Parameter:
-p
Erstellt alle Verzeichnisse, die benötigt werden, um den angegebenen Verzeichnispfad zu erstellen. Normalerweise erwartet mkdir, daß nur die letzte Hierarchiestufe des angegebenen Pfades neu zu erstellen ist, alle anderen Stufen jedoch bereits vorhanden sind.

Beispiel:
mkdir verz1 verz2
Im aktuellen Verzeichnis werden die beiden Unterverzeichnisse verz1 und verz2 angelegt.

mkdir -p neu1/neu2/neu3/neu4
Im aktuellen Verzeichnis werden nacheinander die Verzeichnisse neu1, neu1/neu2, neu1/neu2/neu3 und neu1/neu2/neu3/neu4 angelegt.

3.3.4 rmdir -- Verzeichnis löschen (remove directory)

Syntax:
rmdir Verzeichnis ...

Beschreibung:
Die angegebenen Verzeichnisse werden gelöscht. Keines dieser Verzeichnisse darf Dateien oder weitere Verzeichnisse enthalten. Will man ein nichtleeres Verzeichnis löschen, so muß man dazu den Befehl rm -r verwenden.

Beispiel:
rmdir alteszeug
Das Unterverzeichnis alteszeug wird gelöscht.

3.3.5 which und type -- Programme auffinden

Syntax:
which Programm ...

Beschreibung:
Der Befehl which stellt für die angegebenen Programme fest, in welchem Verzeichnis die entsprechende ausführbare Datei steht. Der komplette Pfad wird ausgegeben.

Hinweis:
In der Korn-Shell ist der Befehl type besser, weil er auch Aliase anzeigt, also Kommandos, die innerhalb der Shell definiert wurden.

3.3.6 find -- Dateien suchen

Vorbemerkung:
Bei der Anwendung des find-Befehls ist größte Sorgfalt geboten. Unbedacht aufgerufen erzeugt find eine außerordentlich hohe Netzlast und eine hohe Belastung anderer Maschinen am Institutsnetz. find-Programme, die diesbezüglich auffallen, werden sofort und ohne Rückfragen von den Systembetreuern gekillt!

Syntax:
find Pfadname ... Filterfunktionen ...

Beschreibung:
find durchsucht alle angegebenen Pfade und deren Unterverzeichnisse nach Dateien, die die angegebenen Kriterien erfüllen. Die Kriterien werden dabei in Form von Filterfunktionen angegeben. Bei jeder Datei innerhalb des Suchpfades wird überprüft, ob sie die durch den Filter gestellte Bedingung erfüllt. Tut sie das, wird sie dem nächsten Filter übergeben. Tut sie es nicht , fällt sie aus der Überprüfung heraus. Einige der Filterfunktionen haben besondere Seiteneffekte, z.B. das Drucken des Dateinamens (-print) oder das Ausführen eines Befehls (-exec, meist mit dem Dateinamen als Argument).

Filterfunktionen:
Die im folgenden angegebene Liste der Filter umfaßt nur die wesentlichsten, daneben existieren noch sehr viele weitere. Für deren Beschreibung sei auf die Manualseite zu find verwiesen.

-name Dateiname
Ergibt wahr, wenn der Name der Datei dem angegebenen entspricht. Ein regulärer Ausdruck (mit ., * ...) ist erlaubt; dieser muß aber in Hochkommata gesetzt werden, damit er nicht durch die Shell bereits ausgewertet wird.

-xdev
Ergibt immer wahr. Bewirkt, daß find bei der Suche keine Mount-Punkte überquert, sondern immer auf dem anfänglichen Dateisystem bleibt.
-xdev sollte immer mit angegeben werden!.

-user Name
Ergibt wahr, wenn die Datei dem angegebenen Benutzer gehört.

-print
Ergibt immer wahr. Gibt den kompletten Pfadnamen der Datei, beginnend mit dem zu durchsuchenden Verzeichnis, auf der Standardausgabe aus.

-exec Befehl
Der angegebene Befehl wird ausgeführt. Die Stelle, an der in der Befehlszeile der Dateiname stehen soll, muß mit {} markiert werden. Jeder Befehl muß mit einem Strichpunkt abgeschlossen werden. -exec ergibt wahr, wenn der Befehl fehlerfrei ausgeführt wurde (d.h. einen exit-Wert von 0 liefert).
Vorsicht: Da der Strichpunkt für die Shell eine Sonderbedeutung hat, muß er als ';' eingegeben werden.

-ok Befehl
Wie -exec, jedoch wird der Benutzer vor Ausführung des generierten Befehls jedes Mal gefragt. Er kann dann die Befehlsausführung mit y veranlassen oder mit n unterbinden.

-exec und -ok erzeugen eine erhebliche Anzahl von Prozessen und sind daher nur für kleine Dateimengen bis ca. maximal 30 geeignet. Für das Behandeln großer Dateimengen wird auf das Programm xargs verwiesen (siehe Manualseite).

Beispiele:
find . -xdev -print
Ausgabe der Namen aller Dateien in und unter dem aktuellen Verzeichnis auf dem aktuellen Dateisystem.

find . -xdev -name '*.c' -print
Ausgabe der Namen aller Dateien mit Dateinamensende .c. Man beachte, daß die Angabe *.c in Hochkommata steht, da sonst die Shell an dieser Stelle die Namen aller .c-Dateien des aktuellen Verzeichnisses einsetzen würde.

find doku -xdev -name '*.doc' -ok vi {} \;
Sucht alle Dateien mit Namensendung .doc im Unterverzeichnis doku und darunter und fragt den Benutzer, ob diese Datei mit vi editiert werden soll.

3.4 Anzeigebefehle

3.4.1 cat -- Dateien zusammenhängen (concatenate)

Syntax:
cat [-e] [-t] [-v] Datei ...

Beschreibung:
Bei diesem Befehl werden die angegebenen Dateien in der angegebenen Reihenfolge ausgegeben.

Parameter:
-e
Am Ende jeder Zeile wird ein $ angezeigt.

-t
Im Text gesetzte Tabulatoren werden als ^I angezeigt.

-v
Zeichen, die normalerweise am Bildschirm nicht darstellbar sind, werden als ^x oder ^? angezeigt.

Beispiele:
cat beispiel
Anzeige der Datei beispiel.

cat datei1 datei2 > datei3
Es wird eine Datei datei3 erzeugt, die den kombinierten Inhalt der Dateien datei1 und datei2 enthält.

cat anhang >> bericht
Der Inhalt der Datei anhang wird ans Ende der Datei bericht angefügt.

cat > neu_dat
Es wird eine Datei neu_dat erstellt (bzw. eine bereits vorhandene Datei überschrieben). Dabei wird der Inhalt der Datei von der Tastatur gelesen. Die Eingabe beendet man mit Ctrl-D ([Ctrl] festhalten und gleichzeitig [D] drücken).

cat >> alt_dat
Über Tastatureingabe kann an eine bestehende Datei alt_dat neuer Text hinzugefügt werden. Eingabe beenden: Ctrl-D drücken.

3.4.2 less -- Dateien seitenweise anzeigen

Syntax:
less -\?
Gibt eine Zusammenfassung möglicher less-Befehle aus (auch die, die in dieser Beschreibung nicht erwähnt werden). (Der Backslash \ ist erforderlich, damit die Shell nicht versucht, eine Datei zu finden, die dem Muster -? entspricht.)

less [Parameter] Dateiname ...
Zeigt die angegebene Datei seitenweise am Bildschirm an. In diesem Modus können die im folgenden beschriebenen Befehle verwendet werden.

Funktion:
Das Programm less ist eine schnelle und doch komfortable Alternative zu einem Editor, wenn man eine Datei nicht ändern, sondern nur anschauen will.

Hinweis: less verwendet weitgehend vi-Kommandos.

Blättern im Text:

h
Eine Zusammenfassung der möglichen less-Befehle (Wie less -\? von der Shell-Ebene aus).

[Leertaste]
blättert eine Bildschirmseite weiter.

[Enter]
geht in der Datei eine Zeile weiter.

d
blättert eine halbe Bildschirmseite weiter.

b
blättert eine Bildschirmseite zurück.

y
geht in der Datei eine Zeile zurück.

u
blättert eine halbe Bildschirmseite zurück.

Bildschirm neu aufbauen:

r
schreibt den Inhalt des Bildschirms noch einmal (refresh). Das kann z.B. nützlich sein, wen Systemmeldungen den Bildschirmaufbau zerstört haben.

Textstellen suchen:

g
springt an den Anfang der Datei.

G
springt an das Ende der Datei.

m
gefolgt von einem beliebigen Kleinbuchstaben markiert die aktuelle Textzeile mit diesem Buchstaben.

'
gefolgt von einem Kleinbuchstaben geht in die Zeile zurück, die zuvor mit diesem Buchstaben markiert wurde.

/string
sucht nach der Zeile, in der der angegebene String zum ersten Mal nach der aktuellen Position auftaucht. (Vorwärtssuche).

?string
sucht nach der Zeile, in der der angegebene String zum ersten Mal vor der aktuellen Position auftaucht. (Rückwärtssuche).

/!string
wie /string, doch wird die erste Zeile angezeigt, die den String nicht enthält.

?!string
wie ?string, doch wird die erste Zeile angezeigt, die den String nicht enthält.

n
wiederholt den letzten Suchvorgang.

[Esc] n
wiederholt den letzten Suchvorgang in der anderen Richtung.

Informationen:

=
gibt einige Daten der betrachteten Datei aus; z.B den Namen, die Länge der Datei usw.

less beenden:

q
beendet less und kehrt auf die Shell-Ebene zurück.

Editor starten:

v
Startet einen Editor mit der aktuellen Datei. Für den Aufruf des Editors wird das Kommando verwendet, das durch die Umgebungsvariable EDITOR festgelegt ist. Existiert die Variable nicht, wird vi verwendet.

UNIX-Kommandos:

!Kommando
Das Kommando wird ausgeführt

!!
Das vorhergehende UNIX-Kommando wird wiederholt

!
Eine neue Shell wird gestartet

Parameter:

-e
Ohne diesen Schalter kann less nur durch den Befehl q beendet werden, ist er gesetzt, so beendet less sich automatisch, wenn das Programm zum zweiten Mal auf das Ende der betrachteten Datei trifft.

-E
Wie -e, doch hier beendet sich less bereits, wenn das Programm zum ersten Mal auf das Ende der betrachteten Datei trifft.

-i
Bei Suchbefehlen werden Unterschiede in der Groß/Kleinschreibung ebensowenig beachtet wie eventuelle Textunterstreichungen.

-M
Beim Durchblättern des Textes werden Informationen ausgegeben, wie groß die Datei ist und welcher Anteil bereits betrachtet wurde.

-N
Die Zeilen werden numeriert.

3.4.3 more -- Dateien seitenweise anzeigen

Syntax:
more [-nnn] [+z_nr] [+/String] Datei ...

Beschreibung:
Mit Hilfe dieses Befehls kann man Dateien seitenweise am Bildschirm anzeigen lassen (vgl. cat). Am Ende der Seite wird jeweils angegeben, zu wieviel Prozent die Datei bereits angezeigt wurde.

Parameter:
nnn
gibt die Anzahl der Zeilen an, die pro Seite angezeigt werden sollen.

z_nr
gibt die Zeile an, ab der mit der Anzeige begonnen werden soll.

String
Die Datei wird erst ab zwei Zeilen vor der Stelle, an der die angegebene Zeichenfolge erstmals steht, ausgegeben.
Nach Beginn der Anzeige können verschiedene Eingaben erfolgen:

h
Anzeige der möglichen Eingaben

mm [Leertaste]
Vorschub um mm Zeilen (Wird keine Zahl angegeben, so erfolgt ein Vorschub um eine Seite).

=
Anzeige der aktuellen Zeilennummer.

mm/String
Die Datei wird ab der Stelle weiter angezeigt, an der der String zum mm-ten Mal steht.

v
Der Editor vi wird aufgerufen, und die angezeigte Datei wird ab der aktuellen Stelle editiert.

mmf
Bei der Ausgabe werden mm Seiten übersprungen.

.
Der letzte Befehl wird wiederholt.

q
Vorzeitiges Beenden der Anzeige.

Anmerkung:
less bietet die gleichen Funktionen und mehr. Letztendlich ist es Geschmackssache, welches der beiden Programme Ihr verwendet.

Jedoch gehört less im Gegensatz von more nicht zum Lieferumfang vieler Unix-Varianten und ist daher nicht immer verfügbar.

3.4.4 clear -- Bildschirm löschen

Der Befehl clear löscht den Bildschirm und setzt den Positionsanzeiger (= Cursor) in die oberste Zeile.

3.4.5 grep -- Suchen einer Zeichenkette in Dateien

Syntax:
[f]grep [Optionen] Suchstring Datei ...

Beschreibung:
grep sucht in allen angegebenen Dateien nach Zeilen, die die als Suchstring angegebene Zeichenfolge enthalten. Der Name der Datei sowie die gefundene Zeile werden ausgegeben. Gibt man keine zu durchsuchende Datei an, so liest grep die Standardeingabe (nützlich für die Verwendung in Pipes). Enthält der Suchstring Leerzeichen oder Sonderzeichen, so muß man ihn in einfache Anführungszeichen setzen.

Optionen

-i
Bei der Suche wird kein Unterschied zwischen Groß- und Kleinbuchstaben gemacht.

-l
Nur die Namen der Dateien, die den Suchstring enthalten, wird angezeigt. Die Ausgabe der entsprechenden Zeilen wird dagegen unterdrückt.

-v
Anzeige aller Zeilen bzw. Dateien, die den angegebenen Suchstring nicht enthalten.

-x
Es wird nur nach Zeilen gesucht, die genau dem Suchstring entsprechen, also keinerlei sonstige Zeichen enthalten.

Anmerkung:
grep kann als Suchstring auch sogenannte reguläre Ausdrücke verstehen. Die Option -E schaltet dabei auf eine etwas geänderte Syntax um. Eine Beschreibung der Syntax für solche regulären Ausdrücke ist in den man-pages grep(1) und regexp(5) erhältlich.

Soll nach einfachen Zeichenfolgen gesucht werden, so sollte man fgrep verwenden.

Namensherkunft:
Der ursprüngliche UNIX-Editor ed besitzt (ebenso wie ex/vi) einen Befehl g/re/p, wobei re für regular expression, also regulärer Ausdruck steht. Der Befehl sucht nach Zeilen, in denen der angegebene reguläre Ausdruck vorkommt und gibt diese aus. Er wurde so oft benützt, daß man ihn schließlich in ein eigenes Programm auslagerte, das folgerichtig grep genannt wurde. (Quelle: NEWS-Artikel, beruft sich auf Dennis Ritchie).

3.5 Befehle zur Prozeßsteuerung

Jedes Programm, das auf einem UNIX-Rechner gestartet wird, bekommt eine Prozeßnummer (process id, PID) zugeordnet. Dies ist eine eindeutige Zahl, die das Betriebssystem vergibt. Wenn man ein Programm als Hintergrundprozeß startet, so bekommt man die Nummer des neu erzeugten Prozesses angezeigt. Beispiel:

(01) klimt@hphalle0a:/usr/stud/klimt> xeyes &
(02) [1] 19449
(03) klimt@hphalle0a:/usr/stud/klimt> ps
(04)    PID TTY      TIME COMMAND
(05)  15920 ttysb    0:00 tcsh
(06)  19449 ttysb    0:00 xeyes
(06)  20050 ttysb    0:00 ps
(08) klimt@hphalle0a:/usr/stud/klimt> kill 19449
(09) klimt@hphalle0a:/usr/stud/klimt> ps
(10)    PID TTY      TIME COMMAND
(11)  15920 ttysb    0:00 tcsh
(12)  20053 ttysb    0:00 ps
(13) [1]  + Terminated             xeyes
(14) klimt@hphalle0a:/usr/stud/klimt>

(Die Zeilennummern dienen nur der Verdeutlichung, sie sind nicht Bestandteil der Ausgabe.)

Zeile 1:
Das Programm xeyes wird als Hintergrundprozeß gestartet. Dazu muß man lediglich am Ende des Programmaufrufs (also nach eventuellen Parametern) ein & schreiben. Dies veranlaßt die Shell, nicht auf das Ende des aufgerufenen Programms zu warten, sondern sofort nach dessen Start wieder für die nächste Eingabe bereitzustehen.

Zeile 2:
Die Shell gibt aus, mit welcher Prozeßnummer das neu gestartete Programm läuft.

Zeile 3:
Die Shell wartet auf die nächste Eingabe. Das Kommando ps wird eingegeben und gestartet (ps-Beschreibung siehe unten).

Zeile 4-7:
Ausgabe des ps-Kommandos. Die einzelnen Spalten:
PID
Hier steht die Prozeßnummer.
TTY
Der Name des Terminals, von dem das Programm gestartet wurde (momentan nicht interessant).
TIME
Die bisher verbrauchte CPU-Zeit in Sekunden.
COMMAND
Die Befehlszeile, mit der das Programm gestartet wurde.

Wie man sieht, ist auch der ps-Prozeß selbst in der Liste enthalten. Der tcsh-Prozeß ist die Shell, die die Befehle entgegennimmt.

Zeile 8:
Der Prozeß mit der Nummer 19449 (der xeyes-Prozeß) wird beendet (kill -- Beschreibung siehe unten).

Zeile 9:
Erneuter ps-Aufruf.

Zeile 10-12:
Der xeyes-Prozeß ist verschwunden. Bei ps handelt es sich nicht mehr um den obenstehenden Prozeß, sondern um einen neuen (erkennbar an der PID).

Zeile 13:
Die Shell meldet, daß das xeyes-Programm beendet wurde.

Zeile 14:
Die Shell wartet auf die nächste Eingabe.

3.5.1 ps -- Prozesse auflisten (processes)

Dieses Kommando ist versionsabhängig. Die hier gegebene Beschreibung bezieht sich auf System V basierende Systeme. Auf BSD basierenden Systemen gelten andere Parameter.

Syntax:
ps [Parameter ... ]

Beschreibung:
Der Befehl gibt Informationen zu den Prozessen aus, die im System laufen. Wenn keine Parameter angegeben werden, zeigt ps (wie im obigen Beispiel) nur die Prozesse, die in der entsprechenden Shell laufen oder von ihr aus gestartet wurden, und nicht alle Prozesse des Benutzers. Ein Weg, diese zu erhalten, wird in den Beispielen gezeigt.

Parameter:
-e
Alle im System laufenden Prozesse werden aufgelistet.

-f
erzeugt eine ausführlichere Liste. Zusätzlich zu den oben erklärten Feldern sind unter anderem noch folgende Angaben zu finden:
F
Art des Prozesses (z.B. 01 = Hauptspeicherprozeß, 02 = Systemprozeß ...).
S
Status des Prozesses (z.B. S = Prozeß schläft, R = Prozeß läuft, T = Prozeß ist angehalten ... ).
UID
Benutzername des Prozeßeigentümers.
PPID
Prozeßnummer des Vaterprozesses.
PRI
Interne Priorität des Prozesses (ändert sich ständig).

-u User-Id
Beschränkt die Liste auf diejenigen Prozesse, deren Eigentümer die angegebene Benutzernummer hat.

Beispiel:
ps -ef
Es werden alle Informationen über alle Prozesse des Systems angezeigt.

ps -fu 28717
Erzeugt eine Liste mit allen Prozessen des Benutzers mit der Nummer 28717.

Hinweis: Die eigene Benutzernummer erhält man durch Eingabe des Befehls id.

3.5.2 kill -- Prozesse beenden

Syntax:
kill [-Signal] process-id

Beschreibung:
Mit diesem Befehl läßt sich ein Prozeß (z.B. ein Programm mit Endlosschleife) abbrechen.

Anmerkung: Die process-id eines Programmes läßt sich über den Befehl ps feststellen.

Parameter:
Es gibt eine Vielzahl von möglichen Signalen. Hier werden jedoch nur die wichtigsten angeführt:

9
Der Prozeß wird sofort abgebrochen.
15
Standardwert. Der Prozeß erhält die Aufforderung, sich zu beenden. Es liegt jedoch an dem Prozeß, ob er dies wirklich tut. Ein Editor kann z. B. noch eine geänderte Datei speichern oder temporäre Dateien entfernen.

Beispiel:
kill -9 4711
Der Prozeß mit der Nummer 4711 wird sofort beendet.

Achtung: Man sollte das Signal 9 nur dann verwenden, wenn das Programm durch einen normalen kill-Befehl nicht beendet wird.

3.6 Netzwerkorientierte Befehle

Die folgenden Befehle sind zwar prinzipiell auch auf einem alleinstehenden Rechner einsetzbar, Sinn machen sie aber erst in einem Netz von vielen Rechnern mit entsprechend vielen Benutzern.

3.6.1 mailx -- E-Mail versenden und empfangen

Syntax:
mailx [-s Subject] [user-id[@Systemname]...]

Beschreibung:
Mit mailx kann man Nachrichten verfassen und versenden sowie erhaltene Nachrichten lesen, speichern oder löschen.

Hat man eine Nachricht bekommen, so gibt das System bei der Anmeldung die Meldung you have mail aus. Mit dem Befehl mailx (ohne Angabe eines Parameters) wird das Mail-System aufgerufen. Es erscheint dann ein & als Eingabeaufforderung am Bildschirm, wonach z. B. folgende Eingaben möglich sind:

?
Anzeige der möglichen Anweisungen
h
Anzeige einer Liste der vorhandenen Briefe
R
Antworten auf einen Brief
t
Briefe lesen
d
Brief löschen
q
System verlassen

Daneben gibt es noch eine ganze Reihe weiterer Befehle.

Will man selbst eine Mail versenden, so muß man die user-ID des Empfängers (und, wenn er nicht am gleichen System arbeitet, den Namen seines Rechners) im Aufruf angeben. Zwei Beispiele:

mailx peisker
dient dazu, eine Nachricht an den Benutzer Peisker auf dem gleichen Rechner zu senden.

mailx bartel@informatik
schickt eine Nachricht an den Benutzer Bartel im lokalen Netzwerk der TU-München. Der Zusatz @informatik sorgt bei allen im Informatikbereich verwalteten Benutzern dafür, daß die Meldung auf dem Stammrechner des Benutzers abgelegt wird (TU-spezifisch).

Daraufhin erscheint am Bildschirm die Meldung

Subject:.

Hier kann man der mail einen Titel geben.

Danach kann man den gewünschten Text schreiben. Um den Brief zu beenden, muß man an der ersten Stelle der Zeile einen Punkt eingeben, woraufhin in der nächsten Zeile

Cc:

erscheint. An dieser Stelle können die Namen weiterer Benutzer eingetragen werden, die den Brief ebenfalls erhalten sollen. Anschließend kann man das mail-System mit

q

(für quit) verlassen. Wird anstelle des Textes oder im Text am Anfang einer Zeile

~q

eingegeben, so fügt das System beim Versenden der Meldung an dieser Stelle den Inhalt der Datei dead.letter ein. Mit

~r Dateiname

kann der Inhalt der angegebenen Datei verschickt werden.

Die Angabe des Subject auf der Kommandozeile ist bei nichtinteraktiver Verwendung notwendig:

ls -lR | mailx -s 'Eine Liste meiner Dateien' ewald@informatik

Da die Eingabe nicht von dert Tastatur kommt, kann mailx nicht nach einem Subject fragen. Wäre keines angegeben, so bliebe diese wichtige Headerinformation leer.

Hinweis:
Auf BSD-basierenden UNIX-Systemen lautet dieser Befehl /usr/ucb/mail.

In der Standard-Konfiguration, die jedem neuen Benutzer zur Verfügung gestellt wird, wird als Mailprogramm elm verwendet, das die gleichen Funktionen bietet wie mailx, jedoch eine wesentlich komfortablere Handhabung ermöglicht (siehe 8). Es ist jedoch nicht auf allen UNIX-Systemen verfügbar! Die Erklärung zu mailx wurde hier aufgenommen, weil mailx zum Standardumfang von UNIX gehört und so auf allen UNIX-Systemen verfügbar ist.

3.6.2 gfinger -- Suche nach Benutzern (GNU finger)

Syntax:
gfinger [[-l] Benutzername ... ]

Beschreibung:
gfinger zeigt an, an welchen Rechnern die im Aufruf angegebenen Personen derzeit angemeldet sind oder, falls sie derzeit nirgends angemeldet sind, an welchem Rechner sie zuletzt angemeldet waren. Mit der Option -l werden auch weitere Informatioen angezeigt. gfinger ohne Benutzernamen im Aufruf zeigt alle derzeit angemeldeten Benutzer der Informatikhalle und diverser anderer Rechner am Institut.

Anmerkung:
Die von Studenten geschriebenen Programme xwho und ~acher/bin/finde stellen die Rechnerhalle und alle derzeit dort arbeitenden Personen graphisch dar.

gfinger gehört nicht zum normalen UNIX-Befehlsumfang, sondern ist ein Bestandteil des GNU-Projektes der Free-Software-Foundation. Viele UNIX-Systeme enthalten das Programm finger, das jedoch nicht so leistungsfähig ist. Auf den Rechnern der Informatikhalle startet der Befehl finger ebenfalls das Programm gfinger.

3.6.3 ftp -- Dateien zwischen Rechnern übertragen (file transfer protocol)

Syntax:
ftp Rechnername

Beschreibung:
ftp dient dazu, Dateien zwischen verschiedenen Rechnern zu kopieren. Der Benutzer muß dazu ein Loginkennzeichen auf dem Zielrechner besitzen. Manche Rechner bieten aber auch anonymen Zugang unter einer speziell dafür bereitgestellten Kennung an. Die Benutzerschnittstelle von ftp ist wie die der Korn-Shell kommandoorientiert, das heißt, ftp zeigt einen Prompt an und erwartet vom Benutzer die Eingabe bestimmter Befehle. Die wichtigsten dieser Befehle sind nachfolgend beschrieben.

Der Rechner, an dem man selbst arbeitet, wird in der folgenden Beschreibung als lokaler Host, der andere als remote Host bezeichnet.

Parameter:
Rechnername ist der Name des Rechners, von dem oder auf den man Dateien übertragen will, also der remote Host.

Kommandos:
open Rechnername

Startet eine Verbindung zum angegebenen Rechner. Gibt man beim Aufruf von ftp bereits einen Rechnernamen ein, so wird die Verbindung zu diesem automatisch hergestellt. Besteht zum Zeitpunkt des open-Aufrufs noch eine andere Verbindung, so erfolgt eine Fehlermeldung. In diesem Fall ist die noch bestehende Verbindung mit close zu schließen.

user Benutzername

Meldet den Benutzer mit dem angegebenen Namen am remote Host an. Bei Bedarf verlangt ftp daraufhin nach einem Paßwort.

dir [Datei-/Verzeichnisname
...]
Zeigt das Inhaltsverzeichnis auf dem remote Host. Ist der ein UNIX-Rechner, so wird das Verzeichnis intern meistens durch das Kommando ls erzeugt und die Ausgabe hat das entsprechende bekannte Format.

cd Verzeichnisname

Wechselt das Verzeichnis auf dem remote Host, falls dieser ein hierarchisches Dateisystem hat. Funktion wie das gleichnamige UNIX-Kommando.

bin

Schaltet ftp in den binären Übertragungsmodus. In diesem Modus werden alle Bytes unverändert übertragen. Das Gegenstück dazu ist der Netzwerk-ASCII-Modus, in dem gewisse Anpassungen an Dateien vorgenommen werden (möglicherweise Löschen des achten Bits, Umstellung des Zeilenvorschubs ... ). Für komprimierte Dateien ist generell der Modus bin einzustellen.

ascii

Schaltet den Netzwerk-ASCII-Übertragungsmodus ein. Der ASCII-Modus ist immer dann sinnvoll, wenn reine Textdateien übertragen werden sollen, da diese dann an die unterschiedlichen Systeme angepaßt werden. Beispielsweise verwendet MS-DOS als Zeilentrenner die Zeichen Carriage-Return und Linefeed, während UNIX nur Linefeed verwendet. Solche Unterschiede werden im ASCII-Modus automatisch berücksichtigt.

get Dateiname [Neuer_Name]

Kopiert die angegebene Datei vom remote Host in das aktuelle Verzeichnis des lokalen Hosts. Eventuell wird der Name an die Konventionen des lokalen Rechners angepaßt (Vorsicht bei MS-DOS-Systemen!). Gibt man einen zweiten Dateinamen an, so wird die Datei auf dem lokalen Rechner unter dem angegebenen Namen abgelegt.

reget Dateiname [Neuer_Name]

Gelegentlich bricht während der Übertragung einer Datei die Verbindung zusammen und es befindet sich nur der Anfang des ursprünglichen Inhalts in der Datei. Damit dieser Teil nicht nochmals übertragen werden muß, setzt reget mit der Übertragung dort wieder ein, wo sie zuvor unterbrochen wurde, indem es nur den Rest der Datei holt und an das vorhandene Fragment anfügt.

Hinweis: Nicht alle ftp-Server unterstützen diesen Befehl.

put Dateiname [neuer_Name]

Kopiert die angegebene Datei vom lokalen Host in das aktuelle Verzeichnis des remote Hosts. Analog zu get können Anpassungen des Dateinamens erfolgen oder ein neuer Dateiname eingegeben werden.

mget Dateiname ...

Kopiert alle angegebenen Dateien vom remote Host auf den lokalen Host. Bei der Angabe der Dateinamen können die üblichen regulären Ausdrücke verwendet werden (*, ?). Je nach Systemeinstellung (siehe Kommando prompt) verlangt ftp vor Beginn des Kopiervorgangs für jede Datei eine getrennte Bestätigung oder kopiert die Dateien ohne Rückfrage. Eine Umbenennung der übertragenen Dateien ist mit mget nicht möglich.

mput Dateiname ...

Kopiert die angegebenen Dateien vom lokalen Host auf den remote Host. Es gelten die gleichen Bedingungen wie bei mget

prompt

Schaltet die Einzelabfrage bei mget und mput an oder aus.

hash

Schaltet die Sichtanzeige des Übertragungsfortschritts an oder aus. Falls eingeschaltet, wird jeweils nach Übertragung einer beestimmten Datenmenge ein # auf den Bildschirm geschrieben. Für welche Datenmenge der # jeweils steht, wird bei Eingabe des Kommandos hash angezeigt. Die Anzeige ist jedoch gelegentlich ungenau.

close

Schließt die Verbindung zu einem remote Host, beendet ftp aber nicht.

quit

Schließt eine eventuell noch offene Verbindung und beendet ftp.

Konfigurationsdatei:
ftp läßt sich mit Hilfe der Datei .netrc konfigurieren, die im HOME-Verzeichnis des Benutzers liegen muß. Näheres hierzu ist der Manualseite zu netrc zu entnehmen. Allgemein nützlich dürfte die folgende Zeile sein:

default login anonymous password Eure Mailadresse

Diese Zeile sorgt dafür, daß ftp bei jedem Verbindungsaufbau automatisch versucht, sich mit dem Namen anonymous und der eigenen Mailadresse als Paßwort auf dem remote Host anzumelden. Dies ist die übliche Konvention für eine Gastanmeldung auf jedem ftp-Server.

Weil in der Datei .netrc Passwörter gespeichert werden können, muß sie mittels chmod 600 vor fremdem Zugriff geschützt werden, sonst weigert sich ftp, sie zu verwenden.

Sonstiges:
Die TU-München betreibt im Verbund mit der Universität München einen ftp-Service. Für nähere Informationen dazu siehe 12.2.

Von den Rechnern der Informatikhalle ist bis auf wenige Ausnahmen kein ftp-Verkehr zu Rechnern außerhalb des Instituts möglich.

3.6.4 rlogin -- Anmelden auf anderen Rechnern (remote login)

Syntax:
rlogin Zielrechner [-l Loginname]

Beschreibung:
rlogin versucht, eine Verbindung zum angegebenen Zielrechner aufzubauen und den Benutzer dort anzumelden. Gibt man -l Loginname an, so wird für das Anmelden auf dem Zielrechner der entsprechende Loginname verwendet, sonst der Loginname, den man auf dem lokalen Rechner besitzt. Falls nicht entsprechend konfiguriert (siehe 5.3), wird der Zielrechner im Regelfall ein Paßwort verlangen. Gelingt die Anmeldung, so wird auf dem Zielrechner die Standardshell des Benutzers gestartet und man kann auf dem Rechner wie auf der lokalen Maschine arbeiten.

3.6.5 rsh -- Kommandoausführung auf entfernten Rechnern (remote shell)

Syntax:
rsh Rechnername [-l Benutzername] [Kommando]

Beschreibung:
rsh versucht, eine Verbindung zu dem Zielrechner aufzubauen und dort das angegebene Kommando auszuführen. Falls angegeben, wird dazu der Loginname des Aufrufes verwendet, ansonsten der Loginname des lokalen Benutzers. Gibt man kein Kommando an, verhält sich rsh wie rlogin (siehe 3.6.4). Ansonsten wird die Standardshell des Benutzers auf dem Zielrechner gestartet, die dann das angegebene Kommando ausführt. Zu diesem Zweck ist eine Konfiguration des Zielrechners via .rhosts zwingend erforderlich (siehe 5.3). Die Standardeingabe und die Standardausgabe der rsh und der von ihr ausgeführten Kommandos werden vom lokalen Rechner übernommen, falls nicht explizite Ein- oder Ausgabeumleitungen auf dem Zielrechner stattfinden. Einfacher ausgedrückt: Die Befehlsfolge

rsh hphalle0 ps -ef | grep ksh

führt dazu, daß auf dem Rechner hphalle0 der ps-Aufruf gestartet wird, die Ausgabe umgelenkt wird auf den lokalen Rechner und dort als Eingabe für das Kommando grep dient.

Achtung:
Bei der Verwendung von rsh ist darauf zu achten, daß beim Aufruf des Kommandos die lokale Shell die Kommandozeile interpretiert. Dies betrifft insbesondere Ein- und Ausgabeumleitungen, Pipes und Dateinamensersetzungen. Im Regelfall ist es sinnvoll, das komplette auf dem Zielrechner auszuführende Kommando in Hochkommata (') einzuschließen, um eine Veränderung durch die lokale Shell zu verhindern.

Achtung:
Da auf dem entfernten Rechner keine Login-Shell gestartet wird, ist die Umgebung nicht unbedingt wie gewohnt. Mann muß also ggf. den Pfad für ein Kommando angeben, das auf dem lokalen Rechner automatisch gefunden würde. Es werden auch keine Umgebungsvariablen übertragen!

3.6.6 rcp -- Dateien über Rechner hinweg kopieren (remote copy)

Syntax:
rcp [[Benutzer@]Rechner:]Dateien ... [[Benutzer@]Rechner:]Ziel

Beschreibung:
rcp verhält sich genauso wie cp (siehe 3.2.1), mit dem Unterschied, daß vor die Dateiangabe ein Rechnername geschrieben werden darf. Dieser muß dann von der Dateiangabe durch einen Doppelpunkt abgetrennt werden. Will man auf dem entfernten Rechner ein anderes Login-Kennzeichen als das eigene benutzen, so muß dieses vor dem Rechnernamen stehen und von ihm durch ein @ getrennt werden.

Beispiel:
rcp hphalle0:/tmp/fasel .

kopiert die Datei fasel aus dem Verzeichnis /tmp des Rechners hphalle0 in das aktuelle Verzeichnis des lokalen Rechners.

rcp hphalle0:/tmp/fasel hphalle2:/tmp

kopiert die Datei fasel aus dem Verzeichnis /tmp des Rechner hphalle0 in das Verzeichnis /tmp des Rechners hphalle2.

rcp 'hphalle0:/tmp/*' .

kopiert alle Dateien aus dem Verzeichnis /tmp des Rechners hphalle0 in das aktuelle Verzeichnis des lokalen Rechners. Man beachte, daß der Stern in Hochkommata eingeschlossen sein muß, um zu verhindern, daß er bereits von der lokalen Shell interpretiert wird.

Achtung:
Die korrekte Funktion von rcp hängt davon ab, daß die Datei .rhosts auf dem Zielrechner richtig eingerichtet ist (siehe 5.3). Auch die Angabe eines anderen Benutzernamens setzt voraus, daß dieser in seiner Datei .rhosts den entsprechenden Zugriff gestattet. Dabei ist jedoch zu berücksichtigen, daß man den Zugriff von .rhosts aus nicht auf rcp beschränken kann, sondern damit automatisch auch rsh und rlogin freigibt.

3.7 Diverse Hilfsprogramme

3.7.1 cal -- Anzeige eines Kalenders (calendar)

Befehl:
cal [[Monat] Jahr]

Beschreibung:
Der Kalender des angegebenen Jahres wird angezeigt. Die optionale Angabe eines Monats beschränkt die Ausgabe auf diesen Monat. Die Jahreszahl ist vollständig anzugeben. Ohne Angabe gibt cal das aktuelle Monat aus.

Beispiele:

cal 5 1991
Am Bildschirm erscheint der Kalender vom Mai 1991.

cal 3
Es wird ein Kalender vom Jahr 3 n. Chr. angezeigt.

3.7.2 calendar -- Suche in einem Terminkalender

Befehl:
calendar

Beschreibung:
Der Befehl liest die Datei calendar, welche sich im HOME-Verzeichnis des Benutzers befinden muß und gibt die Zeilen aus, die sich auf das aktuelle Datum oder auf das Datum des nächsten Tages beziehen.

Das Datum kann dabei eines der folgenden Formate haben:

Aug. 12
aug 12
August 12
8/12
*/12
Diese Meldung ist in jedem Monat gültig

Beispiel:
Eine typische calendar-Datei könnte so aussehen:
*/29 - Miete "uberweisen
july 27 - Geburtstag Marcus
Wochenende in Paris    8/27, 8/28, 8/29
7/12  Gaby anrufen!

Wäre heute der 28. August, so würde der calendar-Befehl folgende Ausgabe erzeugen:

*/29 - Miete "uberweisen
Wochenende in Paris    8/27, 8/28, 8/29

3.7.3 script -- Bildschirmausgabe protokollieren

Syntax:
script [Dateiname]

Beschreibung:
Alle nachfolgenden Bildschirmein- und ausgaben werden in der angegebenen Datei gespeichert. Wird kein Dateiname angegeben, so steht das Protokoll in der Datei typescript. Durch Eingabe von Ctrl-D wird das Protokoll beendet.

Hinweis:
In einem xterm steht auch dessen Logging-Funktion zur Verfügung, siehe 4.7.



This document was converted from LaTeX using Karl Ewald's latex2html.