Der Brückenkurs ist kein Unix-Kurs. Wir werden uns hier nur mit einigen Grundlagen und den wichtigsten Kommandos beschäftigen. Als umfassende Einführung für Autodidakten findet man im WWW unter die UNIXhelp for Users (engl.), die Kurzeinführung in Unix, oder die Unix-Kurzanleitung. Außerdem bietet die Zentraleinrichtung Datenverarbeitung der FU (ZEDAT) entsprechende Kurse an.
Um mit den Unix-Befehlen zu arbeiten, mache man sich eine sog. shell auf. Dies geschieht z.B., indem man auf das Bildchen mit dem Computer am unteren Bildschirmrand mit der Maus klickt. Grob gesagt ist eine Shell ein Fenster, in dem man auf einer Kommandozeile Befehle eingeben kann. Am Anfang der Zeile steht der sog. prompt, die Eingabeaufforderung. Hier ist er standardmäßig so eingestellt, daß Benutzername und Rechnername angezeigt werden:
myname@computer >Hinter der spitzen Klammer > werden Eingaben, z.B. ein Programmaufruf, erwartet.
myname@computer > ls *.txtDurch Drücken der Taste Return (oder Enter oder Eingabe) wird das Programm ge-startet (der Befehl ausgeführt). Die Ausgabe des Programms erscheint ebenfalls im Shell-Fenster oder es wird (bei fensterbasierten Programmen) ein neues Fenster geöffnet.
In den folgenden Beispielen wird die Eingabeaufforderung in der Regel nicht mit angegeben.
Was eine Datei ist, davon hat wohl jeder eine zumindest vage Vorstellung. Unter Unix können Dateien Daten (Bilder, Texte, Daten zur Konfiguration ) enthalten, sie können aber auch ausführbare Programme sein. Sie haben einen Namen , der unter Unix (fast) beliebig lang sein kann und auch Sonderzeichen enthalten darf. Groß- und Kleinschreibung werden (anders als bei DOS) unterschieden. Häufig aber nicht zwingend endet der Name mit einem Punkt und einigen wenigen weiteren Buchstaben, der Namenserweiterung. Diese ist ein Indikator für den Inhalt oder das Format der Datei. Beispiele:
brief.txt, letter_to_mom.text, Porträt.gif, EinEllenlangerDateinameMitVielenSonderzeichenWie(){}_!%Dateien sind in sog. Verzeichnissen (directories) abgelegt (s. Abschnitt 3.3). Um sich eine Liste aller Dateien eines Verzeichnisses anzeigen zu lassen, gibt man den Befehl ls (list) ein:
lsMöchte man mehr Informationen über die Dateien erhalten, so kann man dies mit
ls -lerreichen. Es werden dann Zugriffsrechte (s. Abschnitt 3.4), Eigentümer, Gruppe des Eigentümers, Dateigröße und Datum und Uhrzeit der letzten Änderung aufgelistet.
Zum Löschen von Dateien dient der Befehl rm (remove) :
rm brief.txtlöscht die Datei brief.txt ohne Rückfrage und unwiederruflich.3 Zur Sicherheit kann man auch
rm -i brief.txteingeben. Der sog. Schalter -i weist rm an, interaktiv, d.h. mit Rückfrage zu löschen.4 Wird mit dem FileManager gelöscht, landen die Dateien zunächst im ,,Papierkorb`` (Waste). Von hier können sie wieder zurückgeholt werden.
(Daten-)Dateien können verschieden Typen (Graphik, Text, Video) und unterschiedliche Formate (gif-Bild, Word-Dokument, QuickTime Video) haben. Ein Indikator für das Typ und/oder Format ist die Namenserweiterung. Verschiedene Programme dienen dazu, verschiedene Formate anzusehen oder zu bearbeiten. Bilder lassen sich z.B. mit xv betrachten und (mit Einschränkungen) bearbeiten. Alle Klartextformate können mit more (oder etwas komfortabler less) angezeigt werden. Direkt drucken lassen sich PostScript-Dateien. Die folgende Tabelle verzeichnet für eine Auswahl von Formaten geeignete Programme.
Typ | Format | Erweiterung | Betrachter | Kommentar |
---|---|---|---|---|
Klartext (ASCII) | diverse | cat, more, | ||
less, dtpad | ||||
HTML | .html | netscape | WWW-Dokument | |
Bilder | gif-Bitmap | .gif | xv | xv konvertiert auch |
jpeg-Bitmap | .jpeg | xv | ||
PostScript | .eps | xv, gv | ||
Druckdatei | PostScript | .ps, .eps | gv | |
lpr | zum Drucken | |||
Komprimiert | gzip | .gz | gunzip | |
compress | .Z | uncompress | ||
Archiv | tar | .tar | tar -xvf |
Ist für eine Datei unbekannt, welches Format sie hat, hilft manchmal das Programm file weiter. Beispiel:
file brief.ps PostScript document
Eine Kopie einer Datei wird mit dem Befehl cp copy) angelegt:
cp file1 file2
Dateien können auch unter alternativen Namen angesprochen werden. Dies erreicht man durch sog. links , die man mit dem Befehl ln anlegt. Möchte man die Datei picture.gif auch unter bild.gif ansprechen, so erreicht man dies mit
ln picture.gif bild.gif(Allgemein: ln quelle ziel). Dieser sog. hard link setzt voraus, daß Quelle und Ziel auf der selben Festplatte liegen. Ist dies nicht der Fall, oder möchte man einen Link auf ein Verzeichnis setzen, so legt man einen soft link an:
ln -s Mail briefe
Es gibt verschiedene Varianten, Programme unter Unix zu starten. Das CDE-Windows-System erlaubt, interaktiv mittels Maus und Menüauswahl Programme aufzurufen. Dies sind meistens selbst interaktive, Maus- und Fenster-orientierte Programme. Alternativ können Programme durch Eingabe ihres Namens auf der Kommandozeile gestartet werden. Beispiel:
lsstartet das Programm (oder Kommando) ls. Viele (die meisten) Programme erlauben oder erwarten eine Reihe von Parametern.
ls *.txtlistet zum Beispiel die Dateien mit der Endung txt auf. Der Stern, ein sog. wildcard character oder Platzhalter steht für eine beliebige Folge von Zeichen (b*: alle Dateien, die mit b beginnen; b*.txt: alle Dateien, die mit b beginnen und mit .txt enden; *xyz*: alle Dateien, die xyz irgendwo im Namen haben). *.txt ist ein Programmparameter. Gelegentlich sind mehrere Parameter erlaubt.
ls *.txt *.giflistet Texte und Bilder im aktuellen Verzeichnis auf.
mv brief.bak brief.txtbenennt die Sicherungsdatei brief.bak in brief.txt um.
Das Verhalten von Programmen kann durch sog. switches beeinflußt werden. In der Regel werden diese Schalter durch ein vorgestelltes Minus eingegeben.
ls -l -alistet alle Dateien im Verzeichnis auf, und zwar ausführlich (-l) und auch die versteckten Dateien (-a), also solche, deren Name mit einem Punkt . beginnt (s. Abschnitt 3.11). Der obige Befehl kann auch abgekürzt werden mit
ls -laManche Switches erfordern Parameter.
lpr -P lsu filename.psdruckt filename.ps auf dem Drucker lsu. lsu ist der Parameter für den Switch -P, der lpr mitteilt, welchen Drucker es anzusteuern hat.
Hilfe zu Programmen/Befehlen, zu Funktion, Aufruf, möglichen Switches usw. erhält man mit man:
man ls
Wie unter DOS und Windows sind unter Unix die Dateien in sog. Verzeichnissen oder directories organisiert. Die Verzeichnisse sind baumartig strukturiert. Es gibt ein Wurzelverzeichnis (root directory) /, unter das alle anderen Verzeichnisse untergeordnet sind. In der hiesigen Installation wird die nächste Ebene von u.a. folgenden Verzeichnissen gebildet:
Verzeichnis | Funktion |
bin | enthält Systemprogramme |
dev | Geräte (Tastatur, Maus, Festplatten, Disketten ) |
etc | Systemkonfigurationen |
home | Benutzerverzeichnisse |
opt | diverse Programmpakete |
usr | Programme und Bibliotheken |
var | Systembereich für Druck, EMail u.v.m. |
Die Hierarchiestufen werden durch / getrennt (Anmerkung: unter DOS durch
\
). Das Heimatverzeichnis des Studenten schmidt wird z.B.
durch /home/lehrnix/schmidt5 angesprochen, das
vorliegende Skript für den Brückenkurs liegt im Verzeichnis
/opt/htdocs/lehre/WS98/brueckenkurs/.
Besondere Verzeichnisse sind die
Heimatverzeichnisse der Benutzer. Mein
eigenes Verzeichnis kann ich durch ~
ansprechen (nicht in jeder
Shell möglich). Bsp.:
ls ~listet mir den Inhalt meines Heimatverzeichnisses auf, unabhängig davon, in welchem Verzeichnis ich mich gerade befinde. Heimatverzeichnisse anderer Benutzer werden durch
~
username angegeben. Bsp.:
ls ~schmidt
Zum Wechseln zwischen Verzeichnissen dient das Kommando
cd . Mit
cd / wechselt man ins Hauptverzeichnis, mit
cd ~
schmidt/public in das Verzeichnis public des Benutzers
schmidt. cd ohne Parameter wechselt ins eigene
Heimatverzeichnis. Mit cd .. kommt man eine Hierarchieebene
höher. (Das unter DOS übliche cd.. ohne Leerfeld funktioniert
hier nicht.) Mit dem einfachen Punkt . spricht man das aktuelle
Verzeichnis an.
Man unterscheidet zwischen absoluten und relativen Verzeichnis- oder Pfadangaben. Wird ein Pfad (Verzeichnisname) in einer Form angegeben, bei der es keine Rolle spielt, in welchem Verzeichnis man sich gerade befindet, spricht man von absoluten Pfaden. Beispiele sind alle Pfade, die mit / beginnen. Sie gehen vom Hauptverzeichnis aus. Relative Pfade gehen vom aktuellen Verzeichnis aus. Befindet man sich z.B. im Verzeichnis /usr/bin, so ist ../lib äquivalent zu /usr/lib, da .. eine Ebene höher anspricht. ../../var entspräche demnach /var. Ruft der Benutzer Schmidt im eigenen Heimatverzeichnis ls briefe auf, so entspricht dies ls /home/lehrnix/schmidt/briefe. Das läßt sich beliebig erweitern. Bsp.: ./briefe/../../schmidt/./briefe entspricht vorigem.
Verzeichnisse werden angelegt mit dem Kommando mkdir und gelöscht mit rmdir (nicht md bzw. rd wie unter DOS). Bsp.:
mkdir neues_verzeichnis cd neues_verzeichnis cd .. rmdir neues_verzeichnis
In welchem Verzeichnis man sich gerade befindet, erfährt man durch Eingabe von pwd.
Anders als auf den DOS/Windows-Rechnern läßt sich bei Unix für jede Datei, jedes Programm, jedes Verzeichnis kontrollieren, wer Lese-, Schreib- und (bei Programmen) Ausführungsrechte hat. Schreibrecht umfaßt auch das Recht zum Löschen. Die Rechte können in drei verschiedenen Hierarchiestufen vergeben werden: Eigentümer der Datei (user), dessen Gruppe (group) und den Rest der Welt (others). Benutzergruppen am Institut sind u.a. institut (Professoren, Wissenschaftliche Mitarbeiter), staff (Techniker), other und other2 (Studenten).
Mit dem Kommando
ls -l(-l steht für long) werden ausführliche Informationen zu Dateien und Verzeichnissen ausgegeben:
total 15266 drwx------ 2 faensen institut 512 Oct 1 13:05 briefe/ -rw-r--r-- 1 faensen institut 7792362 Oct 1 13:14 diplomarbeit.ps -rw-r--r-- 1 schmidt other2 4543 Oct 1 13:16 picture.gif drwxr-xr-x 2 faensen institut 512 Oct 1 13:17 interna/ drwxrwxr-x 2 faensen institut 512 Oct 1 13:16 lehre/ drwxrwxrwx 2 faensen institut 512 Oct 1 13:13 public/ -rwxr-x--- 1 faensen other2 143608 Oct 1 13:45 rtf2LaTeX*Die erste Zeile gibt den belegten Speicherplatz in diesem Verzeichnis an. Die folgende Liste enthält einen Eintrag pro Datei mit folgenden Informationen: Der erste Buchstabe gibt die Dateiart an. Ein - steht bei einer ,,normalen`` Datei, ein d bei einem Unterverzeichnis (directory). Andere entnehme man gängigen Unix-Dokumentationen. Die folgenden neun Buchstaben geben die Benutzungsrechte wieder. Man lese sie als drei Blöcke à drei Zeichen (rwx). Dabei steht r für das Leserecht (read), w für das Schreibrecht (write) und x für das Ausführungsrecht (bei Unterverzeichnissen das Recht, in diese zu wechseln). Das erste Triplett gibt die Rechte für den Eigentümer, das zweite für die Gruppe und das dritte für jedermann wieder. Die Spalte mit den Ziffern 1 und 2 ignoriere man hier getrost. Es folgt der Benutzername des Eigentümers der Datei und der Name der Gruppe der die Datei zugeordnet ist. Dateigröße (in Byte) und Zeitpunkt der letzten Änderung runden die Sache ab. Demnach sind briefe, interna, lehre und public Unterverzeichnisse. Im Beispiel darf der Eigentümer in alle Verzeichnisse mit cd wechseln und in allen lesen und schreiben (z.B. Dateien anlegen). Im Verzeichnis briefe darf dies kein anderer, im Verzeichnis lehre außer ihm noch alle Mitglieder der Gruppe institut. Andere dürfen hier immerhin lesen. In public darf jedermann und jede Frau schreiben. Die beiden Dateien mit den Zugriffsrechten -rw-r-r- dürfen vom Eigentümer gelesen und geschrieben werden, von Gruppe und Rest nur gelesen. Das Programm rtf2LaTeX im Verzeichnis darf vom Eigentümer und der Gruppe other2 ausgeführt werden, nicht aber vom Rest.
Rechte vergeben werden mit dem Kommando chmod . Es kann auf zwei Arten aufgerufen werden, von denen hier nur die eine vorgestellt werden soll:
chmod permissionlist filename(s)permissionlist hat die Form benutzerklasse rechte. Die Benutzerklassen sind u (user), g (group), o (others) oder auch a für alle, die Rechte wie die oben erläutertern r, w und x. Beispiele:
chmod g+rx briefeerlaubt den Mitgliedern der Gruppe (hier institut), im Verzeichnis briefe zu lesen.
chmod a-w *verhindert das Schreiben und Löschen aller Dateien im Verzeichnis für jeden.
chmod u-r diplomarbeit.psbewirkt, daß der Eigentümer die Datei nicht mehr lesen kann (selbst wenn er Mitglied der Gruppe institut ist). Das mag nicht sehr sinnvoll sein, ist aber vielleicht illustrativ.
Mit dem befehl umask wird voreingestellt, mit welchen Zugriffsrechten neu angelegte Dateien erzeugt werden. Zur Benutzung schlage man in den man-pages oder im Unix-Tutorial nach.
Neben den ,,normalen`` Benutzern gibt es einen Benutzer, der alles darf, den Systemverwalter root. Vor ihm läßt sich nichts verbergen, gilt kein Schreib-, kein Leserecht. Als root arbeiten bei uns die Techniker.
Man glaubt, im Zeitalter fenster-, maus-, und menüorientierter Benutzerschnittstellen bräuchte man keine Befehlsinterpreter mehr. Dem ist nicht so. Zumindest im Informatikstudium kommt man unter keinen Umständen an einem kommandozeilenbasierten Werkzeug vorbei. Ein solches wird einem auf den Sun-Workstations unter CDE zur Verfügung gestellt, wenn man mit der Maus auf den kleinen Computer am unteren Bildschirmrand klickt.
Unter Unix gibt es verschiedene Programme, die als Kommandointerpreter oder shell dienen. Sie sind unterschiedlich komfortabel, und jeder erfahrene Benutzer wird seine eigene Präferenz haben. Den Benutzern am Institut wird standardmäßig die csh (lies: c-shell, natürlich mit englischer Aussprache) zur Verfügung gestellt. Dazu kompatibel und mit wesentlich mehr Funktionen ausgestattet ist die tcsh. Eine andere Shell6 als die voreingestellte startet man durch Eingabe ihres Programmnamens, also z.B. tcsh.
Hauptaufgabe der Shell ist, einen eingetippten Befehl entgegenzunehmen. Er wird aufbereitet und das Programm gestartet. Die Ausgaben werden im Fenster der Shell dem Benutzer präsentiert. Das Editieren der Kommandozeile variiert von Shell zu Shell. Ausprobieren ist hier gefragt. Manchmal funktionieren die Pfeiltasten, Home und End sowie Backspace und Delete, manchmal nicht. Wichtige Hilfsmittel sind:
ls *.txt rm brief.txt !l!l wiederholt den Befehl ls *.txt. Eine Liste der vorigen Befehle erhält man mit dem Kommando history.
analyze huge_mount_of_data & netscape & xemacs &Ein Prozeß, der im Vordergrund läuft, kann unterbrochen werden durch Drücken von control+Z. Er läuft dann nicht weiter. Wieder in den Vordergrund holt man ihn durch Eingabe von fg. Soll der Prozeß im Hintergrund weiterrechnen, so gibt man bg ein. Den Abbruch eines Prozesses erreicht man mit control+C.
~
) eingegeben wurden. Ausprobieren!
Wo findet die Shell das gewünschte Programm? Wenn beim Kommando nicht ein expliziter Pfad (z.B. /bin/chmod) angegeben ist, so wird die sogenannte Umgebungsvariable PATH ausgewertet. Eine Umgebungsvariable (environment variable) ist eine Konfigurationsmöglichkeit für das Verhalten der Shell und anderer Programme. Sie wird i.d.R. in Konfigurationsdateien (s. Abschnitt 3.11) gesetzt.
PATH ist eine Liste von Verzeichnissen (durch : getrennt), in denen Programme/Kommandos abgelegt sind. In den von der Technik vorgegebenen Konfigurationsdateien ist ein vernünftiger Wert für den Anfang voreingestellt. Man kann ihn sich ansehen durch Eingabe von
echo $PATHDie Reihenfolge der Verzeichnisse ist relevant. Genau in dieser werden die Verzeichnisse durchsucht. Das erste Kommando, das paßt, wird ausgeführt.
Möchte man seinen Pfad erweitern, tut man dies am besten in der Konfigurationsdatei .cshrc im Heimatverzeichnis (s. Abschnitt 3.13). Mit
set path = ( $path ~/bin )sorgt man z.B. dafür, daß auch das Verzeichnis bin im Heimatverzeichnis durchsucht wird, wenn ein Kommando eingegeben wird.
envDas Setzen von Umgebungsvariablen erfolgt in der csh mit setenv:
setenv PRINTER ldusetzt z.B. die Variable PRINTER auf ldu, was Programme wie lpr anweist, standardmäßig den Drucker ldu anzusprechen.
lpr filename.ps.Dabei ist filename.ps der Name einer PostScript-Datei. Das funktioniert aber nur, wenn ein Standarddrucker gewählt wurde, siehe dazu Abschnitt 3.8. Die Bezeichnung lpr stammt noch aus alten Zeilendrucker-Zeiten und meint schlicht den line printer. Der obige Befehl druckt auf dem als Standard festgelegten Drucker. Mit der Option -P printer läßt sich ein anderer Drucker wählen. Beispiel
lpr -P ldu filename.psdruckt auf dem Drucker ldu. Den Studenten stehen folgende Drucker zur Verfügung:
Name | Standort | Eigenschaften |
ldu | Keller Raum K 84 | Laser, doppelseitig, Recyclingpapier |
lsi | -- '' -- | Laser, einseitig, Recyclingpapier |
Derselbe Drucker kann unter verschiedenen Namen angesprochen werden. Die Wahl des Namens beeinflußt z.B., ob ein- oder doppelseitig (si=simplex bzw. du=duplex) gedruckt wird.
Zum Drucken stehen eine ganze Reihe von Werkzeugen zur Verfügung. Erwähnenswert sind vor allem a2ps, psnup und pstops. a2ps (lies: a-to-ps) wandelt ASCII-Dateien (ASCII) in PostScript um und formatiert sie dabei noch recht schön. Aufruf:
a2ps asciifile > asciifile.psasciifile.ps kann anschließend mit lpr asciifile.ps gedruckt werden. Oder man leitet die Ausgabe direkt an das Druckprogramm weiter (siehe dazu Abschnitt 3.12):
a2ps asciifile | lprMit psnup lassen sich mehrere Seiten auf einem Blatt verkleinert ausdrucken. Das spart Papier (schont die Umwelt) und Druck-Quotas (s. Abschnitt 3.10). Um beispielsweise eine mehrseitige DIN-A4-Vorlage filename.ps auf DIN-A5 verkleinert zu drucken, gibt man ein:
psnup -n 2 filename.ps | lpr-n 2 gibt dabei die Zahl der Seiten pro Blatt an. Unter
~
faensen/bin/ liegt ein kleines Skript
booklet, mit dem man sich kleine DIN-A5-Heftchen erstellen
kann. Der Aufruf erfolgt mit
~faensen/bin/booklet filename.psDie Seiten müssen nur noch sortiert werden, in der Mitte geheftet und gefaltet werden. Das funktioniert gut bei Dokumenten mit max. 40 Seiten (also nachher 10 Blättern). Voraussetzung ist, daß ein Duplex-Drucker als Standard eingestellt ist. Die Drucker des Instituts ,,verstehen`` PostScript. Das bedeutet, daß andere Formate konvertiert werden müssen. Für die gängigen Graphikformate kann dazu das Program xview (xv) verwendet werden.
xv filenameAus xview heraus kann man entweder mit Print direkt drucken, oder eine PostScript-Datei erstellen mit Save. Als Format wählt man dann PostScript. Klartext-Dateien (ASCII-Format) lassen sich mit a2ps in PostScript konvertieren (s.o.).
quota -vangezeigt. Ausgegeben wird für den Benutzer für jedes Dateisystem, wieviele Blöcke er aktuell belegt hat (blocks), wieviele er ohne Probleme belegen darf (quota), wieviele er maximal belegen darf (limit) und wie lange er noch Zeit hat, Platz zu schaffen, bevor das für ihn erledigt wird (timeleft).
Es ist also wichtig, Plattenplatz zu sparen. Dazu gibt es verschiedene Alternativen:
Auch für das Drucken gibt es Begrenzungen. Jeder Student darf pro Semester max. 150 Blatt drucken. Dabei zählt das Blatt Papier, doppelseitiger Druck (Duplex) zahlt sich also aus. Freie Druckkapazitäten ermittelt man mit
show_prq
Auch beim Drucken läßt sich sparen. Nützlich sind hierbei Werkzeuge wie
psnup (mehrere Seiten auf ein Blatt) oder booklet
(erstellt ein DIN A5-Faltblatt aus DIN A4-Vorlagen, zu finden unter
~
faensen/bin/). Näheres zum Drucken siehe
Abschnitt 3.9.
ls -laWichtige Dot-Dateien sind in folgender Tabelle kommentiert:
Die Ausgabe eines Kommandos läßt sich in eine Datei umleiten. Dazu dient
die spitze Klammer >
. Bsp.:
ls -l > listingschreibt das Ergebnis von ls -l in die Datei listing. Eine etwa bereits bestehende Datei listing würde dabei überschrieben. Mit einer doppelten spitzen Klammer
>>
kann man die Ausgabe an eine bestehende Datei anhängen.
ls -l >> listingEbenso läßt sich die Eingabe an ein Programm statt von der Tastatur aus einer Datei einlesen. Bsp.:
mail schmidt@inf.fu-berlin < brief_an_schmidtgibt den Inhalt von
brief_an_schmidt
an mail weiter.
Es ist auch möglich, die Ausgabe des einen Kommandos direkt an ein anderes Kommando als dessen Eingabe weiterzuleiten.
mein_programm | mail tutorgibt die Ausgabe von
mein_programm
an das Kommando
mail. Dieses sendet sie per EMail an den Tutor namens
tutor. Mehrere Pipes können hintereinandergeschaltet werden:
ls -la | a2ps | lprlistet das Verzeichnis auf und gibt das Ergebnis an ein Programm zur Formatierung und Umwandlung von Klartext in die Druckersprache PostScript. Dieser PostScript-Code wird dann an das Druckprogramm weitergeleitet.
In diesem Abschnitt wird die von der Technik vorgegebene Datei .cshrc ausführlich behandelt.
Die Datei .cshrc sieht wie folgt aus (Die Zeilennummern wurden mit dem Kommando nl hinzugefügt):
1 # .cshrc Prototyp 2 # 3 # set up search path 4 setenv OPENWINHOME /usr/openwin 5 set path = (/bin /usr/bin $OPENWINHOME/bin) 6 setenv PAGER less 7 setenv LC_CTYPE iso_8859_1 8 setenv NNTPSERVER news.fu-berlin.de 9 alias a alias 10 # 11 # define Operating System 12 setenv OS "`uname -r | cut -f1 -d'.'`" 13 if ( $OS == 4 ) then 14 # BSD-System 15 # ****** HOMES ********* 16 setenv XHOME /usr/local/X11 17 setenv NPHOME /usr/local/newsprint 18 setenv FMHOME /usr/local/frame 19 # ****** ENV's ************ 20 setenv LD_LIBRARY_PATH /usr/lib/X11:$OPENWINHOME/lib:/usr/lib 21 setenv MIRALIB /usr/local/mira/miralib 22 set path = ( /usr/local/gcc/bin $path /usr/ucb /usr/hosts /usr/lang \ 23 /usr/local/mira . $XHOME/bin \ 24 /usr/local/bin $NPHOME/bin $FMHOME/bin \ 25 /usr/local/emacs/bin) 26 source ~staff/bin/skripts/setman # MANPATH 27 source ~staff/bin/skripts/absolve.csh # AnswerBook + SunSolve 28 source /usr/local/tex/texsetup.csh # tex Umgebung 29 # ******* CMD_ALIASES *********** 30 a ll 'ls -lag' 31 a r reset 32 else 33 # SYSTEM-5 34 # ******* HOMES **************** 35 setenv MOZILLA_HOME /opt/navigator 36 # ******* ENV's **************** 37 setenv XFILESEARCHPATH /usr/openwin/lib/locale/%L/%T/%N%S:/usr/openwin/lib/%T/%N%S:/opt/local/lib/%T/%N 38 setenv MIRALIB /opt/mira/miralib 39 setenv LD_LIBRARY_PATH /usr/dt/lib:$OPENWINHOME/lib:/usr/lib:/usr/ucblib:/opt/local/lib:/opt/gcc/lib 40 set path = ( /usr/dt/bin $path \ 41 /opt/SUNWspro/bin /usr/ccs/bin \ 42 /opt/gcc/bin /opt/local/bin /usr/ucb \ 43 /opt/netscape /opt/navigator /opt/tex2e/bin \ 44 /opt/mira . /opt/emacs/bin ) 45 source ~staff/bin/skripts/setman.5 # MANPATH 46 source ~staff/bin/skripts/absolve5.csh # AnswerBook + SunSolve 47 # ******* CMD_ALIASES *********** 48 a ll 'ls -la' 49 endif 50 # 51 set noclobber 52 limit coredumpsize 0 53 set filec 54 # aliases for all shells 55 a cd 'cd \!*;echo $cwd' 56 a cp 'cp -i' 57 a mv 'mv -i' 58 a rm 'rm -i' 59 a pwd 'echo $cwd' 60 a del 'rm -i' 61 # skip remaining setup if not an interactive shell 62 if ($?USER == 0 || $?prompt == 0) exit 63 # settings for interactive shells 64 stty erase "^H" 65 set history = 40 66 set savehist = 40 67 setenv HOST "`uname -n`" 68 set prompt = "${USER}@${HOST} \!: " 69 # other aliases 70 a h 'history -r | more' 71 a type cat 72 a lock xlock 73 a m more 74 a list less 75 a dir ls 76 a la 'ls -a'
Die Zeilen 1 bis drei beginnen mit einem #
. Das kennzeichnet
sie als Kommentar, der Text hinter dem #
wird beim Ausführen
der .cshrc ignoriert.
In Zeile 4 wird die Umgebungsvariable OPENWINHOME gesetzt. Sie gibt für die Arbeitsumgebung OpenWindows (s. Abschnitt 3.16), wo es seine Programme, Bibliotheken, Schriften, Bildchen usw. zu suchen hat. In Zeile 6 wird der Suchpfad gesetzt (s. Abschnitt 3.7). Dabei wird bereits die Umgebungsvariable OPENWINHOME benutzt. Vollständig wäre diese Zeile als
set path = (/bin /usr/bin /usr/openwin/bin)zu lesen. In den Zeilen 6 bis 8 werden weitere Umgebungsvariablen gesetzt. Zu deren Bedeutung siehe Abschnitt 3.8.
In Zeile 9 steht der Befehl alias. Er dient dazu, einem (mehr oder weniger koimplexen) Kommando einen neuen, meist einfacheren Namen zu geben. alias a alias im Beispiel sorgt dafür, daß mit a der Befehl alias aufgerufen wird. Anwendungen von alias sind in den Zeilen 48, 55-60 und 69-76 zu finden. alias ll 'ls -l' (Zeile 48) sorgt z.B. dafür, daß an Stelle des Befehls ls -l auch einfach ll eingegeben werden kann.
Zeile 55 verdeutlicht die Umbenennung eines komplexen Kommandos
alias cd 'cd \!*;echo $cwd'bewirkt, daß mit cd dir nicht nur in das Verzeichnis dir gewechselt, sondern anschließend auch noch die Umgebungsvariable cwd (current work directory) ausgegeben wird.
\!*
wird durch den Parameter für cd (im
Beispiel dir) ersetzt.
In Zeile 12 wird mit einem komplexen Kommando ermittelt, ob man sich gerade auf einem Rechner mit dem Betriebssystem SunOS 4 oder 5 befindet (SunOS 5 ist das gleiche, wie Solaris 2). Dies wird der Umgebungsvariablen OS zugewiesen. Von der Betriebssystemversion ist das weitere Vorgehen abhängig. In Zeile 13 wird entschieden, ob die Zeilen 14 bis 31 (bei Version 4) oder 33 bis 48 ausgeführt werden. Da am Institut nur noch ein einziger Rechner unter SunOS 4 läuft (puma), wird auf die Erläuterung der ersten Alternative verzichtet.
Die Umgebungsvariablen, die hier gesetzt werden, sind - soweit relevant - in Abschnitt 3.8 erläutert.
In den Zeilen 45 und 46 werden mit dem Kommando source Zwei Skripten (ähnlich der gerade diskutierten .cshrc) geladen und die darin enthaltenen Kommandos ausgeführt.
Das Setzen der Variablen noclobber in Zeile
51 verhindert, daß durch Umleiten der Standardausgabe mit >
existierende Dateien überschrieben werden (s. Abschnitt 3.12).
Wenn Programme ,,abstürzen`` wird unter Unix zur anschließenden Fehlersuche ein Abbild des Hauptspeichers, ein sogenannter core dump, auf die Festplatte geschrieben. Dieser kann recht groß sein und, wenn er unbemerkt bleibt, die Festplattenquotas des Benutzers erschöpfen. Daher wird in Zeile 52 die maximale Größe eines core dumps auf 0 gesetzt.
Durch Setzen der Variable filec (Zeile 53) kann die csh Datei- und Benutzernamen vervollständigen. Siehe dazu Abschnitt 3.6
Zeile 64 stellt die Shell so ein, daß man mit der Backspace-Taste rückwärts löschen kann.
Zeile 65 und 66 stellen ein, daß die letzten 40 Befehle zum erneuten Aufruf erhalten bleiben.
In Zeile 67 wird die Umgebungsvariable HOST auf den Namen des aktuellen Rechners gesetzt. Dazu wird da Kommando uname -n aufgerufen. Da es in nach links stehenden einfachen Anführungsstrichen steht, wird es zuerst ausgewertet, sein Ergebnis (seine Ausgabe) wird der Variablen zugewiesen.
In Zeile 68 wird die Eingabeaufforderung, der prompt, festgelegt. Es ist eine Kombination aus den Inhalten der Variablen USER und HOST, getrennt durch den Klammeraffen, gefolgt von der Nummer des aktuellen Befehls (für den Historymechanismus) und einen Doppelpunkt. Der Prompt kann nach Geschmack verändert werden.
Bei Änderungen in der .cshrc bietet es sich an, den
ursprünglichen Eintrag zu erhalten aber durch Voranstellen eines
#
auszukommentieren und damit von der Abarbeitung auszuschließen.
Vernetzung und Mehrbenutzerbetriebssysteme laden ein, nicht nur an dem Rechner zu arbeiten, an dem man sitzt, sondern andere Maschinen mitzubeschäftigen. Insbesondere wenn der Comuter vis-a-vis ein älteres Modell ist, weicht man gern auf einen schnelleren aus. Außerdem sind bestimmte Programme nur auf speziellen, diesen Programmen gewidmeten Rechnern lauffähig. Der sogenannte remote login auf einen anderen Rechner erfolgt so (Annahme: hai ist ein langsamer Rechner, an dem man sitzt, ultra ein schneller, auf dem man ein Ressourcen-fressendes Programm laufenlassen möchte.):
myname@hai: > xhost +ultra myname@hai: > rlogin ultra myname@ultra: > setenv DISPLAY hai:0 myname@ultra: > emacs &
xhost +ultra
erlaubt, daß Programme, die auf ultra
laufen, hai für die Ausgabe nutzen. Hat man sich auf
ultra eingeloggt, muß man diesem Rechner noch mitteilen,
welcher Rechner für die Ausgabe genutzt wird. Dies geschieht durch
setzen der Umgebungsvariablen DISPLAY.
Aber: Beachte dazu die Anmerkungen zur Etikette (Abschnitt 8).
Es sei außerdem auf die Sicherheitsprobleme beim rlogin hingewiesen (s. Abschnitt 9). Statt rlogin verwende man ssh.
Unter Unix kann man nicht wie unter DOS/Windows einfach auf Knopfdruck eine Diskette aus dem Laufwerk holen. Bei den Sun-Workstations geschieht der Auswurf mit dem Befehl eject.
Um Dateien von einer Diskette auf das Unix-Dateisystem (oder umgekehrt) zu kopieren, bedient man sich des Programms mcopy. Mit
mcopy filename a:kopiert man die Datei filename auf Diskette,
mcopy a:*.txt ~/textekopiert alle Dateien mit der Endung txt in das Verzeichnis texte. mcopy gehört zu einer Sammlung von Werkzeugen zur Bearbeitung von DOS-Dateien und Disketten, den sog. mtools. Informationen erhält man mit man mtools.