3. Elementare Unix-Befehle
Das Betriebssystem Unix stellt eine große Palette an Befehlen bereit; die
meisten dienen für den Umgang mit Verzeichnissen und Dateien, andere sind
für die Kommunikation (email, netnews) oder Datentransfer (ftp, telnet)
vorgesehen.
Die allgemeine Syntax von Unix-Kommandos sieht folgendermaßen aus:
Befehl [-Optionen] <Dateiname>
Die < >-Klammern stehen dabei für notwendige Angaben, die
nicht weggelassen werden dürfen; eckige []-Klammern umgeben
optionale Parameter, die nicht unbedingt mitangegeben werden müssen. Wenn
an einer Stelle verschiedene Eingabemöglichkeiten bestehen, sind sie mit
einem senkrechten Strich getrennt (Beispiel: y|n - hier kann entweder
ein y oder ein n angegeben werden).
Unix denkt mit: bei vielen Befehlen können Optionen und/oder Dateinamen
weggelassen werden; in diesem Fall setzt Unix automatisch die normalerweise
verwendeten Werte (Defaults) ein.
Bei allen Beispielen steht vorneweg das sog. prompt (auf Deutsch
wundervoll: "Eingabeaufforderung") das normalerweise die Form
"rechner:pfad>" hat (z.B. asterix:/home/obelix/dawin>). Um die Beispiele
übersichtlicher zu halten, werde ich im folgenden das abgekürzte
Prompt "asterix%" verwenden.
Wer ein Beispiel selbst ausprobieren möchte, darf das Prompt nicht mit
eingeben, sondern nur das, was nach dem Prompt steht. Nachdem man eine Zeile
eingetippt hat, schließt man sie mit der <RETURN-Taste> ab - erst
dann fängt der Rechner mit ihrer Bearbeitung an.
- Beispiel:
asterix% who
Einzutippen wäre hier also "who" <RETURN-Taste>.
Außerdem ist zu beachten, daß Unix "case-sensitive" ist,
Groß- und Kleinschreibung sind also nicht egal (z.B. "unix.doc"
und "Unix.doc" sind zwei verschiedene Dateien).
Bevor ihr ein Beispielkommando eingebt, solltet ihr zunächst den Abschnitt
zuende lesen, um den neuen Befehl auch in seiner Gesamtheit verstanden zu
haben, bevor ihr z.B. versehentlich alle eure Dateien löscht ;).
3.1. Die Verzeichnis-Befehle
Wie das Filesystem von Unix verwaltet wird, wurde bereits oben beschrieben.
Hier sollen die Kommandos vorgestellt werden, mit denen man sich im "Baum der
Verzeichnisse" bewegen kann, und Informationen über die Dateien einholt.
Vorweg noch ein paar Worte zu den Dateinamen:
Eine Datei erhält üblicherweise einen zweiteiligen Namen: erst der
eigentliche Name und, durch einen Punkt getrennt, eine Endung
(Extension, Suffix), die über die Art der gespeicherten Daten
Auskunft gibt.
Es gibt ungeschriebene Gesetze, welche Extensions üblicherweise für
bestimmte Daten verwendet werden - mehr dazu im Kapitel 5.
Unix unterscheidet sich von den meisten anderen Betriebssystemen dadurch,
daß die Dateinamen sehr lang sein dürfen (bis zu 256 Zeichen im
Gegensatz zu 8 bei MS-DOS) und beliebig viele Extensions
hintereinandergehängt werden dürfen (z.B. die Endung ".tar.Z"
für komprimierte Archive). Einige Sonderzeichen sollten in Dateinamen
nicht verwendet werden, weil sie für Unix festgelegte Bedeutungen haben:
/ \ * ? > < & | ( ) $ # " ' , ; { }
Die Liste ist wahrscheinlich nicht vollständig, es empfiehlt sich also,
generell keine Sonderzeichen in Filenamen zu verwenden. Leerzeichen dürfen
nicht verwendet werden; das Minuszeichen darf nicht als erstes Zeichen im
Dateinamen vorkommen, da es sonst von vielen Befehlen als Hinweis auf eine
Option misdeutet wird.
Inhaltsverzeichnisse anschauen, der ls-Befehl
Mit ls (für "list") kann man sich die Dateien in einem Inhaltsverzeichnis
anschauen.
- - Syntax:
ls [-alR] [pfad]
- Wenn kein Pfad angegeben wird, zeigt ls den Inhalt des aktuellen Verzeichnisses
an. Die Option "-a" zeigt zusätzlich noch "versteckte" Dateien an, mit
"-l" bekommt man ausführliche Informationen, die Option "-R" (großes
R!) steht für "rekursiv" - ls schaut hierbei automatisch auch in
Unterverzeichnisse.
- - Beispiel:
asterix% ls
- News mbox unix.doc
Der ls-Befehl hat uns also die beiden Dateien "News" und "mbox"
angezeigt, allerdings können wir so noch nichts genaueres über die
Dateien erfahren; dafür gibt es nämlich die Option "-l", die uns zu
jeder Datei detaillierte Informationen liefert.
- - Beispiel:
- asterix% ls -l
- drwxr--r-- 1 ganslan u0dawin 512 Dec 15 11:03 News
- -rw------- 1 ganslan u0dawin 15036 Dec 10 10:15 mbox
- lrw-r--r-- 1 ganslan u0dawin 78121 Jun 15 10:30 unix.doc ->
- /home/obelix/dawin/forusers/unix.doc
- Von rechts nach links bekommen wir also folgende Informationen:
- - Dateiname
- - Uhrzeit und Datum der letzten Änderung
- - Größe der Datei in Bytes
- - Gruppe des Besitzers der Datei
- - User-ID des Besitzers
- - Zahl der "links" auf diese Datei
- - Zugriffsrechte, Dateiform
Die ersten 5 Einträge sollten klar sein, aber was sind "links"? Ein
Link bedeutet, daß eine Datei in mehreren
Verzeichnissen stehen kann (also mehrere Kopfteile für einen Datenteil).
D.h. die physikalisch nur einmal existierende Datei kann über Verbindungen
(=Links) auch von anderen Inhaltsverzeichnissen aus angesprochen werden. Die
Zugriffsrechte wurden bereits weiter oben beschrieben. Für jede
Zugriffsberechtigung sind 3 Zeichen vergeben: die ersten 3 für den User
selbst, die nächsten für seine Gruppe und die letzten 3 für die
Welt. Der Eintrag "rwxr--r--" bedeutet also: Der User kann auf der Datei lesen,
schreiben und ausführen, Gruppe und Welt können sie nur lesen, nicht
aber schreiben oder ausführen.
Der allererste Buchstabe gibt den Dateityp an. Ein "d" steht dabei für
Unterverzeichnisse (z.B. "News" ist eins), normale Dateien sind mit einem "-"
bezeichnet. "Gelinkte" Dateien werden mit einem "l" bezeichnet und
Gerätetreiber (devices) mit einem "c".
Außerdem gibt es noch versteckte Dateien, die mit einem "." im
Dateinamen beginnen. Sie können mit der Option "-a" (für "all")
sichtbar gemacht werden.
- - Beispiel:
asterix% ls -a
- .profile .newsrc News mbox unix.doc
Mit der Option "-R" für rekursiv zeigt ls automatisch auch den
Inhalt von allen im angegebenen Verzeichnis liegenden Unterverzeichnissen an.
D.h. wenn im aktuellen Verzeichnis noch das Directory "News" steht, und darin
die Verzeichnisse "comp" und "alt", so wird ls den Inhalt von allen
diesen Verzeichnissen nacheinander ausgeben.
Oft wird die Dateiliste (gerade bei Optionen wie "-lR") so lang, daß sie
über den Bildschirm rollt, bevor man sie lesen kann. Hierfür kann man
an das Ende des ls-Befehls die Ergänzung "| more" anhängen.
(| ist der senkrechte Strich, meist links unten auf der "><"-Taste. Die Dateiliste wird dann seitenweise
angezeigt (wie das genau funktioniert, wird im Kapitel 4.1. erklärt).
- - Beispiel:
asterix% ls -alR | more
Das aktuelle Inhaltsverzeichnis verändern, der cd-Befehl.
Nach dem login befindet man sich in seinem Home-Verzeichnis, das die
eigenen Daten enthält. Mit dem cd-Befehl kann man nun entweder den
Verzeichnis-Baum hinauf/hinunterlaufen, oder direkt ein Verzeichnis anspringen,
wenn man dessen Namen kennt. Um vom aktuellen Verzeichnis in ein
Unterverzeichnis zu springen, muß man dessen Namen kennen.
- - Syntax:
cd <Name>
- - Beispiel:
- Im aktuellen Verzeichnis befindet sich das Unterverzeichnis "News".
asterix% cd News
- /home/obelix/dawin/News
- Jetzt ist mein aktuelles Verzeichnis "News". Wenn ich wieder in
das übergeordnete Verzeichnis zurückgehen möchte, gebe ich
ein:
asterix% cd ..
- /home/obelix/dawin
Der Name ".." steht also immer für das übergeordnete
"Eltern"-Verzeichnis (parent).
Wenn man ein Verzeichnis direkt anspringen will, das sich nicht im aktuellen
Verzeichnis befindet, muß man seinen Pfad kennen.Der Weg zu einem
Verzeichnis wird "Pfad" genannt und hat folgendes Format:
/Verzeichnis/Unterverzeichnis/Unter-Unterverzeichnis (etc...)
Jedes Verzeichnis wird also durch einen Slash (/) getrennt. Der erste Slash
ganz links hat eine besondere Bedeutung: er steht für das
Wurzelverzeichnis (root).
Ein anderes Sonderzeichen ist die Tilde (~): mit ihr kann man direkt in das
Verzeichnis eines bestimmten Benutzers springen.
- - Beispiel:
asterix% cd ~dawin
- /home/obelix/dawin
- Wenn man nach der Tilde direkt einen slash angibt, landet man automatisch in
seinem eigenenen Home-Verzeichnis:
asterix% cd ~/
- /home/obelix/dawin
- Eine andere Möglichkeit, in sein Heimatverzeichnis zu kommen, ist bei cd
einfach keinen Namen anzugeben (Notanker für Einsteiger ;-)
asterix% cd
- /home/obelix/dawin
Das aktuelle Verzeichnis anzeigen, der pwd-Befehl
Mit pwd kann man sich den Pfad zum aktuellen Verzeichnis anzeigen lassen:
- - Beispiel:
asterix% pwd
- /home/obelix/dawin/News
3.2. Die Datei-Befehle
Nachdem nun klar ist, wie wir uns im Dateibaum bewegen und umschauen
können, sollen nun einige Befehle erklärt werden, mit denen man die
einzelnen Dateien betrachten und verändern kann.
Um eine bestimmte Datei anzusprechen, muß man ihren Namen kennen. Wenn
man aber mehrere Dateien mit ähnlichen Namen bearbeiten will, muß
man nicht den selben Befehl x-mal mit den einzelnen Dateinamen eingeben, denn
es gibt Jokers und Wildcards.
- -der Joker ("?") steht für ein beliebiges Zeichen in
einem Dateinamen
- - un?x: diese Schablone würde sowohl auf "unix", wie auf "unox" passen.
- - die Wildcard ("*") steht für eine Folge von beliebigen
Zeichen
- - *.doc: Diese Schablone paßt auf alle Dateinamen, die mit
".doc" enden)
- - *box*: Diese Schablone paßt auf "mbox", "boxer" etc.
Solche Schablonen können also eine Menge Arbeit ersparen, andererseits
sollte man vorsichtig damit umgehen, denn schnell hat man so versehentlich
nicht nur eine, sondern gleich ein ganzes Bündel von Dateien
unwiderbringlich gelöscht...
Eine Textdatei ausgeben, der cat-Befehl
Mit cat (für concatenate) kann man eine Datei auf den Bildschirm ausgeben
lassen. Die Ausgabe erfolgt allerdings nicht bildschirmweise, so daß
längere Texte schneller über den Bildschirm scrollen, als man sie
lesen kann.
- - Syntax:
cat <datei>
- - Beispiel:
asterix% cat unix.doc
Anfang einer Textdatei anzeigen lassen, der head-Befehl
Der head-Befehl zeigt die ersten 15 Zeilen einer Textdatei an
- - Syntax:
head <datei>
Ende einer Textdatei anzeigen lassen, der tail-Befehl
Mit tail kann man sich die letzten 15 Zeilen einer Textdatei ausgeben lassen.
- - Syntax:
tail <datei>
Eine Datei seitenweise anschauen, der more-Befehl.
Textdateien kann man sich mit dem more-Befehl auf dem Bildschirm anzeigen
lassen. Immer wenn eine Bildschirmseite voll ist, zeigt das Programm
-- More -- (n %)
an und wartet auf einen Tastendruck (daher der Name). Durch Drücken der
<RETURN>-Taste wird jeweils eine neue Zeile angezeigt, mit der
<Leertaste> immer ein ganzer Bildschirm. Außerdem versteht more
noch weitere Tastenkommandos, eine Auflistung kann man mit der Taste "h"
bekommen.
- Die wichtigsten Kommandos sind:
- - "b" geht eine Bildschirmseite zurück
- - "/<Suchtext>" durchsucht die Datei nach einem Text und zeigt die Stelle
an
- - "n" sucht das nächste Auftreten des vorher angegebenen Suchtextes
Eine Datei kopieren, der cp-Befehl.
Mit cp (für "copy") kann man eine Datei kopieren. Die Kopie kann dabei
entweder mit dem selben Namen in ein anderes Verzeichnis gelegt werden, oder im
selben Verzeichnis mit einem neuen Namen abgelegt werden.
- - Syntax:
cp <Quelldatei> <Zielpfad/Zieldatei>
- - Beispiel:
asterix% cp mbox mbox2
- Hier wird eine Kopie der Datei mbox unter dem Namen "mbox2" im aktuellen
Verzeichnis erzeugt.
asterix% cp ~dawin/forusers/unix.doc unix.doc
- Hier wird die Datei unix.doc aus dem Verzeichnis "forusers" des Benutzers mit
der User-ID "dawin" ins aktuelle Verzeichnis kopiert.
asterix% cp unix.doc ~dawin
- Hier wird die Datei unix.doc aus dem aktuellen Verzeichnis in das
Home-Verzeichnis des Users "dawin" kopiert.
Wenn die Quelldatei ein Verzeichnis ist, werden alle Dateien (und
Unterverzeichnisse), die sich darin befinden zum Zielpfad kopiert. Bei manchen
Unices (z.B. Linux) muß hierzu allerdings eine spezielle Option (-r
für rekursiv) angegeben werden.
- - Beispiel:
asterix% cp ~dawin/forusers ~ganslan
- Hier wird das ganze Verzeichnis "forusers" vom User "dawin" in das
Home-Verzeichnis von "ganslan" kopiert.
Dateien linken, der ln-Befehl.
Mit ln (für "link") kann man einen Verweis auf eine Datei erzeugen - aber
was bedeutet das? Der ln-Befehl erzeugt im aktuellen Verzeichnis einen neuen
Eintrag für eine Datei, die bereits existiert. D.h. die gibt es in
Wirklichkeit nur einmal physikalisch, aber sie steht gleichzeitig in
mehreren Verzeichnissen. Mehrere Benutzer können so gleichzeitig von ihren
Directories aus auf eine Datei zugreifen.
- Die Vorteile von ln gegenüber dem Kopieren mit cp sind:
- - Platzsparen (eine kopierte Datei belegt zweimal Plattenplatz)
- - Eine Änderung in der Quelldatei ist automatisch auch in allen
dazugelinkten "virtuellen Kopien" aktiv.
- - Syntax:
ln -s <Quelldatei> [<Zieldatei>]
- Wenn keine Zieldatei angegeben wird, legt ln das link im aktuellen
Verzeichnis unter dem Namen der Quelldatei an.
- - Beispiel:
asterix% ln -s ~dawin/forusers/unix.doc
- Hiermit habe ich in meinem aktuellen Verzeichnis unter dem Namen unix.doc ein
Link auf die Datei ~dawin/forusers/unix.doc angelegt.
- Der ls-Befehl zeigt mit der "-l"-Option auch an, auf welche Quelldatei sich ein
Link bezieht:
asterix% ls -l unix.doc
- lrw-r--r-- 1 ganslan u0dawin 78121 Jun 15 11:03 unix.doc ->
- /home/obelix/dawin/forusers/unix.doc
Der ln-Befehl sollte immer dann angewendet werden, wenn mehrere User gemeinsam
auf eine große Datei zugreifen wollen, die gleichzeitig (wegen der
Bequemlichkeit ;-) direkt in den Verzeichnissen aller Mitglieder stehen soll.
Bei kleineren Dateien kann man ruhig auf das linken verzichten und direkt eine
Kopie machen - bei zu vielen links wird das Filesystem schnell
unübersichtlich (z.B. könnte ja jemand das Original einer vielfach
gelinkten Datei löschen...).
Dateien bewegen und umbenennen, der mv-Befehl.
Mit mv (für "move") können Dateien umbennant, oder in andere
Verzeichnisse verschoben werden. Die Syntax ist dabei die selbe wie bei cp, und
in der Tat macht mv genau dasselbe, nur das es die Quelldatei nach dem kopieren
löscht (intern läuft es etwas anders: die Datei selbst wird nicht
kopiert, es wird nur ihr Kopfteil im Verzeichnis bewegt).
- - Beispiel:
asterix% mv unix.doc unix.txt
- Die Datei "unix.doc" wird in "unix.txt" umbenannt.
asterix% mv unix.doc News
- Die Datei "unix.doc" wird in das Verzeichnis "News" verschoben.
Dateien löschen, der rm-Befehl.
Mit rm (für "remove") können Dateien gelöscht werden - und zwar
unwiederbringlich (ein "undelete" wie unter MS-Dos ist unter Unix nicht
möglich); evtl. besteht die Möglichkeit, versehentlich gelöschte
(wichtige) Dateien von einem Backup des Rechenzentrums
zurückzuholen (man wende sich an den Dispatch ;-).
- - Syntax:
rm <Dateiname>
- - Beispiel:
asterix% rm unix.doc
- löscht die Datei unix.doc
asterix% rm *.test
- löscht alle Dateien mit der Endung ".test" (Vorsicht!)
Wenn der angegebene Dateiname ein Verzeichnis ist, kann er mit rm nicht direkt
gelöscht werden. Dafür ist eigentlich der Befehl rmdir vorgesehen,
der ein leeres Verzeichnis löscht. Allerdings kann mit der Option
"-r" (für "recursive") ein Verzeichnis mit allen darin enthaltenen
Dateien und Unterverzeichnissen gelöscht werden.
- - Beispiel:
asterix% rm -r test
- löscht das gesamte Verzeichnis "test" inklusive Inhalt
(Vorsicht!!)
Damit nicht aus Versehen mal wichtige Dateien verschwinden, gibt es die Option
"-i" (interactive); ist sie gesetzt, so fragt rm bei jeder Datei nach, ob sie
auch wirklich gelöscht werden soll.
- - Beispiel:
asterix% rm -ir test
- löscht das Verzeichnis "test" mit Sicherheitsabfrage für alle darin
enthaltenen Dateien oder Unterverzeichnisse.
Verzeichnisse löschen, der rmdir-Befehl
Mit rmdir (für "remove directory") kann ein Verzeichnis gelöscht
werden, sofern es keine Dateien (oder Unterverzeichnisse enthält), also
völlig leer ist.
- - Syntax:
rmdir <Verzeichnis>
Ein neues Verzeichnis anlegen, der mkdir-Befehl
Mit mkdir (für "make directory") kann man im aktuellen Verzeichnis
ein neues Unterverzeichnis anlegen.
- - Syntax:
mkdir <Verzeichnisname>
- - Beispiel:
asterix% mkdir briefe
- Ein neues Verzeichnis mit dem Namen "briefe" wird im aktuellen Verzeichnis
angelegt.
- Der Verzeichnisname kann natürlich auch ein kompletter Pfad sein, so
daß man auch außerhalb des aktuellen Verzeichnisses ein neues
Unterverzeichnis anlegen kann:
asterix% mkdir /home/obelix/dawin/post
- Hier wird das Unterverzeichnis "post" im Verzeichnis "/home/obelix/dawin" angelegt.
Zugriffsrechte ändern, der chmod-Befehl
Mit chmod können die Zugriffsrechte Lesen, Schreiben und Ausführen
für einzelne (oder auch gleich mehrere) Dateien verändert werden.
Dieser Befehl kann nur vom Besitzer der jeweiligen Datei ausgeführt
werden. Wie bereits oben erklärt, werden die Zugriffsrechte getrennt
für den Besitzer (u=user), seine Gruppe (g=group) und die "Welt"
(o=others) vergeben. Die Abkürzungen der Rechte lauten r (read), w (write)
und x (execute). Der chmod-Befehl erlaubt nun zwei Wege, die Zugriffsrechte von
Dateien zu verändern:
- - Angabe der Rechte als dreistellige Okalzahl
- Die erste Ziffer steht dabei für die Rechte des Besitzers, die zweite
für die seiner Gruppe, die dritte für die der anderen (also genau wie
beim ls-Befehl). Jede Ziffer besteht aus 3 bit, für r, w und x. Für r
setzt man eine 4 ein, für w eine 2 und für x eine 1 und addiert das
ganze zusammen; für rw ergibt sich also 6, für rwx kommt eine 7
heraus. Das ganze wiederholt man dann für gruppe und welt und heraus kommt
eine dreistellige Zahl.
z.B. 700 für rwx------
644 für rw-r--r--
- Da dies alles aber recht mühsam ist, gibt es noch die...
- - Angabe im Klartext
- Dabei können Zugriffsrechte einzeln oder gemeinsam für bestimmte
Gruppen vergeben werden:
- - Format:
<Nutzergruppe(n)><+|-|=><Recht(e)>
- Mit + werden Rechte hinzugefügt, mit - abgezogen.
- Mit = werden die Rechte (unabhängig von den vorher definierten) mit den neuen Werten überschrieben
- - Bespiel:
g+rw
gibt der Gruppe Lese- & Schreibzugriff, der execute-Zugriff bleibt
unverändert.
go-rwx
entzieht Gruppe und Welt alle Zugriffsmöglichkeiten
ug=rwx
gibt Besitzer und Gruppe alle Zugriffe
- - Syntax:
chmod <Rechte> <Datei>
- - Beispiel:
asterix% chmod go-w News
- Das Verzeichnis News kann jetzt von Gruppe und Welt nicht mehr geändert
werden.
asterix% chmod g+r mbox
- Die Datei mbox kann von Gruppenmitgliedern gelesen werden.
asterix% chmod gu=rwx unix.doc
- Die Zugriffsrechte der Datei unix.doc werden für Besitzer und Gruppe
werden auf Lesen, Schreiben und Ausführen gesetzt.
asterix% chmod go-rwx *
- Alle Dateien im aktuellen Verzeichnis können von niemanden außer dem
Besitzer verwendet werden.
Besitzer einer Datei ändern, der chown-Befehl
Mit chown (für change owner) kann man eine Datei einem anderen Besitzer
zuordnen. Dieser Befehl kann nur vom Besitzer der Datei ausgeführt werden
- d.h. wenn man den Owner geändert hat, kann dies nur vom neuen Besitzer
rückgängig gemacht werden. Der chown-Befehl macht dann Sinn, wenn man
eine Datei im eigenen Verzeichnis ausschließlich für einen
bestimmten anderen User zugänglich machen will. Man ändert vorher
also die Zugriffsrechte so, daß nur noch der Besitzer die Datei lesen
kann (chmod go-rwx <Datei>) und ruft anschließend den chown-Befehl
auf.
- - Syntax:
chown <neuer Besitzer> <Datei(en)>
- - Beispiel:
asterix% chown dawin unix.doc
Gruppe einer Datei ändern, der chgrp-Befehl
Mit chgrp (für change group) kann die Gruppenzuordnung einer Datei
geändert werden.
- - Syntax:
chgrp <neue Gruppe> <Datei(en)>
- - Beispiel:
asterix% chgrp u0dawin unix.doc
3.3. Editieren
Um einen Text in eine Datei einzugeben, gibt es unter Unix eine Menge
unterschiedlich komfortabler Möglichkeiten, die (je nach Ausbaugrad des
Systems) nicht immer zur Verfügung stehen müssen. Der einfachste
Editor ist der ex, der zeilenorientiert arbeitet. Eine Stufe komfortabler (aber
auch komplizierter) ist der vi (visual), der bildschirmorientiert ist. Diese
beiden Editoren sind auf jedem Unix-System vorhanden. Meist findet man auch den
joe ("Joe's Own Editor"), der sehr einfach zu bedienen ist und
verständliche online-Hilfen bereitstellt (die Bedienung ist identisch mit
der von Wordstar und vergleichbaren Editoren, z.B. Turbo-Editor, Sidekick,
etc.) Ein wirklich komfortabler und leistungsstarker Editor ist der emacs, der
zudem noch selbsterklärend ist. Auf X-Windows-Systemen gibt es Editoren
wie den aXe, Xcoral oder Xedit, die grafisch, mit Menüs und Mausunterstützung
das Nonplusultra darstellen.
a) ex, der Zeileneditor
Syntax: ex <Dateiname>
Nach dem Aufruf von ex erscheint entweder die Meldung "[New File]" oder eine
Angabe über die Länge der Datei (in Zeilen). Danach erscheint das
command-prompt ":" des ex. In diesem Kommando-Modus können nun
verschiedene Befehle zur Manipulation des Textes eingegeben werden:
p [zeile][,zeile]
- Zeigt die aktuelle Zeile an, oder die Zeile mit der angegebenen Nummer, oder
den Textbereich zwischen zwei Zeilennummern. Das $-Zeichen kann für die
letzte Zeile eingesetzt werden, die erste Zeile trägt die Nummer 1.
[zeile]z
- Zeigt von der aktuellen Zeile an (oder von der angegebenen) eine
Bildschirmseite Text an.
d [zeile][,zeile]
- Löscht die aktuelle Zeile oder den angegebenen Textbereich
[zeile]r <Datei>
- Liest die angegebene Datei und fügt sie hinter die aktuelle Zeile (oder
die angegebene) ein
/<Suchtext>
- Sucht von der aktuellen Zeile an im Text nach dem angegebenen Suchtext; die
erste Zeile, die den Suchtext enthält, wird angezeigt und zur neuen
aktuellen Zeile gemacht. Falls der Suchtext nicht angegeben wird, sucht
ex nach dem zuletzt angegebenen.
s/<suche>/<ersetze>
- Suchtext mit einem Ersatztext austauschen (substitute). Hiermit wird nicht der
ganze Text bearbeitet, sondern nur die jeweils nächste Fundstelle.
g/<suche>/<Befehl>
- Sucht im gesamten Text nach dem Suchtext und führt auf diese Zeilen den
angegebenen Befehl aus. Beispiel: g/hallo/s/hallo/helau - Hiermit wird im
ganzen Text das Wort "hallo" durch "helau" ersetzt.
a
- Fügt Text hinter der aktuellen Zeile ein (append). Nach diesem Befehl
befindet man sich im edit-Modus.
i
- wie "a", fügt den Text aber vor der aktuellen Zeile ein (insert).
c
- Zeile durch neuen Text ersetzen (change).
w [Datei]
- schreibt den Text in die Ausgangsdatei oder in die angegebene (write).
q
- beendet den ex (falls der Text nicht vorher abgespeichert wurde, gibt es eine
Warnung)
q!
- beendet den ex, auch wenn vorher nicht gespeichert wurde
wq [Datei]
- speichert den Text und beendet den ex.
Im edit-Modus können beliebig viele Zeilen hintereinander eingegeben
werden (auch beim "c"-Befehl!) - in den Kommando-Modus kommt man zurück,
indem man als erstes Zeichen einer neuen Zeile einen einzelnen Punkt "."
eingibt.
Bei den Suchbefehlen ist zu beachten, daß als Suchtext eine regular
expression gefordert wird; damit ist ein spezielles Format gemeint,
daß die Suche mit Jokers und Wildcards erlaubt. Dies hat
unter anderem zur Folge, daß Klammern () [] im Suchtext nicht direkt
eingesetzt werden dürfen - statt dessen muß man "\(" oder
"\)" schreiben (Backslash, nicht verwechseln mit dem normalen slash
"/").
- - Beispiel für eine typische ex-session:
asterix% ex test.doc
- [New File]
- :a
- Dies ist ein Test. (ehrlich!)
- Wenn ich gleich einen "." eingebe,
- komme ich wieder in den command-mode
- .
- :wq
b) vi, der Bildschirm-Editor
Der Nachteil des ex ist, daß man, um eine Zeile zu ändern, immer die
ganze Zeile komplett neu eintippen muß (falls man nicht mit dem s-Befehl
einzelne Worte austauschen kann). Dafür ist der ex recht gut
überschaubar, man weiß stets, woran man mit ihm ist (was man vom vi
nicht immer behaupten kann ;-)...
Dafür bietet der vi den Luxus einer bildschirmorientierten Eingabe,
so daß auch einzelne Zeichen innerhalb einer Zeile verändert werden
können.
- Der vi baut auf dem ex auf, so dass sich ingesamt drei Modi ergeben:
- - Kommandomodus des vi:
Verändern der Cursor-Position im Text
- l = ein Zeichen nach links
- h = ein Zeichen nach rechts
- k = eine Zeile nach oben
- j = eine Zeile nach unten
- w = nächstes Wort
- $ = Zeilenende
- <control>+B = eine Seite zurück
- <control>+F = eine Seite vorwärts
- G = Gehe ans Dateiende
- <n>G = Gehe zur Zeile <n>
- /<text> = Suche nach <text>
- n = letzte Suche wiederholen
- - Einfügen von Text:
vi geht in den Eingabemodus:
- i = insert, Text vor der aktuellen Cursorposition einfügen
- a = append, Text hinter der aktuellen Position einfügen
- I oder A = Text am Anfang oder Ende der aktuellen Zeile einfügen
- o oder I = Neue Zeile unter oder über der aktuellen einfügen
- cw = nächstes Wort ersetzen
- cc = aktuelle Zeile ersetzen
- s oder S = aktuelles Zeichen oder ganze Zeile ersetzen
- R = folgenden Text ersetzen
- - Löschen von Text
- dw = aktuelles Wort löschen
- dz oder x = aktuelles Zeichen löschen
- dd = aktuelle Zeile löschen
- <n>dd = lösche die nächsten <n> Zeilen
- u = undo, letzte Änderung rückgängig machen
- - und ausserdem
- J = aktuelle Zeile mit der nächsten zusammenziehen
- ZZ = Text speichern und vi beenden
- - Kommandomodus des ex
- Im vi-Kommandomode gelangt man durch den Doppelpunkt ":" in den
ex-Kommandomodus, in dem alle oben beschriebenen ex-Befehle eingegeben werden
können.
- - Eingabemodus des vi
- Hier kann direkt Text eingegeben werden. Durch Druck der <Escape>-Taste
gelangt man wieder zurück in den vi-Kommandomodus.
- Nach dem Aufruf mit "vi <datei>" befindet man sich im vi-Kommandomodus.
c) emacs, der intelligente Editor
Der emacs ist ein Public-Domain-Programm, das nicht zum Lieferumfang von Unix
gehört. Mit seinen (fast) unbegrenzten Möglichkeiten ist er der
komfortabelste, aber auch komplizierteste (und Speicher in Mengen verbratende)
Editor unter Unix. Glücklicherweise verfügt der emacs über ein
eingebautes Hilfesystem und ein Tutorial, das den Ein- und Umstieg erleichtert;
für besonders entnervte befindet sich in manchen emacs-Versionen das
berühmte Eliza-Programm, der elektronische Psychotherapeut.
Emacs erlaubt unter anderem, mehrere Texte in verschiedenen Fenstern
gleichzeitig zu bearbeiten, besitzt spezielle Modi für das Editieren von
Programmtexten und ist über eine eigene Programmiersprache (Lisp-Dialekt)
erweiterbar.
Alle Befehle des emacs hier aufzuführen, würde den Rahmen dieser
Einführung sprengen; daher sollen hier nur die für den Normalbetrieb
erforderlichen Kommandos erklärt werden.
- Allgemeines:
- - Syntax:
emacs <dateiname>
- Nach dem Start befindet man sich direkt im Eingabemodus
- - Befehle werden über <control>-Sequenzen eingegeben.
- Emacs erkennt zwei unterschiedliche Kontroll-Tasten: zunächst die
<control>-Taste (auch <strg> oder <ctrl>), die
zusammen mit dem folgenden Kontroll-Buchstaben gedrückt werden muss
(Beispiel: <control>+g = <control>-Taste gedrückt halten und
g tippen). Die andere Meta-Kontrolltaste ist <Escape>; hier muss
der folgende Kontrollbuchstabe erst nach dem Loslassen der <Escape>-Taste
eingegeben werden (Beispiel: <Escape>-g = <Escape>-Taste
drücken und loslassen, anschliessend g tippen). Mit <control>+x
gelangt man in den erweiterten (eXtended) Kommandomodus. Emacs erwartet dann
die Eingabe eines weiteren Zeichens oder Kontrollzeichens. Mit <escape>-x
wird der "explizite" erweiterte Kommandomodus aufgerufen; hier können
Kommandos im Klartext eingegeben werden (z.B. "replace-regular-expression").
- - Cursor-Steuerung:
- Der Cursor kann teilweise über die Pfeiltasten
des Terminals bewegt werden (Dies funktioniert allerdings nicht, wenn man sich
von einem PC aus eingeloggt hat). Unter X-Windows kann der Cursor sogar direkt
mit der Maus positioniert werden. Die folgenden Kontroll-Sequenzen
funktionieren in jedem Fall:
- <control>+f = ein Zeichen vorwärts
- <control>+b = ein Zeichen rückwärts
- <escape>-f = ein Wort vorwärts
- <escape>-b = ein Wort rückwarts
- <control>+n = eine Zeile vorwärts
- <control>+p = eine Zeile rückwärts
- <control>+v = eine Seite vorwärts
- <escape>-v = eine Seite rückwärts
- <control>+a = zum Anfang der Zeile
- <control>+e = zum Ende der Zeile
- <escape>-< = zum Textanfang
- <escape>-> = zum Textende
- - Hilfe:
- Mit <control>+h gelangt man in das ausführliche Hilfe-System.
Die Hilfe kann mit <control>+g abgebrochen werden. Falls ein
zusätzliches Hilfs-Textfenster geöffnet wurde, kann dieses mit
<control>+x1 geschlossen werden.
- - Dateien:
- <control>+x <control>+f <Datei> = Datei laden
- <control>+x i <Datei> = Datei einfügen
- <control>+x <control>+s = Text speichern (Emacs
speichert automatisch
alle paar Minuten)
- <control>+x <control>+w <Datei> = Text in <Datei> speichern
- <control>+x <control>+c = Text speichern und
emacs verlassen
- - Suchen:
- <control>+s <Text> = Text vorwärts suchen
- <control>+r <Text> = Text rückwärts suchen
d) joe, der komfortable Editor
Joe's Own Editor wird nicht nur alte Hasen, die sich noch an graubärtige
Programme wie Wordstar erinnern, erfreuen, da die Bedienung auch stark an
andere gängige Editoren (zB. in Borland-Produkten) angelehnt ist;
Greenhorns werden an joe besonders die ausführlichen Hilfsbildschirme
schätzen, die sich leicht in den laufenden Text einblenden lassen.
- - Syntax:
joe <Dateiname>
- - Befehle:
- Die Befehle werden alle über <control>-Sequenzen aufgerufen. Die
wohl wichtigste Sequenz ist <control>+kh = Hilfsmenü aufrufen (mit
der selben Sequenz läßt sich übrigens der Hilfsbildschirm
wieder ausblenden).
- - Cursorsteuerung:
- normalerweise sollten die Cursortasten des Terminals funktionieren, aber die
hier gehen immer:
- <control>+f = ein Zeichen nach rechts
- <control>+b = ein Zeichen nach links
- <control>+n = eine Zeile vorwärts
- <control>+p = eine Zeile rückwärts
- <control>+ku = an den Textanfang
- <control>+kv = an das Textende
- <control>+kl<n> = zu der Zeile mit der Nummer <n>
- - Sonstiges:
- <control>+kx = Text speichern und joe verlassen
- <control>+c = Text nicht speichern und joe abbrechen
Da ich selbst noch keine Erfahrungen mit joe gemacht habe, solltet ihr euch die
restlichen Kommandos (und da gibt es jede Menge!) lieber von joe
persönlich erklären lassen ;-)
3.4. Aufräumen und Platzsparen
Man bedenke, dass auf einem Unix-System manchmal über tausend User
Accounts besitzen, die sich einen begrenzten (!) Plattenspeicher teilen
müssen. Falls sich niemand darum kümmert, unbenötigte Dateien zu
löschen und seinen eigenen Speicherverbrauch in Grenzen zu halten, platzt
selbst die größte Gigabyte-Platte irgendwann aus den Nähten -
irgendwann ist dann der Sysop gezwungen, Quotas zu vergeben, d.h. jeder
User bekommt eine feste Menge Plattenplatz zugewiesen, mit denen er auszukommen
hat. Um diesen verhängnisvollen Schritt zu verhindern, gilt es also,
seinen Platzbedarf so gering wie möglich zu halten - und Unix stellt
dafür einige hilfreiche Befehle zur Verfügung, die das Aufräumen
zum reinen Vergnügen machen ;-)
So kann man zum Beispiel Dateien, die man momentan nicht braucht, die aber
vielleicht später wieder aktuell werden, komprimieren (so daß sie
weniger Platz wegnehmen). Dateien können ausserdem zu "Archiven"
zusammengefaßt werden, die dann leicht auf andere Rechner (oder auf
Disketten) ausgelagert werden können.
Dateien komprimieren, der compress-Befehl
Der compress-Befehl erlaubt es, Dateien extrem zu verkleinern - im Schnitt wird
eine Rate von 50% erreicht, aber bei Bild- oder Textdaten sind auch Werte bis
75% und mehr möglich.
Compress erzeugt eine neue Datei mit der zusätzlichen Endung ".Z", die
Ausgangsdatei wird gelöscht.
Dabei gehen natürlich keine Daten verloren - nach dem Dekomprimieren ist
alles wie vorher (compress erkennt z.B. lange Wiederholungen in Texten und
faßt sie zu kleineren Zeichen zusammen).
- - Syntax:
compress <Dateiname>
- - Beispiel:
asterix% compress unix.doc
Dateien entkomprimieren, der uncompress-Befehl
Mit uncompress kann man Dateien, die mit compress gepackt wurden (erkennbar an
der Endung ".Z"), wieder entpacken. Dabei wird die .Z-Datei gelöscht und
die Originaldatei wieder hergestellt.
- - Syntax:
uncompress <Dateiname>
Komprimierte Dateien ausgeben, der zcat-Befehl
Der zcat-Befehl ermöglicht es, eine gepackte Datei anzuschauen, ohne sie
vorher extra auszupacken - das erledigt zcat sozusagen unterwegs.
- Syntax: zcat <Dateiname>
- Beispiel:
asterix% zcat unix.doc.Z
Dateien packen und entpacken, der pack und unpack-Befehl
Pack und unpack machen im Prinzip dasselbe wie compress und uncompress. Da sie
nach einem anderen Verfahren arbeiten, kommen andere Kompressionsraten dabei
heraus - allerdings erreicht compress meist die stärkeren
Kompressionsraten. Dateien, die mit pack komprimiert wurden, kann man an der
Endung ".z" erkennen.
Dateien "zippen", der gzip und gunzip-Befehl
Das gzip-Programm ("gnu-zip") erreicht zur Zeit die besten Kompressionsraten
überhaupt. Es empfiehlt sich also, nur noch gzip zu verwenden. Mit gzip
gepackte Dateien sind an der Endung ".gz" zu erkennen. Durch Angabe einer Zahl
als Option kann man die Geschwindigkeit & Effektivität der Kompression
einstellen (-0 = schnell, geringe Kompression; -9 = langsam, maximale
Kompression). Mit der Option "-v" (verbose) veranlaßt man gzip,
anzugeben, wie stark er die jeweilige Datei komprimieren konnte.
- - Syntax:
gzip [-0|9v] <Dateiname>
gunzip <Dateiname>
- - Beispiel:
asterix: gzip -9v unix.doc
- asterix: gunzip unix.doc.gz
Ein Archiv anlegen, der tar-Befehl
Mit tar (für "tape archive") kann man viele Dateien und/oder Verzeichnisse
in einer gemeinsamen Datei zusammenfassen. Dies ist z.B. dann sinnvoll, wenn
viele Dateien auf Diskette abgezogen, oder per ftp übertragen werden
sollen - sonst müßte man jede Datei einzeln überspielen. Ein
weiterer Vorteil ist, daß tar die Verzeichnisstruktur übernimmt;
d.h. wenn die Dateien aus dem Archiv extrahiert werden, legt tar automatisch
die richtigen Verzeichnisse und Unterverzeichnisse an.
- - Syntax:
tar <optionen> [archivdatei] <datei> [Datei2] [Datei...n]
- - Optionen:
- c: neues Archiv anlegen (create) - sonst werden die Dateien an ein evtl.
bestehendes Archiv angehängt.
- v: ausführliche Informationen über die Archivierung anzeigen
(verbose) - hat keinen Einfluss auf das Archiv
- x: Dateien aus dem Archiv extrahieren
- t: Inhalt des Archivs anzeigen
- f: Archivname spezifizieren - diese Option muß stets angegeben werden
(sonst landet das Archiv sonstwo - z.B. auf einer Bandmaschine im Keller des RZ
;-)
- z: komprimiertes Archiv bearbeiten (gibt es nur beim neueren gnu-tar)
- In der Praxis werden immer nur drei Kombinationen verwendet:
- cvf: neues Archiv unter dem angegebenen Namen anlegen
- tvf: Inhaltsverzeichnis des angegebenen Archivs ausgeben
- xvf: angegebenes Archiv auspacken
- Bei gnu-tar kann man das ARchiv durch hinzufügen der "z"-Option gleich
in einem Schritt komprimieren oder dekomprimieren.
- - Beispiel:
asterix% tar cvf news.tar News
- Das Verzeichnis "News" wird mitsamt allen darin enthaltenen Dateien und
Unterverzeichnissen in das Archiv "news.tar" zusammengefaßt.
asterix% tar tf news.tar
- Der Inhalt des Archivs news.tar wird angezeigt.
asterix% tar xvf news.tar
- Die Dateien aus dem Archiv "news.tar" werden im aktuellen Verzeichnis
ausgepackt. Nach dem Befehl wird also das Directory "News" samt Inhalt im
aktuellen Verzeichnis stehen.
- - im übrigen:
- Die Optionen werden bei tar ohne vorangestelltes
Minuszeichen angegeben. Archive, die mit tar angelegt wurden, kann man an der
Endung ".tar" erkennen. Allerdings hängt tar diese Endung nicht
automatisch an - das muß man bei der Angabe des Archivnamens selbst
tun.
Nachdem man nun mit tar einen Haufen Dateien zu einem übersichtlichen
Archiv zusammengezogen hat, ist es nur logisch, diese Archiv mit gzip zu
komprimieren:
- - Beispiel:
asterix% gzip -9 news.tar
- Jetzt haben wir die ganzen Daten aus dem Verzeichnis "News" in der
kleinstmöglichen Form zusammengepreßt - es ist nur noch eine Datei
(news.tar.z) übriggeblieben, die bei einem Drittel des Platzbedarfs alles
das enthält, was vorher in zig Dateien und Unterverzeichnissen vorhanden
war. Jetzt können wir also (zur Vollendung) das Original-Verzeichnis
"News" löschen.
asterix% rm -r News
- Falls es uns später gelüstet, mal wieder in unserem alten
"News"-Verzeichnis zu blättern - nichts leichter als das:
asterix% gunzip news.tar.gz
- asterix% tar xvf news.tar
Sich mit dieser Befehlsgruppe auszukennen ist unerläßlich -
Programme und Daten, die über ftp kopiert werden können, sind (fast)
ohne Ausnahme nach diesem Prinzip als komprimierte Archive (.tar.Z) angelegt.
Aber Ausnahmen gibt es natürlich immer: andere Archivformen, die
hauptsächlich auf Atari ST, IBM PC's oder Amigas verwendet werden, kann
man an folgenden Endungen erkennen: .lha, .lzh, .zoo, .zip, .arj, .arc, .ice...
um nur einige zu nennen. Programme, um diese Archive auf den entsprechenden
Rechnern auszupacken, sind im Netz verfügbar, man kann sie per ftp (s.u.)
abrufen. Die meisten Archivformate können mit entsprechenden Programmen
auch auf einem Unix-Rechner ausgepackt werden, hier muß man einfach
ausprobieren, ob das entsprechende Programm (zB. zip, unzip, lharc, zoo)
vorhanden ist.
3.5. Kommunikation
Als Multi-User-System bietet Unix die Möglichkeit, Mitteilungen an andere
Benutzer zu schicken (mail, write) oder sich sogar direkt zu unterhalten
(talk). Über die Anbindung zum Internet können so auch User von
anderen Systemen angesprochen werden. Gerade diese (international nutzbare)
Möglichkeit ist besonders interessant, da so verschickte Briefe meist
innerhalb von 5 Minuten beim Empfänger angekommen sind (und das sogar
Gebührenfrei ;). Unter Internet-Addicts ist die gute alte Bundespost daher
nur noch als "Snail-Mail" (Schneckenpost) bekannt...
a) Informationen über User
Es gibt eine Reihe von Befehlen, die Informationen über die momentan
eingeloggten Benutzer liefern:
Der who-Befehl
Mit who bekommt man eine Liste der aktuell eingeloggten User. Dabei wird
ausserdem angezeigt, von welchem Rechner und zu welcher Uhrzeit sich die
Benutzer eingeloggt haben.
- - Beispiel:
asterix% who
- operator tty0 Mar 04 06:42
- dawin pts/6 Mar 05 20:23 (COMIX.UNI-MUENST)
Der w-Befehl
Der w-Befehl zeigt außerdem an, welche Programme von den Benutzern
momentan gefahren werden, und wie lange die letzte Tastatureingabe
zurückliegt (idle-time).
- - Beispiel:
asterix% w
- 08:42PM up 8464 days, 19:43, 11 users, Runable processes: 31
- User tty login@ idle JCPU PCPU what
- operator tty0 Thu06AM 36 1 0 -ksh
- dawin ttyp1 Thu08AM 1 1 0 emacs
Der finger-Befehl
Mit finger kann man sich zusätzlich zu den Usernamen auch die vollen Namen
der aktuellen Benutzer ausgeben lassen.
- - Syntax:
finger [user][@host]
- - Beispiel:
asterix% finger
- Login Name TTY Idle When Site Info
- operator Operateure t0 36 Thu 06:42
- zyp003 Kursteilnehmer p17 232d Fri 16:30 O03
Mit finger können außerdem detaillierte Informationen über
einzelne User eingeholt werden:
- Syntax: finger <username>
- Beispiel:
asterix% finger dawin
Login name: dawin In real life: DaWIN-Account
Site Info: J09
Directory: /home/obelix/dawin Shell: /bin/ksh
No plan.
Die Zeile "No plan" bedeutet natürlich nicht, daß der
Dawin-User keinen Plan hat - hier wird nur angezeigt, dass dieser User keine
".plan"-Datei in seinem home-Verzeichnis angelegt hat. Diese Datei ist
dafür vorgesehen, seine Adresse oder Telefonnummer (oder auch
Wegbeschreibung = Plan) einzutragen. Da allerdings jeder [potentielle
Telefon-Terrorist] auf diese Informationen zugreifen kann, ist fraglich, ob man
seine Daten dort eintragen sollte... Viele Leute tragen dort auch einfach nur
ihr Motto oder irgendein witziges Zitat ein.
Die Zeile "Site Info" bezieht sich auf das Ausgabefach im Rechenzentrum, in dem
etwaige Printouts abzuholen sind.
Hinter der "Shell" verbirgt sich der Kommando-Interpreter von Unix, der vom
jeweiligen User benutzt wird. Es gibt jede Menge Shells mit unterschiedlichen
Vor- und Nachteilen.
Außerdem kann man finger auch auf andere Rechner am Internet anwenden und
bekommt dann angezeigt, welche User auf diesem Rechner eingeloggt sind. Es
kommt allerdings vor, daß diese Möglichkeit gesperrt ist (in diesem
Fall erscheint "Connection refused.")
- - Syntax:
finger @<hostname>
- - Beispiel:
asterix% finger @math.uni-muenster.de
Natürlich kann man finger auch auf einen User auf einem Netzrechner
anwenden:
- - Syntax:
finger <username>@<hostname>
- - Beispiel:
asterix% finger mud@math.uni-muenster.de
b) Informationen mit eingeloggten Usern austauschen
Der write-Befehl
Mit write kann man eine Botschaft an einen User abschicken, der zur selben Zeit
auf dem selben Rechner eingeloggt ist. Die Information fließt dabei nur
in eine Richtung (nur vom Sender zum Empfänger). Nachdem man den
write-Befehl gestartet hat, erscheint alles, was man ab diesem
Zeitpunkt eingibt, auf dem Bildschirm des angegebenen Users, bis man den Befehl
mit <control>+d beendet.
- - Syntax:
write <username> [schnittstelle]
- Der Parameter "Schnittstelle" kann auch weggelassen werden; er ist dafür
vorgesehen, die Botschaft an ein bestimmtes Fenster zu schicken, wenn der
Empfänger mehrfach eingeloggt ist (wird beim who-Befehl angezeigt).
- - Beispiel:
asterix% write dawin
- asterix% write dawin pts/2
Der talk-Befehl
Mit talk kann man ein Gespräch mit einem zur selben Zeit eingeloggten User
auf einem beliebigen am Netz angeschlossenen Rechner führen. Der
Empfänger erhält dann eine Meldung, daß er "angerufen" wurde,
sowie die Aufforderung, durch seinerseitige Eingabe des talk-Befehls das
Gespräch anzunehmen. Der Bildschirm wird dann in zwei Hälften
aufgeteilt, in der oberen erscheint das, was man selbst eingibt, in der unteren
der Input des Angerufenen.
Es kann Probleme mit dem Bildschirmaufbau geben, wenn die Terminaleinstellung
nicht stimmt; manchmal hilft es, "set term=vt100" einzugeben und es noch einmal
zu probieren.
- - Syntax:
talk <username>[@hostname] [schnittstelle]
- - Beispiel:
asterix% talk dawin
- asterix% talk dawin@asterix.uni-muenster.de
Der mesg-Befehl
Da es durchaus Phasen gibt, in denen man möglichst ungestört am
Rechner arbeiten will (!), kann man mit dem mesg-Befehl "die Telefonleitung
durchschneiden". Sämtliche write- und talk-Befehle für einen selbst
werden dann abgefangen, himmlische Ruhe breitet sich aus... (Man selbst kann
natürlich weiterhin write- und talk-Befehle an andere User absetzen ;)
Von der Sperre ausgenommen sind Meldungen des Systemoperators (root),
z.B. Ankündigungen eines Shutdowns.
- - Syntax:
mesg <y|n>
- - Beispiel:
asterix% mesg n
- hiermit schalte ich die Kommunikation für mich ab...
asterix% mesg y
- ...und so bin ich wieder erreichbar.
c) Elektronische Post verschicken und lesen
Mit Hilfe des mail-Kommandos kann man Texte an User auf einem beliebigen
Rechner im Internet und anderen Datennetzen verschicken. Vorraussetzung ist
natürlich, daß Username und Internetadresse dessen Rechners bekannt
sind. Es ist auch möglich, Programme oder andere Binärdaten (z.B.
Bilder) über email zu verschicken; die Daten müssen allerdings vorher
in ein spezielles Format umgewandelt werden (mit Hilfe des uuencode-Programms).
Ausserdem gibt es Beschränkungen über die Länge der zu
verschickenden Dateien (spätestens ab einer Größe von 64
Kilobyte ist mit Problemen zu rechnen).
Als Alternative zum mail-Kommando gibt es noch den elm - ein Programm, das
durch interaktive Menüs den Benutzer recht übersichtlich durch den
mail-Dschungel führt (ist allerdings nicht auf allen Unix-Systemen
vorhanden).
Das mail-Programm hat zwei Modi, je nachdem ob man selber Post verschicken
will, oder die angekommenen Briefe lesen möchte.
Elektronische Post verschicken
Um einen Brief abzuschicken startet man mail mit dem Usernamen des
Empfängers als Parameter. Wenn der User auf einem "fremden" Netzrechner
ist, muß außerdem in bekannter Weise der Hostname des Zielrechners
angegeben werden. Wenn der Brief an mehrere User geschickt werden soll,
können auch mehrere User- und Hostnamen (durch Leerzeichen getrennt)
angegeben werden.
Das mail-Programm fragt dann nach dem Thema (Subject) des Briefs. Falls
man sich auf einen anderen Brief oder Artikel bezieht, ist es üblich, das
Subject mit "Re: <bezug>" zu beginnen.
Anschließend kann man den Text des Briefes eingeben. Der Eingabemodus
wird durch Eingabe von <control>+d oder durch einen einzelnen Punkt (.)
als ersten und einzigen Buchstaben einer neuen Zeile beendet. Korrekturen sind
hier nur innerhalb der gerade einzugebenden Zeile möglich; das
mail-Programm kann aber mit der Tastenkombination <control>+c (zweimal)
abgebrochen werden.
Danach fragt mail, welche User eine Kopie ("Cc" = Carbon-Copy) des Briefes
erhalten sollen. Hier können (durch Leerzeichen getrennt) mehrere
User@host-Adressen eingegeben werden. Wenn keine Kopien benötigt werden,
drückt man einfach <return>.
Damit ist der Brief komplett und wird losgeschickt; normalerweise ist er
innerhalb der nächsten 5-10 Minuten bei den Empfängern angekommen.
Falls die Adresse fehlerhaft war, oder die Rechnerverbindung nicht hergestellt
werden konnte, wird der Brief an den Absender zurückgeschickt. Falls man
das mail-Programm mit <control>+c abgebrochen hat, wird der bis dahin
eingegebene Teil des Briefes im aktuellen Verzeichnis in der Datei
"dead.letter" abgelegt.
- - Syntax:
mail <username>[@hostname]
- - Beispiel:
asterix% mail dawin@uni-muenster.de
- Subject: unix.doc
- Hallo!
-
- Also eure Unix-Dokumentation ist ja echt Spitze, usw. usf...
- .
- Cc:
Es ist auch möglich, Dateien zu verschicken, die man vorher mit einem
Editor fertiggestellt hat. Da man ja im mail-Programm seine Tippfehler nur
begrenzt korrigieren kann (und nachträglich keine Zeilen einfügen
kann), ist dies sicherlich die bessere Methode. In der ersten Zeile der Datei
sollte das Subject stehen, danach kommt wie gewohnt der Text des Briefes, der
nicht mit einem Punkt oder <control>+d enden muß.
Auf diesem Weg können auch Programme oder Binärdaten verschickt
werden, die vorher mit uuencode konvertiert worden sind (der
Empfänger kann die Daten mit uudecode wieder lesbar machen).
- - Syntax:
mail <username>[@hostname] < dateiname
- Das "<"-Zeichen vor dem Dateinamen sagt Unix, dass das mail-Programm seinen
Input aus der angegebenen Datei lesen soll (näheres dazu in Kapitel
4.1.).
- - Beispiel:
asterix% mail dawin@uni-muenster.de < brief
Die angekommene Post lesen
Wenn Post angekommen ist, wird dies beim einloggen durch die Meldung "[YOU HAVE
NEW MAIL]" angezeigt. Durch Aufruf des "mail"-Programms ohne Parameter kann man
sich die Briefe anzeigen lassen.
Nach dem Aufruf zeigt das mail-Programm dann die Subject-Zeilen aller
vorliegenden Briefe an, wobei jeder Brief eine Nummer und einen
Status-Buchstaben erhält.
- Die Statusbuchstaben haben folgende Bedeutung:
- N = new, neuer Brief
- U = unread, alter Brief, der noch nicht gelesen wurde
- R = read, alter Brief, der bereits gelesen wurde
- > = aktueller Brief, auf den sich die mail-Kommandos beziehen
Anschließend befindet sich das mail-Programm im Kommando-Modus
(angezeigt durch das mail-prompt "&"). Hier kann man sich durch
verschiedene Befehle die Briefe anzeigen lassen, speichern oder auch
löschen.
- - mail-Befehle:
- h: Zeigt die Subject-Zeilen und Absender aller vorliegenden Briefe an (header)
- p [n]: Zeigt den aktuellen Brief oder den mit der Nummer n an (print)
- more [n]: wie p, zeigt aber Bildschirmseitenweise an (nützlich für längere
Briefe)
- r <user>[@host]: aktuellen Brief beantworten (reply).
- s <Datei>: Speichert den aktuellen Brief in der angegebenen Datei, wobei die
Header-Informationen (Absender etc.) mitgespeichert werden (save).
- w <Datei>: wie s, speichert aber den Header nicht mit ab (write)
- d [n]: Löscht den aktuellen Brief oder den mit der Nummer n (wird erst
ausgeführt, wenn mail mit "q" verlassen wird) (delete).
- q: mail verlassen und Änderungen übernehmen. Alle gelesenen Briefe
werden automatisch in die Datei "mbox" im home-Verzeichnis geschrieben. Mit
preserve gehaltene Briefe werden mit dem Status "R" versehen und nicht in die
mbox gespeichert (beim nächsten mail-Aufruf erscheinen sie wieder). Mit d
gelöschte Briefe werden zu diesem Zeitpunkt aus der mail-Datei entfernt
(quit).
- x: mail verlassen, aber die mail-Datei nicht verändern. Egal, ob Briefe
gelesen, gelöscht oder gehalten wurden - die mail-Datei wird nicht
verändert; beim nächsten mail-Aufruf ist dann alles beim
alten (exit).
Im Alltag wird man die mail-Befehle also folgendermassen nutzen:
Nachdem man sich einen Brief mit p oder more angesehen hat, kann man ihn ggf.
mit s speichern (wenn er wichtig war), sonst löscht man ihn mit d und geht
zum nächsten Brief weiter. Briefe, die bis zum Verlassen des
mail-Programms mit q nicht gelöscht wurden, werden in die mbox-Datei
geschrieben, die schnell beachtliche Ausmaße annehmen kann. Hin und
wieder sollte man diese Datei also nach Datenmüll durchforsten.
- - Beispiel:
asterix% mail
- Mail [5.2 UCB] [IBM AIX 3.2] Type ? for help.
- "/usr/spool/mail/dawin": 1 message 1 new
- >N 1 ganslan Tue Mar 9 20:15 12/346 "unix-dokumentation"
- & p
- Message 1:
- From ganslan Tue Mar 9 20:15:04 1993
- Date: Tue, 9 Mar 1993 20:14:56 +0100
- From: ganslan (Thomas Ganslandt)
- To: dawin
- Subject: unix-dokumentation
-
- Hallo!
- Also ich hätte da folgende Ergänzung anzubringen etc. ppque.
-
- & h
- > 1 ganslan Tue Mar 9 20:15 12/346 "unix-dokumentation"
- & s mail/unix.comments
- mail/unix.comments [appended]
- & d
- & q
Mail managen mit elm
Der elm bietet eine komfortable Menüoberfläche, die gerade
Einsteigern den Umgang mit der elektronischen Post stark erleichtern sollte.
Aus einer Liste der gespeicherten Briefe kann der Benutzer einzelne Nachrichten
auswählen, die er dann lesen, beantworten, löschen usw. kann. Die
Befehle bestehen aus einfachen Buchstaben, die jeweils am unteren
Bildschirmrand erläutert werden. Außerdem bietet der elm noch eine
mehr oder weniger ausführliche Hilfsfunktion an, die mit der "?"-Taste
aufgerufen werden kann.
- - Optionen:
- -f <Briefdatei> = elm mit einer Briefdatei öffnen. Die Briefe
werden aus der angegebenen Datei gelesen.
- - elm-Befehle:
- j = nächste Nachricht auswählen
- k = vorherige Nachricht wählen
- <Nr> = Nachricht mit der Nummer <Nr> auswählen
- <return> = ausgewählte Nachricht lesen
- s = Nachricht speichern (ein "=" am Anfang des Folders hängt die Nachricht hinten an)
- d = Nachricht löschen (delete)
- u = Löschung rückgängig machen (undelete)
- r = Brief beantworten (reply)
- f = Brief weiterschicken (forward)
- m = neuen Brief abschicken (mail)
- ? = Hilfe
- q = elm verlassen (quit)
3.6. Netz-Befehle
Durch die Anbindung ans Internet können weltweit über eine Million
Rechner direkt angesprochen werden. Das Angebot reicht dabei von Datenbanken
über Informationsdienste und Shareware-Sammlungen bis zu interaktiven
Spielen. Es gibt prinzipiell zwei Möglichkeiten des Zugriffs auf Rechner
im Internet: einerseits die direkte, interaktive Verbindung (telnet, rlogin),
andererseits die Übertragung ausgewählter Dateien (ftp).
Der Zielrechner im Internet (remote host) wird über die bereits
weiter oben erklärte vierteilige Netzadresse bzw. den symbolischen Namen
angesprochen.
a) interaktive Verbindung
Der telnet-Befehl
Mit telnet kann ein beliebiger Rechner im Internet so angesprochen werden, als
ob man direkt an dessen Konsole sitzt. Nachdem die Verbindung hergestellt ist,
erscheint die normale login-Meldung des Rechners. Um hier weiter in den Rechner
hereinzukommen, muss man dort einen Account besitzen.
Zusätzlich zur Adresse des Zielrechners kann noch eine Port-Nummer
angegeben werden. Hierbei wird eine Verbindung zu einem speziellen Programm auf
dem Zielrechner hergestellt (z.B. bei Datenbanken; hier ist z.T. zum einloggen
kein account nötig).
Der telnet-Befehl gibt beim Herstellen der Verbindung an, welche
Tastenkombination als Escape-character verwendet wird (meistens
<control>+]). Über diese Tastenkombination kann man während der
Verbindung in den Kommando-Modus des telnet-Programms wechseln.
- - Syntax:
telnet <hostname | internet-adresse> [port]
- - Beispiel:
asterix% telnet comix.uni-muenster.de
- asterix% telnet pascal.uni-muenster.de 4711
- - telnet-Kommandos
- Hier sollen nur die drei wichtigsten telnet-Kommandos aufgeführt werden:
- help: Hilfe über alle telnet-Kommandos anzeigen
- quit: Verbindung abbrechen (falls z.B. der remote host abgestürzt ist)
- z: telnet suspendieren (d.h. vorübergehend unterbrechen =>
näheres siehe job-control)
b) Übertragung von Dateien über das Internet
Der ftp-Befehl
Mit ftp (file transfer protocol) wird eine Verbindung zu einem Netzrechner
aufgebaut, die speziell auf die Übertragung von Dateien ausgerichtet ist.
Man hat dabei keinen direkten Zugriff auf die Unix-Befehle des remote
host; es stehen die Verzeichnis-Befehle zur Verfügung, um sich durch
den Dateibaum zu bewegen und Inhaltsverzeichnisse einzusehen, sowie einige
spezielle ftp-Befehle. Wenn man auf dem remote host einen account besitzt, kann
man auf alle Dateien zugreifen, die man auch direkt unter Unix zur
Verfügung hat. Falls es sich bei dem Zielrechner um einen
anonymous-ftp-server handelt, kann man ohne account auf einen speziellen
Bereich zugreifen, der öffentlich zugängliche (frei kopierbare)
Software enthält.
- - Syntax:
ftp <hostname | internet-adresse> [port]
- - ftp-Befehle:
- help: Hilfe über alle ftp-Befehle anzeigen
- ls: Inhalt des aktuellen Verzeichnisses anzeigen
- dir: ausführliches Inhaltsverzeichnis mit Dateigrössen
- cd: Verzeichnis wechseln
- bin: auf binäre Übertragung umschalten (wichtig! wenn man's vergißt,
kommt nur Datenmüll rüber, und man kann wieder von vorne anfangen)
- ascii: auf text-Übertragung zurückschalten (günstig, wenn Texte
zwischen unterschiedlichen Rechnertypen übertragen werden, zB. Unix
<=> MS-Dos)
- get <Datei> [localname]: angegebene Datei auf den Heimatrechner übertragen; wenn [localname]
angegeben ist, wird die Datei unter diesem Namen angelegt, sonst unter dem
gleichen, den sie auf dem remote host hatte.
- put <Datei> [remotename]: Datei auf den remote host übertragen
- mget, mput: mehrere Dateien über Jokers und Wildcards (?*) übertragen (bei
get/put dürfen keine Platzhalter verwendet werden). Es wird bei jeder
Datei einzeln nachgefragt, ob sie übertragen werden soll.
- prompt: Nachfrage nach einzelnen Dateien bei mget/mput abschalten.
- quit: ftp beenden
Der Uni-Interne ftp-Server von Münster ist einfach unter dem Hostnamen ftp
zu erreichen (bei anderen Unis meist analog, z.B. ftp.tu-clausthal.de). Um auf
anonyme ftp-server zuzugreifen, muss man sich unter dem Usernamen ftp oder
anonymous einloggen; als password gibt man seine email-adresse an.
- - Beispiel:
asterix% ftp ftp
- Connected to VON-NEUM.UNI-MUENSTER.DE.
- 220 von-neumann FTP server (Tue Mar 16 14:34:09 MET 1993) ready.
- Name (ftp:zyc044): ftp
- 331 Guest login ok, send e-mail address as password.
- Password: dawin@uni-muenster.de
- 230-Westfälische Wilhelms-Universität (WWU), Münster, Germany
- 230- (Tue Mar 16 21:15:46 1993)
- 230-Welcome to the WWU-ftp-server!
- ftp> cd pub
- 250 CWD command successful.
- ftp> ls
- 200 PORT command successful.
- 150 Opening ASCII mode data connection for file list.
- Monty_Python
- Prime-Time-Freeware
- 226 Transfer complete.
- ftp> cd Monty_Python
- 250 CWD command successful.
- ftp> bin
- 200 Type set to I.
- ftp> get blckmail.Z
- 200 PORT command successful.
- 150 Opening BINARY mode data connection for blckmail.Z (2337 bytes).
- 226 Transfer complete.
- 2337 bytes received in 0.02554 seconds (89.38 Kbytes/s)
- ftp> quit
- 221 Goodbye.
Bei der Verwendung von ftp sollte man sich darüber im klaren sein, dass
die Übertragung von großen Datenmengen (speziell über lange
Strecken) das Netz stark belastet. Man sollte also, bevor man Daten aus
Übersee kopiert, zunächst prüfen, ob die Daten nicht Uni-intern,
in Deutschland oder einem Rechner im benachbarten Europa zur Verfügung
stehen.
Um herauszufinden, auf welchen ftp-servern eine bestimmte Datei vorhanden ist,
gibt es den "Archie"-Service, eine Datenbank, die den aktuellen Stand der
meisten ftp-server (weltweit) beinhaltet. Auf asterix ist hierfür der
archie-Befehl vorhanden:
- - Syntax:
archie [-Optionen] <suchwort>
- - Optionen:
- -max <n> = maximal n Fundstellen anzeigen
- -s = Suchwort auch als Teil (substring) eines Namens erkennen
- - Beispiel:
asterix: archie -max 4 linux
- __Bitte warten, die Abfrage kann einige Zeit dauern__
-
- Datum Bytes Server: Dateipfad
- 1992-05-06 512 flash.bellcore.com /pub/mgr/linux
- 1993-04-03 1024 ftp.denet.dk /pub/OS/linux
- 1993-04-04 512 f.ms.uky.edu /pub3/linux
- 1993-04-04 512 hydra.helsinki.fi /outgoing/risto/linux
Auf Rechnern ohne archie-Kommando kann man mit telnet (z.B. telnet
archie.tu-darmstadt.de) einen der archie-Server anwählen, als login-namen
gibt man einfach archie ein. Unter X-Windows gibt es den archie-client xarchie,
der eine grafische Benutzeroberfläche anbietet (genial einfach zu
bedienen). Ansonsten kann man mit dem help-Befehl in archie Informationen
über die Bedienung des Archivs bekommen.