[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Um diese Übung auf unsere Arbeitsdiskette zu speichern, legen wir diese in das Disketten-Laufwerk, mounten das Laufwerk nach /a und wechseln in das Verzeichnis /a.
/# mount /dev/fd0 /a
/# cd /a
/a# _

Der Texteditor vi

Alle Konfigurationsdateien bei Unix sind Textdateien. Deshalb ist sind Kenntnisse zur Bedienung eines überall verfügbaren Texteditors unumgänglich. Wir sollten also in der Lage sein zumindest kleine Änderungen mit Hilfe des vi durchzuführen. Keine Angst! Wir werden damit keine Romane schreiben.

In der Unix-Welt gibt es den Standardeditor namens vi (das spricht man "wie ei" aus). Dieser ist nicht nur auf allen Unix-Versionen verfügbar, ihn gibt es auch für Windows (http://www.snafu.de/~ramo/WinViDe.htm) und DOS . Er ist sehr leistungsfähig aber seine Bedienung gilt als ungewöhnlich.

Eine Ursache für seine fremdartige Bedienung ist, daß der vi auch auf alten Terminals bedienbar sein muß. Diese besitzen oft keine Cursortasten und andere Spezialtasten. Mitunter haben Spezialtasten aber auch beim Einloggen in ferne Rechner eine andere Zuordnungen. Deshalb erfolgt die Bedienung des vi über bestimmte Kommando-Buchstaben. Um diese von den normalen Buchstaben unterscheiden zu können, wird vorher die [Esc]-Taste gedrückt (escape, engl. Flucht).

Beeindruckendes GUI
Leider kann vi nicht mit so einem beeindruckenden grafischen User Interface aufwarten.

Starten des Editors vi

Der Start erfolgt durch die Eingabe des Kommandos vi mit dem Dateienamen der zu editierenden Datei als Parameter.

/a# vi test.txt

In diesem Fall ist die Datei test.txt noch nicht vorhanden, daher werden im vi nur leere Zeilen dargestellt. Diese werden im vi mit einer Tilde ~ am linken Rand dargestellt.

~
~
~
~
~
~
~
~
~
~
~
"text.txt" [New File] 1 line, 1 char

Die unterste Zeile dient zur Anzeige von Informationen und zur Kommunikation mit dem Nutzer. Hier wird der Dateiename angezeigt. Außerdem sieht man den Hinweis, daß es sich um eine neue Datei (engl. file) handelt. Die Datei besteht zur Zeit aus einer Zeile (engl. line) und einem Zeichen (engl. character).

Speichern

Wir haben zwar noch gar nichts geschrieben, trotzdem wollen wir unser Werk speichern. Dazu drücken wir nacheinander folgende Tasten:

[Esc] : w [Enter]

Die Taste [Esc] leitet den Befehlsmodus ein. Der Doppelpunkt startet den Letzte-Zeile-Modus, eine spezieller Befehlsmodus, der in der letzten Zeile mit dem Nutzer kommuniziert. Im Letzten-Zeile-Modus wird der Befehl w (write, engl. für Schreiben) eingegeben. Die Taste [Enter], bzw. [Enter] schließt den Letzte-Zeile-Modus ab. Das klingt sicherlich etwas sonderbar.

Beim vi sollte man immer einen Finger an der [Esc]-Taste haben. Ich verwende dazu Meist den kleinen Finger der linken Hand.

Beenden des Editors vi

Das Beenden erfolgt ähnlich dem Speichern:

[Esc] : q [Enter]

Anstelle der Taste w wird aber die benachbarte Taste q (quit, engl. für Beenden) gedrückt. Bei den vi-Befehlen wird übrigens zwischen Groß- und Kleinschreibung unterschieden.

In der letzten Zeile blinkt nun wieder unser muLinux-Cursor. Der Befehl ls zeigt uns, daß die Datei wirklich existiert.

/a# ls
test.txt

Wir starten mit Hilfe der Befehlswiederholung (Cursor-Taste nach oben) den Befehl vi text.txt neu.

/a# vi test.txt

Betriebsmodi des vi

vi verfügt über drei verschiedene Betriebsmodi - ein Umstand, der dazu beiträgt, daß dieser Editor als schwer bedienbar gilt. Oft ist auch nicht erkennbar in welchem Modus man sich gerade befindet.

Im Befehlsmodus werden die eingegebenen Zeichen unmittelbar als Befehle des Editors interpretiert und ausgeführt. Dabei gibt es weder ein Bereitschaftszeichen (Prompt) noch ein Echo (Ausgabe).

Der Letzte-Zeile-Modus ist der einzige Modus mit einem eigenen Bereitschaftszeichen, nämlich dem Doppelpunkt ": ". Der Prompt wird ebenso wie die Befehlsausgaben in der Statuszeile angezeigt.

Der Textmodus dient zur Bearbeitung von Text. Alle hier eingegebenen Zeichen werden als Text der aktuellen Datei interpretiert.

Nach dem Start befindet sich der vi im Kommando-Modus. In diesem Modus kann man leider keinen Text eingeben.

Hier kann der Cursor mit den Cursortasten und einer Vielzahl von anderen Zeichentasten an eine beliebige Stelle bewegt werden. Ein Wechsel zwischen den unterschiedlichen Modi ist jederzeit möglich.

Eingeben von Text

Wie gesagt, nach dem Start des vi ist dieser im Befehlsmodus. Wer hier versucht Text einzutippen wird Chaos ernten. Die Buchstaben werden ja als Befehle ausgewertet.

Durch Betätigen spezieller Buchstabentasten gelangt man in den Textmodus. Ich verwende meist die Taste i (insert, engl. einfügen). Den Buchstaben i sollte man sich unbedingt merken.

    [i]

Jetzt können wir einfach losschreiben.
Ein Enter erzeugt einen Zeilenumbruch.
~
~
~
~
~
~
~
~
~

Ein Druck auf die Esc-Taste führt wieder in den Befehlsmodus zurück.

[Esc]

Wir speichern gleich noch mal.

[Esc] : w [Enter]

Wir haben jetzt [Esc] zweimal hintereinander gedrückt. Das macht nichts. Man sollte lieber einmal mehr diese Taste drücken als einmal zuwenig. So weiß man wenigstens, daß man den Textmodus verlassen hat.

Wir wollen unseren Text weiterschreiben. Hier alle Befehle zum Wechseln in den Textmodus:

[Esc] i Text vor der aktuellen Cursorposition einfügen
[Esc] I Text am Zeilenanfang einfügen
[Esc] a Text hinter der aktuellen Cursorpositon einfügen
[Esc] A Text am Zeilenende einfügen
[Esc] o Unterhalb der aktuellen Zeile eine neue Zeile einfügen
[Esc] O Oberhalb der aktuellen Zeile eine neue Zeile einfügen

Schreibe noch ein paar nette Zeilen und speichere alles ab.

Letzten Befehl rückgängig machen

Vielleicht passiert es, daß doch nicht alles so klappt, wie man es sich wünscht. Ist etwas schiefgelaufen kann man die Sache ungeschehen machen (engl. undo).

[Esc] u Macht die letzte Änderung rückgängig
[Esc] U Die komplette Zeile wird wieder hergestellt.

Ich denke diese Befehle prägen sich bei der Arbeit mit dem vi schnell ein.

Steuerung des Cursors durch den Text

Im Textmodus sind die Cursortasten oft nicht wirksam, sondern erzeugen nur ein entsprechendes Control-Zeichen im Text! Dies kann beim Einloggen in einem Rechner via Internet der Fall sein. Dann tickt auch noch die Online-Gebühren-Uhr im Hinterkopf. Also ist es besser diese Navigation vorher zu üben. Um mit Hilfe von Buchstaben-Tasten sich im Text zu bewegen, muß man wieder mit [Esc] in den Befehlsmodus wechseln.

Mittels folgender Kommandos bewegt sich der Cursor durch den Text. Wir brauchen [Esc] natürlich nur einmal drücken, um in den Befehlsmodus zu kommen.

[Esc] h Cursor ein Zeichen nach links
[Esc] j Cursor eine Zeile nach unten
[Esc] k Cursor eine Zeile nach oben
[Esc] l Cursor ein Zeichen nach rechts

Wie wir sehen, liegen diese Tasten in Reihe auf der Tastatur. Für die rechte Hand geradezu ideal erreichbar (h Zeigefinger, j Mittelfinger, k Ringfinger, l kleiner Finger) :

[h] [j] [k] [l]

In der Nähe (obere Tastenreihe) liegen auch unsere wichtigsten Tasten i (Textmodus) und u (undo), die für Mittel- und Ringfinger gut erreichbar sind. Wir sparen uns das Wechseln der rechten Hand zu den Cursortasten. Damit ist (für vi-Profis) ein sehr schnelles Arbeiten möglich.

[u] [u]
[h] [j] [k] [l]

Weitere wichtige Navigationstasten sind:

[Esc] w Cursor ein Wort nach rechts
[Esc] 3w Cursor drei Wörter nach rechts
[Esc] b Cursor ein Wort nach links
[Esc] 7b Cursor sieben Wörter nach links
[Esc] [Strg] F Bildschirmseite vorwärts (engl. forward)
[Esc] [Strg] B Bildschirmseite rückwärts (engl. back)
[Esc] 0 (Null)Zeilenanfang
[Esc] $ Zeilenende
[Esc] 1G Dateianfang
[Esc] G Dateiende

Sicherlich wird sich keiner diese Befehle sofort merken. Zum Üben empfehle ich eine längere Datei zu öffnen. Zum Beispiel kann dazu die Datei /usr/doc/readme.html verwendet werden. Zuerst speichern ([Esc] :w [Enter]) und schließen ([Esc] : q [Enter]) wir unsere selbstgeschriebene Textdatei. Dann öffnen wir die oben erwähnte Datei:

/a# cd /usr/doc
/usr/doc# vi readme.html

Falls wir uns vertippt haben wird eine leere Datei angelegt. Dann verlassen wir noch mal den vi und versuchen es noch mal. Wenn wir die Datei /usr/doc/readme.html endlich auf den Bildschirm haben üben wir das Navigieren durch den Text. Diese Datei ist übrigens eine HTML-Datei, also eine Internet-Seite.

Beenden des Editors vi ohne Speichern

Damit wir die Datei nicht zerstören, verlassen wir den vi zum Schluß ohne zu speichern. Dazu muß noch ein Ausrufungszeichen ! nach dem q eingegeben werden.

[Esc] : q ! [Entert]
/a# _

Die nachfolgenden Befehle kann man nicht sofort lernen. Besser ist diese gelegentlich zu üben. Wichtig ist vorerst das Verstehen der Arbeitsweise des vi mit seinen Modis.

Übung

Erstelle eine Textdatei mit den Namen /a/weisheiten.txt. Tippe bitte erst diese Varianten ein. Speichere diese ab und verändere die Sprüche, so daß diese in der Originalversion verfügbar sind.

Weisheiten

Abendrot - Dunkelheit droht!

Das klappt ja wie am Spieß!

Alte Liebe kostet nichts!

Indien den Indianern!

"Edel" trinkt der Mensch, dann wird er hilfreich und gut.

Schluß mit durstig!

Lieber der Spatz auf der Taube als das Dach in der Hand!

Ten Beers After

My home is my beer castle.

Two beer or not two beer - that is here the question!
Shakesbeer
~
~
~

Suchen / Ersetzen

Die Suchfunktionen des vi ragen weit über die eines "normalen" Editors hinaus. Man kann z. B. nach Wörtern suchen, die mit den Buchstaben G bis K beginnen, aber alle auf "icht" enden.

Ein Suchen wird normalerweise mit einem Slash / eingeleitet. In dem Moment, in dem man diesen Schrägstrich eingibt, erscheint der Schrägstrich in der letzten Zeile des Bildschirmes, und der Cursor blinkt dahinter. Nun kann der suchende Text eingegeben werden. Die Suche beginnt, sobald man zum Abschluß [Enter] drückt.

In Richtung Dateianfang (nach oben) wird gesucht, wenn statt des Schrägstriches ein Fragezeichen ? eingegeben wird.

[Esc] /<Ausdruck> Sucht den angegebenen Ausdruck im Text (vorwärts)
[Esc] ?<Ausdruck> Sucht den angegebenen Ausdruck im Text (rückwärts)
[Esc] n Weitersuchen
[Esc] fX Einfache Suche: Finde (engl. find) das nächste Vorkommen des einen Zeichens X

Um z. B. das Wort "der" in dem Text zu suchen, gibt man folgendes ein:

[Esc] /der

Wenn mehrere Zeichen an einer Position möglich sein sollen, werden diese in eckigen Klammern [ ] angegeben. Der folgende Befehl such nach zwei Möglichkeiten: "Der" oder "der".

[Esc] /[Dd]er [Enter]

Man kann auch Bereiche angeben. Hier werden alle Buchstaben von C bis G akzeptiert:

[Esc] /[C-G]er [Enter]

Man kann auch Zeichen ablehnen. Dazu dient das Zeichen ^. In diesem Beispiel sind an erster Stelle keine Kleinbuchstaben erlaubt:

[Esc] /[^a-z]er [Enter]

Ein beliebiges Zeichen wird durch einen Punkt . dargestellt. Ein Leerzeichen ist natürlich auch ein Zeichen.

[Esc] /.er [Enter]

Zum Ersetzen dient dient das Kommando /s mit folgender Syntax:

[Esc] :[Zeile1,Zeile2]s/text1/test2/[gc] [Enter]

Die Angabe der Zeilen ist optional. Läßt man sie weg, wird nur in der aktuellen Zeile gesucht. Zeile1 steht für den Anfang des Suchbereiches, Zeile2 für das Ende. Es sind dabei auch folgende Sonderzeichen möglich: Der Punkt . als Kennzeichen für die aktuelle Zeile. Der Dollar $ für die letzte Zeile.

Die Option g am Ende bewirkt das Austauschen aller Vorkommen im Bereich. Läßt man ihn weg, wird nur das erste Vorkommen ersetzt.

Um jede Ersetzung bestätigen zu können (engl. confirm) dient das c am Ende.

In diesem Beispiel wird im gesamten Text nach "Meier" gesucht und nach Bestätigung durch "Meyer" ersetzt.

[Esc] 1,$s/Meier/Meyer/gc [Enter]

Lösch-Befehle

Das Löschen (engl. delete) von Zeichen und Text erfolgt ebenfalls im Befehls-Modus. Dazu dient der Befehl [Esc] d. Allerdings ist dieser nur mit der Kombination einer Cursopositionierung (s. o.) wirksam. Das heißt, wer die Navigationsbefehle beherrscht, beherrscht auch die Löschbefehle. Richtig spannend wird erst die Verbindung mit den Such-Befehlen / und ?. Hier einige Beispiele:

[Esc] dd Löscht die gesamte Zeile
[Esc] 5dd Löscht die die nächsten 5 Zeilen
[Esc] dw Löscht von Cursorposition bis zum Ende des Wortes
[Esc] dG Löscht bis zur letzten Zeile einschließlich aktueller Zeile
[Esc] d0 Löscht bis zum Zeilenanfang
[Esc] d$ Löscht bis zum Zeilenende
[Esc] d1G Löscht bis zur ersten Zeile einschließlich aktueller Zeile
[Esc] dfX Löscht bis zum nächsten Vorkommen des Zeichens X

Hier noch weitere Lösch-Befehle:

[Esc] x Löscht das Zeichen auf Cursorposition
[Esc] J Löscht den Zeilenumbruch zur nächsten Zeile und verbindet (engl. join) dadurch die Zeilen

Textbereiche kopieren / verschieben

Der zuletzt gelöschte Textbereich befindet sich im Puffer. Dieser kann mit einem der nachfolgenden Befehle eingefügt werden.

[Esc] p Fügt den Puffer nach aktueller Zeile ein (engl. paste)
[Esc] P Fügt den Puffer vor aktueller Zeile ein

Um einen Textbereich zu kopieren, muß er erst mal definiert werden. Dazu dient der Befehl [Esc] y. Dieser muß wie der Löschbefehl d mit einer Positionsangabe ergänzt werden.

[Esc] yw Kopiert von Cursorposition bis zum Ende des Wortes in den Puffer
[Esc] yG Kopiert bis zur letzten Zeile einschließlich aktueller Zeile in den Puffer
[Esc] y0 Kopiert bis zum Zeilenanfang in den Puffer
[Esc] y$ Kopiert bis zum Zeilenende in den Puffer
[Esc] y1G Kopiert bis zur ersten Zeile einschließlich aktueller Zeile in den Puffer
[Esc] yfX Kopiert bis zum nächsten Vorkommen des Zeichens X in den Puffer
[Esc] yy Kopiert die aktuelle Zeile in den Puffer

Eingefügt wird der Pufferinhalt natürlich auch mit den oben genannten Einfügebefehlen p und P.

Mehrere Text-Dateien bearbeiten

Mit dem vi können mehrere Dateien bearbeitet werden. Wenn wir zum Beispiel alle muLinux-Hilfe-Dateien im Verzeichnis /usr/doc/help bearbeiten wollen, geben müssen wir den Wildcard Stern * einsetzen:

/# cd /usr/doc/help
/usr/doc/help# vi *

Zur nächsten Datei gelangt man mit :n.

[Esc] : n [Enter]

Übung: Editieren von Konfigurationsdateien

Im Verzeichnis /etc befinden sich die Konfigurationsdateien. Wir wollen gleich mal einige dieser Dateien editieren.

/# cd /etc
/etc# _

Die Datei /etc/issue

Als erstes kommt die Datei issue dran. Diese beinhaltet den Login-Prompt des Systems. Wir machen noch eine Sicherheitskopie bevor wir die Datei editieren.

/etc# cp issue issue.original
/etc# vi issue

Wir sehen eine Reihe von Kontrollzeichen, die für die farbliche Unterlegung und die italienische Fahne beim Login verantwortlich sind. Wir löschen alles. Wenn der Cursor in der ersten Zeile steht, geben wir dazu den folgenden Befehl ein:

[Esc] dG

Dadurch wird von der aktuellen Zeile bis zum Dateiende alles gelöscht. Nun können wir unsere eigene Begrüßungsmeldung eingeben. So z. B.

Hallo,
das ist mein Login-Prompt!

Wir verlassen den vi und loggen uns mit dem Befehl exit aus. Jetzt müßte uns unser eigener Login-Prompt begrüßen.

Die Datei /etc/ls.conf

Diese Datei beinhaltet voreingestellte Optionen für den Befehl ls. Wir editieren diese um die Option -l als Standard für den Befehl ls festzulegen. Das heißt, wenn wir ls eingeben wird automatisch ls -l aufgerufen.

/# cd /etc
/etc# cp ls.conf ls.conf.original
/etc# vi ls.conf

Wir löschen den Inhalt und schreiben nur eine Zeile:

-l

Jetzt speichern wir die Datei und verlassen den vi. Wenn wir nun ls aufrufen wird in Wirklichkeit ls -l aufgerufen.

Dies ist nur ein sehr kleine Auswahl der Möglichkeiten des vi. Es gibt noch weitaus mehr Befehle. Aber ich denke das reicht erst mal für den Anfang.

Um diese Übung zu beenden heben wir die mount-Zuordnung unserer Arbeitsdiskette auf.
/a# cd /
/# umount /a
/# _

[Zurück] [Home] [Weiter]