UNIX Grundkurs |
Diese Informationen habe ich zusammengestellt, als ich damals einen UNIX-Kurs vorbereitete. Und das ist schon ein Weilchen her. Die Zeit ist nicht stehengeblieben und es gibt inzwischen auch die eine oder andere Änderung. Die Informationen basieren auf der damaligen AIX-Version. Ich werde versuchen, ihn zu aktualisieren. Es wäre nett, wenn man mich auf Ungereimtheiten aufmerksam machte und mir in solch einem Fall eine E-Mail zukommen lassen würde.
Arnold Willemer, E-Mail: Arnold.Willemer@gmx.de
Wenn man mit UNIX arbeiten will, braucht man zuerst eine Benutzerkennung und ein Passwort. Ein Terminal meldet sich normalerweise mit der Aufforderung, seinen Benutzernamen einzugeben. Nach Return ist das Passwort blind einzugeben. Das heißt, es wird nicht angezeigt.
Nach der Arbeit mit UNIX meldet man sich wieder ab. Man sollte sich zur Regel machen, niemals ein angemeldetes Terminal allein stehen zu lassen. Die Ameldung kann durch Drücken von ctrl-D erfolgen. Der Befehl exit führt zum Verlassen der aktuellen Shell und damit zum Abmelden. Man kann auch den Befehl logout verwenden, der eine Abmeldung durchführt.
Befehle an UNIX werden eingetippt und mit der Returntaste abgeschlossen. Sie gehen an das Programm Shell, das die Interpretation der Befehle vornimmt und das Betriebssystem oder die angesprochenen Programme aufruft und deren Ausführung bewirkt.
Ein Befehl besteht zuerst aus dem Befehlsnamen. Dieser bezeichnet meist ein Programm. Es folgt ein Leerzeichen zur Abtrennung der Parameter. Optionen sind an einem Minuszeichen erkennbar. Sie bewirken eine Veränderung der Programmausführung. Werden mehrere Optionen mitgegeben, können diese direkt hintereinander geschrieben werden und nur ein Minuszeichen zu Anfang geschrieben werden.
Schließlich haben die meisten Befehle Argumente. Dies sind die Objekte, auf denen die Befehle ausgeführt werden sollen. Je nach Art des Befehls kann es gar keine oder beliebig viele Argumente geben. Mehrere Argumente werden durch Leerzeichen getrennt.
Bei einem Fehler meldet sich das System mit einer Meldung. Entweder es meldet sich das gerufene Programm oder das die Eingabezeile interpretierende Programm, die Shell, wenn sie den Befehl bzw. das Programm nicht kennt oder die Struktur des Befehls ihr nicht behagt.
So könnte nach Eingabe von abcdefg eine Meldung wie die folgende erscheinen:
sh: abcdefg: not found.
Da UNIX kein Programm namens abcdefg finden konnte, meldet der Kommandointerpreter sh den Fehler. Kommt ein korrekt gerufenes Programm mit der Eingabe nicht zurecht, meldet sich dieses. Zum Beispiel erscheint nach der Eingabe grep o p die Meldung
sh: grep: 0652-033 cannot open p.
ls zeigt die Dateien, die im aktuellen Verzeichnis stehen an. Es werden keine weiteren Angaben als nur die Namen angezeigt. Um mehr zu erfahren, muß man ls -l eingeben. Der Parameter l sagt an, daß eine ``lange'' Anzeige der Dateinamen mit mehr Informationen angezeigt wird.
Angezeigt werden Berechtigung, Links, Eigentümer, Gruppe, Zeitpunkt der letzten Änderung und Dateiname.
In der folgenden Tabelle stehen einige Optionen des ls-Befehls. Es gibt noch wesentlich mehr, aber man kann sie auch mit man ls nachschlagen.
| -A | zeigt alle Eintrage außer . und .. |
| -a | zeigt alle Einträge im Verzeichnis, auch die, die mit einem Punkt beginnen. |
| -C | zeigt Ausgabe in mehrspaltigen Format. Default bei Terminalausgabe |
| -d | zeigt nicht den Inhalt der Verzeichnisse (nützlich bei -l) |
| -F | markiert die Art der Einträge (/ Verzeichnis, *ausführbar) |
| -L | zeigt bei symbolischen Links die Originaldatei |
| -l | zeigt Modus, Linkzahl, Besitzer, Gruppe, Größe, Zeit und Link |
| -r | umgekehrte Sortierreihenfolge |
| -R | zeigt rekursiv alle Unterverzeichnisse |
| -t | zeigt in der Reihenfolge der letzten Änderung |
| -1 | erzwingt einspaltige Ausgabe |
Beim Befehl ls können leicht Ausgaben entstehen, die mehr als einen Bildschirm füllen. Um das schnelle Durchlaufen zu verhindern, kann man hinter die meisten Befehle einen senkrechten Strich gefolgt von dem Wort more setzen. Bei ls könnte dies wie folgt aussehen:
ls -l | more
Nach jeder Bildschirmseite erscheint die Meldung more. Mit der Leertaste kann eine Seite weitergeblättert werden. Die Returntaste wirkt ein zeilenweises blättern. Will man die Ausgabe beenden, gibt man ein Q ein.
Um die folgenden Befehle zu benutzen, muß erst einmal eine Datei vorhanden sein. An dieser Stelle soll nur der Befehl ohne Erläuterung niedergeschrieben. Unter dem Kapitel Umleitung von Ausgaben findet sich die Erklärung. Dazu gibt man den Befehl ein:
cat > test
Anschließend gibt man ein paar Zeilen beliebigen Text ein und drückt zum Schluß die Tastenkombination crtl-D. Man kann so nur in der aktuellen Zeile mit der Backspace-Taste korrigieren. Bereits abgeschickte Zeilen sind nicht mehr änderbar.
cp (für copy) kopiert Dateien. Mit
cp test hugo
wird eine neue Datei hugo angelegt, die eine Kopie der Datei test ist. Mit ls kann man sie sich anzeigen lassen.
Mit dem Befehl mv (für move) kann man ihr einen neuen Namen geben. So wird das Kommando
mv hugo erna
die Datei hugo zur Datei erna verschieben. UNIX kennt keinen reinen Umbenennungsbefehl. Dafür ist das Verschieben extrem effizient, da nicht der gesamte Datenbereich verschoben wird, sondern nur der Name der Datei, solange sich der neue Ort auf der gleichen physikalischen Festplatte befindet.
Soll die Datei anschließend wieder verschwinden, gibt man das Kommando
rm erna
und die Datei ist wieder verschwunden.
cat Dateien zeigt den Inhalt von Dateien auf dem Bildschirm an. cat ist die Abkürzung für concatenate, also Aneinanderhängen. Durch eine Umleitung der Ausgaben (siehe dort), kann aus mehreren Dateien eine zusammengängende gemacht werden. Man kann dies auf dem Bildschirm sehen, wenn man mehrere Dateien hinter dem cat-Befehl angibt. Etwa
cat hugo hugo erna
zeigt zweimal hugo und einmal erna direkt hintereinander an.
Der grep-Befehl dient dazu, aus einer oder mehreren Dateien eine bestimmte Zeichenkette herauszusuchen und anzuzeigen. grep Zeichenfolge Dateien sucht die Zeichenfolge in den angegebenen Dateien und gibt die entsprechenden Zeilen aus. Sind mehrere Dateien angegeben, wird auch der Dateiname ausgegeben.
Zeichenfolgen mit Leerzeichen setzt man in Anführungszeichen oder Hochkommata.
Beispielsweise kann man in einem Projekt in C ermitteln, welche Module eine bestimmte Funktion (als Beispiel printf) verwenden. Zu diesem Zweck gibt man ein:
grep printf *.c
od Dateien (octal dump) zeigt eine Datei Byte für Byte aus. Als Optionen können die Inhalte -b für oktal, -x für hexadezimal und -c als ASCII angegeben werden.
Beim Bearbeiten von Dateien, kann es manchmal notwendig sein, zu wissen, welche Gemeinsamkeiten oder Unterschiede die Dateien aufweisen.
Gerade in der Programmentwicklung wird der diff-Befehl oft eingesetzt. Er zeigt an, wo sich Dateien unterscheiden.
Der Befehl comm Datei1 Datei2 vergleicht zwei Dateien auf Gleichheit.
split Datei zerteilt die Datei Datei in Teile zu je 1000 Zeilen. Mit -n wird die Datei in Teile zu je n Zeilen zerlegt. Die Namen der neuen Dateien lauten xaa, xab, xac, etc..
tail -x Einheit Datei
zeigt die letzten x Einheiten einer Datei.
tail +Zahl Einheit
zeigt die ersten x Einheiten einer Datei.
Einheiten können l (Zeilen), c (Zeichen) oder b (Blöcke) sein.
Ein wichtiger Einsatz von tail ist das Beobachten sich verändernder Dateien, wie beispielsweise Logfiles. Will man die messages-Datei beobachten, gibt man beispielsweise ein:
tail -f /var/log/messages
Alle Daten, die in diese Datei fliessen, erscheinen nun auch auf dem Terminal. Durch Delete-Taste oder Strg-C (je nachdem, was auf dem lokalen System als Break-Taste definiert ist) kann der tail-Befehl wieder gestoppt werden.
Wenn man nicht mehr auswendig weiß, wie ein bestimmter Befehl genau wirkt oder welche Parameter und Argumente er benötigt, kann man mit dem Befehl
man Kommando
die Manualseiten über das Kommando ausgeben lassen. Dies funktioniert auf fast allen UNIX-Maschinen. Bei einigen Maschinen gibt es das Programm info, mit dessen Hilfe man sich quer durch die Hilfetexte wühlen kann und das auch in der Lage ist, Querverweise zu verfolgen.
Will man mehrere Dateien als Argumente für einen UNIX-Befehl verwenden, kann man sie meist einfach aufzählen. Kommandozeilenprogramme sind unter UNIX also so geschrieben, daß sie beliebig viele Dateien als Argumente akzeptieren. Um die Aufzählung zu vereinfachen, kann man per Wildcard oder regulärem Ausdruck mehrere Dateien zusammenfassen. Die Shell sucht die auf die Maske passenden Dateien zusammen und übergibt sie als Liste dem aufgerufenen Programm.
An dieser Stelle unterscheidet sich UNIX deutlich von MS-DOS. Dort erhät das Programm die Maske und die Bearbeitung ist davon abhängig, ob das Programm die Masken unterstützt. Die unter UNIX übliche Interpretation durch die Shell hat den Vorteil, daß sie für alle Programme gleich ist.
Der Nachteil liegt auf der Hand: Will man ein Zeichen an ein Programm geben, das von der Shell interpretiert wird, muß es davor geschützt werden. Dies kann bei einzelnen Zeichen durch Voranstellen eines Backslash (\) erfolgen. Alternativ kann das Argument auch in Anführungszeichen oder Hochkommata gesetzt werden.
Um Dateien mit ähnlichen Namen zu bezeichnen, wird meist der Stern als Platzhalter verwandt. Dieser steht als Ersatz für beliebig viele Zeichen. An der Stelle des Sterns kann auch gar kein Zeichen sein. Die folgende Tabelle zeigt einige Beispiele:
| ls prog* | Alle Dateien, die mit prog anfangen |
| ls *mein | Alle Dateien, die mit mein aufhören |
| ls OS*.c | Alle Dateien, die mit OS anfangen und mit .c aufhören |
Soll eine genaue Anzahl von Buchstaben freigehalten werden, benutzt man das Fragezeichen. Es steht für genau einen Buchstaben. M??s steht also für Maus, Mais oder Muks.
Will man tatsächlich den Stern oder das Fragezeichen verwenden, stellt man das Backslash-Zeichen (\) voran. Die deutsche Übersetzung von Backslash hieße "rückwärtiger Schrägstrich". \* steht für einen Stern, \? für ein Fragezeichen im Namen. Man sollte, um Mißverständnisse zu vermeiden, jedoch diese Zeichen in Dateinamen vermeiden.
In verschiedenen Programmen können zur Auswahl oder Suche reguläre Ausdrücke verwandt werden.
| . | Steht für ein einzelnes beliebiges Zeichen |
| [afg] | Das Zeichen a, f oder g muß an dieser Stelle erscheinen |
| [0-9] | Eine Ziffer muß an dieser Stelle stehen |
| ? | Null- oder einmaliges Vorkommen des vorangegangenen Zeichens |
| * | Das vorangehende Zeichen kommt beliebig oft vor |
| + | Das vorangehende Zeichen kommt mindestens einmal vor |
| Ù | Zeilenanfang |
| $ | Zeilenende |
| \ | Das folgende Zeichen wird nicht als Metazeichen interpretiert |
Das Filesystem von UNIX ist hierarchisch. Die Dateien sind in Verzeichnissen organisiert. Ausgehend von einem Root-Verzeichnis gehen alle Verzeichnisse ab. Das ganze System bildet eine Baumstruktur. Um ein Verzeichnis zu benennen, nennt man alle Verzeichnisse vom Wurzelverzeichnis bis zum gewünschten Verzeichnis. Die Namen der Verzeichnisse werden durch einen Schrägstrich getrennt.
Da es sehr mühselig sein kann, den gesamten Pfad einzugeben, werden bei Namen, denen kein Schrägstrich vorangestellt wird, vom aktuellen Verzeichnis aus betrachtet. UNIX ergänzt dann den Namen des aktuellen Verzeichnisses.
Wichtige Verzeichnisse:
Mit dem Kommando find ist es möglich, einen Verzeichnisbaum rekursiv nach einer Datei zu durchsuchen. find ist ein sehr mächtiger Befehl. In den meisten Fällen reicht der vereinfachte Syntax:
find PfadName -name DateiMaske -print
Der Pfadname gibt an, ab welcher Stelle die rekursive Suche beginnt. Die Dateimaske beschreibt die gesuchte Datei. Es können reguläre Ausdrücke verwendet werden.
Die detailiertere Beschreibung sollte man sich ansehen, wenn administrative Aufgaben ein Bearbeiten eines Verzeichnisastes erfordern.
Eine Datei hat einen Eigentümer (user-id), gehört zu einer Gruppe (group-id) und hat eine Klasse(z. B. Verzeichnis oder special file). Ferner hat jede Datei Informationen darüber, ob sie gelesen, geschrieben oder ausgeführt werden kann. Diese Rechte werden getrennt gehandhabt für Eigentümer, Gruppe und restliche Benutzer.
| Besitzer | Gruppe | Rest | geänderte User-ID |
| r w x | r w x | r w x | x |
Im letzten der zehn Bit ist abgelegt, daß der Benutzer eines Programmes die User-ID des Dateibesitzers erhält. Auf diese Weise ist es möglich, daß der Zugriff auf Dateien nur über ein Programm möglich sind. Dies wird erreicht, indem die Daten nur Lese- und Schreiberlaubnis für den Benutzer selbst erhalten.
Die Werte werden oktal dargestellt. Das heißt, daß jeweils eine rwx Gruppe zu einer Zahl umgebildet wird. So ergibt sich:
| r | w | x | Kennzahl | Bedeutung |
| 0 | 0 | 0 | 0 | keine Rechte |
| 0 | 0 | 1 | 1 | Ausführung, aber weder Lesen noch Schreiben |
| 0 | 1 | 0 | 2 | Nur Schreibrecht |
| 0 | 1 | 1 | 3 | Schreib- und Ausführungsrecht, nicht Lesen |
| 1 | 0 | 0 | 4 | Nur Leserecht |
| 1 | 0 | 1 | 5 | Lese- und Auführungsrecht |
| 1 | 1 | 0 | 6 | Lese- und Schreibrecht, kein Ausführungsrecht |
| 1 | 1 | 1 | 7 | Lese-, Schreib- und Ausführungsrecht |
Eine Besonderheit ergibt sich für Verzeichnisse. Hier bedeutet das Fehlen (!!!) einer Berechtigung:
| x | In dieses Verzeichnis darf nicht gewechselt werden |
| r | Die Dateinamen des Verzeichnisses können nicht gelesen werden |
| w | Es darf weder eine Datei gelöscht noch umbenannt oder hinzugefügt werden |
Mit dem Kommando chmod können Berechtigungen für Dateien verändert werden.
chown ändert den Besitzer einer Datei.
Eine Besonderheit im UNIX-Dateisystem ist die Möglichkeit, der eigentlichen Datei mehrere Namen zuzuordnen. Man spricht hier von Links (engl. Verbindungen). Es können beliebig viele Links angelegt werden. Sie können (mit gewissen Einschränkungen) in verschiedenen Verzeichnissen liegen. UNIX entfernt den Datenbereich erst, wenn der letzte Link gelöscht wird.
Der Link offeriert auch die Möglichkeit, daß ein und dasselbe Programm unterschiedliche Aktionen durchführt, je nachdem wie es heißt. Ferner ist es möglich, einen Datenbestand von mehreren Benutzern aktuell halten zu lassen.
Der Befehl, um einen Link zu erzeugen lautet
ln Originaldatei NeuerName ln Originaldatei AnderesVerzeichnis
Im ersten Falle wird ein neuer Name angegeben, im zweiten Falle wird der gleiche Namen in einem anderen Verzeichnis eingetragen. Mit dem Parameter -f kann ein bestehender gleicher Dateiname überschrieben werden.
Es gibt sogenannte special files, also spezielle Dateien, die einen Zugriff auf bestimmte Peripherien ermöglichen. Man findet diese im Verzeichnis /dev. Sie tragen ein kleines s als Kennzeichen. Man kann diese Direktzugriffe mit den normalen Dateizugriffen handhaben, sollte dies im Normalfall aber vermeiden. Im Allgemeinen gibt es Programme, die den Zugriff steuern. So wird der Zugriff auf den Drucker (/dev/lp0) üblicherweise über das Programm lp lpr geregelt. Dies verhindert, daß sich verschiedene Benutzer gegenseitig die Ausdrucke durcheinanderbringen.
Dateien mit einem großen S sind sogenannte Sockets und dienen der Kommunikation zwischen Programmen. Diese sollte man im Normalfall in Ruhe lassen. Die benutzenden Programme könnten erheblich durcheinander geraten, wenn diese plötzlich fehlen oder manipuliert würden.
Jedes Programm erwartet seine Eingaben von der Standardeingabe (stdin) und gibt seine Ausgaben auf die Standardausgabe (stdout) aus. Daneben gibt es die Standardfehlerausgabe (stderr) für Fehlermeldungen. Jede dieser Ein- und Ausgaben kann in Dateien umgeleitet werden.
Durch Anhängen von < file wird der Inhalt der Datei file als Eingabe verwandt, durch Anhängen von > file wird die Ausgabe auf die Datei file umgeleitet. Beides ist kombinierbar. Beispielsweise bedeutet
sort <ein >ausdaß die Datei ein als Eingabe für den Sortbefehl verwendet wird und das e evtl. existierende Datei angehängt.
Unter Erzeugen einer Datei gibt es ein Beispiel für eine Umleitung
cat >testHier werden zwei Effekte ausgenutzt. Der erste ist die Umleitung der Ausgabe. Die Ausgabe von cat wird nicht am Bildschirm angezeigt, sondern in eine Datei geschoben. Es wird also die Datei test erzeugt. Der zweite Effekt ist, daß keine Eingabedatei für cat angegeben wird. Dementsprechend greift cat auf die Standardeingabe, nämlich die von der Tastatur zu. Es wird also solange von der Tastatur eingelesen, bis diese Eingabeeinheit am Ende der Datei ist. Das Ende der Datei wird bei der Tastatur mit ctrl-D erzeugt.
Durch den senkrechten Strich | wird eine Pipe aufgebaut, die die Ausgabe des links stehenden Kommandos auf die Eingabe des rechts stehenden Kommandos umleitet. Man spricht im Zusammenhang mit den Programmen auch von Filtern.
ls | sort
ergibt ein sortiertes Inhaltsverzeichnis. Ein anderes Beispiel war bereits beim seitenweisen Anzeigen aufgeführt worden. Mit
ls -l | more
wird die Ausgabe des ls-Befehls in die Eingabe des more-Befehls geschoben, der die Zeilen zählt und nach Füllen des Bildschirms auf eine Taste des Benutzers wartet.
Durch Anhängen von & wartet die Shell nicht auf auf das Ende des Kommandos. Es läuft im Hintergrund ab.
Durch Klammern und Semikolen kann die Reihenfolge von Prozessen beeinflußt werden.
Beispiel:
(date; ls) > aus &
Führt nacheinander date und ls aus, leitet die Ausgabe beider in die Datei aus um und läßt alles im Hintergrund ablaufen.
Unter einigen UNIX-Varianten ist es möglich, einen aktuell laufenden Prozeß kurzfristig zu stoppen. Dazu drückt man ctrl-Z. Es erscheint die Meldung, dass der Prozeß gestoppt worden ist.
Mit dem Befehl jobs kann man sich die gestoppten Jobs, aber auch Kommandos, die man in den Hintergrund geschickt hatte, ansehen. Dabei hat jeder Job eine spezielle Nummer bekommen.
Man kann den Job im Vordergrund fortsetzen, indem man
fg %Nummer
eingibt. Um ihn im Hintergrund weiterlaufen zu lassen, gibt man
bg %Nummer
ein. Letztendlich kann man den Job auch töten mit der Anweisung
kill %Nummer
Das Verfahren funktioniert nicht bei allen UNIX-Varianten, da das Signal SIGSTP benötigt wird, welches nicht in jedem UNIX verfügbar ist. Berkeley-UNIX und AIX besitzen diese Möglichkeit.
Auch die Shell muß mitspielen. Die Korn-Shell und die bash von LINUX unterstützen es.
nice cmd
Das Kommando cmd wird auf niedrigster Priorität ausgeführt
nohup cmd
Kommando cmd wird nach ausloggen weiter ausgeführt
ps zeigt die aktuell laufenden Prozesse des Benutzers an. Die Bezeichnung PID ist die interne Nummer des Prozesses. Mit Hilfe des Befehls
kill PID
kann man Prozesse stoppen. Natürlich kann man keine fremden Prozesse stoppen. Dies darf nur der Systemverwalter.
Die Argumente eines Befehls können durch andere Prozesse erzeugt werden. Um dies zu erreichen, wird statt des Arguments ein Befehl in rückwärtige Hochkommata (backquotes) gesetzt werden. Das Ergebnis dieses Befehls wird dem eigentlichen Befehl als Argument zugeführt.
Beispiel:
ls -l `cat filelist`
In diesem Fall wird der Inhalt der Datei filelist mit cat ausgegeben und so als Argumentliste dem ls-Kommando zugeführt.
Man könnte die Datei filelist als Liste der Dateien zu einem bestimmten Programmierprojekt benutzen. Um diese zu übersetzen, könnte der Befehl
cc -o `cat filelist`
abgesetzt werden. Eine Sicherung der Quelltexte könnte dann per
cp `cat filelist` /usr/projekt/backup
erfolgen.
chmod 755 script ./scriptDie Kombination aus ./script ist deswegen sinnvoll, weil man nicht immer das aktuelle Verzeichnis im Pfad hat. Unter UNIX muß dies explizit mit einem Punkt angegeben werden. Dadurch ist die Sicherheit vor trojanischen Pferden höher.
Alternativ kann der script auch mit dem Punktkommando gestartet werden:
. ./scriptIm Unterschied zur ersten Variante wird keine eigene Shell für den Skript gestartet, sondern die aktuelle Shell startet den Skript. Dies hat beispielsweise Auswirkungen auf die Gültigkeit von Environmentvariablen.
Die UNIX-Shells besitzen eine sehr umfangreiche Skriptsprache, mit der auch
komplexere Abläufe gesteuert werden können.
Nähere Informationen
Mit dem Kommando lp oder lpr können Dateien oder Ströme auf dem Drucker ausgegeben werden. Beispiel:
lpr print.me
Es können mittels Pipe aber auch komplexe Ausgaben zusammengestellt und auf dem Drucker ausgegeben werden. Beispiel:
ls -l | pr | lpr
Wie die Befehle schon vermuten lassen, gibt es zwei Varianten des Drucks unter UNIX. Die eine Linie stammt vom BSD-UNIX ab und die andere von System V von AT&T.
| BSD | AT&T | Bedeutung |
|---|---|---|
| lpr | lp | Druck absenden |
| lpq | lpstat | Status der Druckerwarteschlange ermitteln |
| lprm | cancel | Entfernen eines Jobs aus der Druckwarteschlange |
Nähere Informationen kann man auch per man erhalten. Dort erfährt man auch, welches System auf der eigenen Maschine installiert ist.
| -t | keine Kopf und Fußzeilen |
| -Zahl | erzeugt einen Ausdruck mit Zahl Spalten |
| -h Text | Als Kopfzeile wird text verwandt |
Syntax: sort Datei
Der sort-Befehl ist schon kurz angeklungen. Mit seiner Hilfe können Dateien sortiert werden. In den bisherigen Beispielen wurde statt der Datei die Standardeingabe sortiert und diese kann per Pipe natürlich von anderen Programmen kommen.
Wird kein weiterer Parameter angegeben, sortiert sort die Datei Zeile für Zeile nach ihren Anfängen.
Durch die Parameter ist der Sortierbereich aber explizit festlegbar. Dadurch wird sort zu einem sehr leistungsfähigen Befehl.
| -b | ignoriere führende Leerzeichen |
| -d | nur Buchstaben, Zahlen und Leerzeichen werden Kriterium |
| -f | Groß- und Kleinshreibung wird nicht berücksichtigt |
| -i | Zeichen außerhalb des ASCII-Bereiches ignorieren |
| -n | Zahlen werden numerisch, nicht alphabetisch sortiert |
| -r | in umgekehrter Reihenfolge sortieren |
| -tc | nehme das Zeichen c als Feldtrennzeichen |
| +Nr | das Nrte Feld wird zum Kriterium |
| -Nr | das Nrte Feld ist letztes Kriterium |
Selektionen werden in Schrägstriche eingeschlossen, Selektionen in geschweiften Klammern. Der gesamte Befehl wird wiederum in Apostrophe eingeklammert:
awk '/Otto/ {print $3}' telefon
Gibt für alle Zeilen der Datei telefon, in denen die Zeichenfolge Otto steht, die dritte Spalte aus.
awk wird gern in Pipes eingebaut, um bestimmte Informationen auszufiltern und anderen Kommandos zugänglich zu machen. Auch das Filtern von Informationen aus großen Dateien ist leicht möglich. Allerdings muß man sich etwas intensiver damit befassen, damit sich die Leistungsfähigkeit erschließt.
Die Shell kann Variablen speichern und später zur Verarbeitung heranziehen. Man definiert eine Variable, indem man ihr einen Inhalt zuweist. Entsprechend wird sie wieder entfernt, wenn man ihr einen leeren Inhalt zuweist.
hugo=anton
Vorsicht: Es darf kein Leerzeichen in diesem Befehl auftauchen. Die Variable hugo wird angelegt und ihr Wert ist ab diesem Augenblick anton. Um den Inhalt einer Variablen zu verwenden, stellt man ein Dollarzeichen voran.
echo $hugo
führt zur Ausgabe des Wortes anton. Der Befehl
cc $hugo.c
würde die Datei anton.c übersetzen.
Es gibt einige vorbelegte Variablen.
| $HOME | Heimatverzeichnis des Benutzers |
| $PATH | Verzeichnisse, in denen nach ausführbaren Programmen gesucht wird |
| $PS1 $PS2 | Promptzeichen |
| $IFS | Alle Zeichen, die wie ein Leerzeichen wirken sollen |
d=`pwd`
Die Variable erhält den Wert, den pwd liefert
| Homepage | (C) Copyright 1999 Arnold Willemer |