Zaubern

Das kleine Shellzauberbuch

Dieser Text ist 2002 entstanden. Statt des Versuchung nachzugeben, diesen Text umzuschreiben oder an diversen Stellen mit Anmerkungen zu versehen, hier die unveränderte Orginalfassung so, wie ich sie damals in der Begeisterung über meinen ersten Computer mit einer Shell geschrieben habe.

Inhalt

Warum man Zaubern lernen sollte

Vor einiger Zeit, als ich über meine Computerleidenschaft und vor allem meine Begeisterung über die shell nachdachte, kam mir der Gedanke, dass all das eigentlich etwas magisches hat.

Warum lernen Menschen zaubern? Zunächst einmal ist Zaubern etwas eminent praktisches. Wer hat sich nicht schon einmal in seiner Wohnung umgesehen und gewünscht, das Geschirr möge sich von alleine abwaschen, der Wäschekorb sich auf kleinen Füßchen zur Waschmaschine bewegen und seinen Inhalt hineinkippen, diese sich von selbst anschalten und anschliessend solle die Wäsche nach draußen auf die Leine flattern... In der Zwischenzeit könnte man sich genüßlich den _wirklich_ wichtigen Dingen des Lebens zuwenden, gemütlich bei einem Täßchen Tee in Büchern schmökern oder mit seinen Freunden plauschen...oder sich mit seinem Computer beschäftigen (Manche Leute sollen dabei - wie ich gerüchtehalber vernommen habe - Spaß daran finden).

Computer sind sehr mächtige Kisten - sie können viel mehr als zum Beispiel eine Waschmaschine. Allerdings muß der Mensch ihnen natürlich immer noch sagen, was sie tun sollen - und da liegt der Hase im Pfeffer. Die meisten Computer haben heutzutage eine sogenannte "Benutzeroberfläche" und die kann eigentlich viel weniger als der Computer selbst. Wie schön wäre es, sich mitten in den Raum stellen zu können und zu sagen: "Dreckige Wäsche - marschmarsch, in den Wäschekorb, hallo Ofen: ein leckeres Steak, aber medium bitte, hallo Stereoanlage, mein Lieblingskitschlied, spiel es noch einmal, Sam". Bis dato eine nette Utopie.

Im Computer hat man dann denselben Ärger wie in Realität: alte Dateien muß man alle selbst aufräumen, mit der Maus in den Papierkorb ziehen, die Textverarbeitung hat keine Ahnung von guter Typographie und den schönen Liedtext, den man neulich einmal gespeichert hat, findet man nicht wieder.

Dabei wäre es so schön einfach: "Lösch alle Dateien, die huibuu-irgendwas.mp3 heissen, ich hab keine Lust mehr auf Schloßgespenst. die vielen kleinen hübschen Signaturen, die ich neulich gefunden habe, faßt du bitte in einem Textfile zusammen - und merk dir, ich will da keine DOS-Zeilenumbrüche drinsehen. Hey, und den Kerl, der da neulich versucht hat hier einzubrechen, den hältst du fleißig draußen." In Realität sind meine magischen Bemühungen bisher immer gescheitert. Doch seit einiger Zeit versteht mein Puterchen Magie, genauer gesagt, seit ich ihm ein MacOS X verpaßt habe. Das ist nämlich ein Unix und mit dem kann man zaubern :-)

Vorbereitungsrituale

Zuerst braucht der Zauberlehrling natürlich einen Computer, der sich magisch beeinflußen läßt. Das tun eigentlich fast alle, nur manche stellen sich dabei dümmer an als andere. Die wirksamste Magie läßt sich auf Unixsystemen wirken, während das alte MacOS nahezu Magieresistent ist (von einer einzigen, etwas umständlichen Zaubersprache namens Applescript einmal abgesehen). Dann gibt es natürlich auch noch die schwarze Magie, aber mit der wollen wir uns hier nicht beschäftigen. Sie bewegt sich im Untergrund schwarzer DOS-Boxen in Klickibuntiumgebungen, mit denen der dunkle Fürst die Welt überschwemmt, um sie alle zu knechten. Aber lassen wir dieses traurige Thema...

Ich will hier nur von von weißer Magie sprechen, die in lichten, durchscheinenden Fenstern auf schönen, farbigen und hellglitzernden Macs gewirkt wird. Als ersten Schritt in die Welt der Magie öffnen wir die Terminal.app, die wir im Ordner Applications unter den Utilities finden. Zuvor können wir noch mit Tinkertool dem Terminal Transparenz verleihen, damit alles schön funkelt.

Erste Zauberverse

Wie man in vielen Büchern erfahren kann, muß der Zauberer die richtigen Worte sprechen, um einen Zauber heraufzubeschwören. Das Schwierigste im Studium der Magie ist es, sich diese vielen und geheimnisvollen Formeln zu merken, mit denen man solch mächtige Dinge vollbringen kann. Natürlich reicht es nicht, sie irgendwie herauszustottern, nein, man muß sie richtig buchstabieren, sonst könnte der Zauber mißglücken oder - im schlimmsten Fall - sich gegen den Magier wenden und fürchterliche Zerstörungen anrichten. Ein schlauer Zauberlehrling übt sich daher erst an einfachen Sprüchen, bis er das nötige Wissen für die höhere Magie erworben hat. Noch was: früher mußten Zauberlehrlinge Latein, Griechisch und Hebräisch können, um die magischen Formeln zu verstehen. Heutzutage hingegen ist die Kenntnis der englischen Sprache nahezu unumgänglich.

Bewegungszauber - cd

Der erste Zauber, den wir lernen, ist ein einfacher Bewegungszauber. Seine Formel ist cd und wir versehen sie mit dem Ort, an den wir uns bewegen wollen. Wenn wir also nun vor unserem geöffneten Terminal sitzen und vor uns den Prompt sehen, das Zeichen, das der Computer bereit ist, auf unsere Beschwörungen zu lauschen, tippen wir:

cd Documents

und betätigen die Returntaste, um dem Computer zu sagen, daß er unseren Zauber ausführen soll.

Da - der Prompt hat sich verändert, unser Zauber hat funktioniert! wir sehen jetzt, daß wir uns im Ordner Documents befinden:

[localhost:~/Documents] user%

Um wieder an unseren Ursprungsort zurückzugelangen, geben wir einfach nur cd ein und sehen nun den wieder den alten Prompt:

[localhost:~] user% 

Mit einem einfachen cd gelangt man, wo immer man sich gerade befindet, wieder in sein Homeverzeichnis zurück. Doch was, wenn wir im Unterordner eines Unterordner sind und einfach nur ein Verzeichnis höher springen wollen? cd .. trägt uns dorthin.

Mein Zauberlehrling zuckt mit den Achseln. Was soll daran jetzt bitte schön so toll sein? Im Finder geht das doch schließlich ganz einfach mit der Maus, viel schneller als wenn man erst mühsam D-o-c-u-m-e-n-t-s tippen muß! Machen wir ein Wettrennen... Sieger ist, wer als erster im Ordner Documents/Zauberkurs/Lektion2 ist. Als geübte Hexenmeisterin tippe ich Do- und dann der Trick: die Tabulatortaste, aus dem Do wird Documents, aus Z ein Zauberkurs, ein L und Tab - und schwupps, bin ich in Lektion2, während mein lehrling noch mit einem Wartemauszeiger im Finder kämpft.

Das Unsichtbare sichtbar machen - ls

Herummanövrieren ist ja ganz schön, aber nun wollen wir auch was sehen von der Gegend. ls heißt das Zauberwort. mal ausprobieren...

[localhost:~] user% ls
Desktop    Icon?    Mail  Pictures  Sites
Documents  Library  News  Public    archiv
			

Damit kann man nun gemütlich durch den Computer spazieren und sich alle Dateien und Ordner anzeigen lassen. Wirklich alle? Nein, Computer sind geheimniskrämerisch, so leicht lassen sie sich ihre Informationen nicht entlocken. Schließlich gibt es da noch die geheimen, versteckten Dateien, von denen der Benutzer nichts erfahren soll. Programme, die ihre Dateien unsichtbar machen, entweder in der netten Absicht, den Benutzer nicht mit unwichtigen Preferencesdateien zu belästigen oder aber böse, die Informationen abspeichern... achwas, mit ls -a kriegen wir sie alle:

ls -a

*baff*

Die normalerweise unsichtbaren Dateien und Ordner haben alle einen Punkt am Anfang, das sagt dem System, daß es sie unsichtbar machen soll und im Finder nicht darstellen. So ein unsichtbarer Ordner ist eigentlich was feines, überlegt mein Zauberlehrling. Da könnte ich meine ganzen Po... er bricht ab. Ja, da könnte man seine ganzen Pornobildchen verstecken. Zaubern wir also einen unsichtbaren Ordner. Das klappt mit dem einfachen Ordnerzauberspruch mkdir.

mkdir .xxx

Levitations- und Replikationmagie

Im Finder sieht man nichts davon und so können wir unseren neuen Ordner auch nicht mit der Maus füllen, sondern kehren wieder zur Shell zurück. Na, dann mach mal, sage ich zu meinem Zauberlehrling. Der Spruch heißt mv. *großes Armwedeln, Räucherstäbchen entzünd*

mv unanständiges bild.jpg .xxx/

"Das wird nicht klappen" unterbreche ich ihn. "Du hast die zwei unsäglichen Dinge getan, die man als Zauberer nie tun darf."
1. Dateinamen mit Leerzeichen sind böse.
mv bewegt nämlich nicht nur Dateien in Ordner, sondern schreibt auch Dateien über Dateien. Mit dem letzten Spruch hättest du Glück gehabt - er hätte nicht funktioniert. doch ohne .xxx/ dahinter hättest du die Datei unanständiges - so es sie gibt - in bild.jpg umbenannt.
2. Dateinamen mit Umlauten sind böse.
Das läßt sich ganz einfach erklären: was machst du mit dieser Datei, wenn du an einer Tastatur ohne Umlaute sitzt?

Benennen wir dieses Unding also erstmal um. Das geht auch mit mv. Jetzt müssen wir nur versuchen, den Dateinamen korrekt in die Shell einzugeben. Das ä klemmt, aber der Tabulator vervollständigt den Dateinamen halbwegs korrekt zu unansta\314\210ndiges\ bild.jpg. Der Backslash ist die Methode der shell, mit dem bösen Leerzeichen fertig zu werden. Er sagt: hey, der Dateiname ist noch nicht zu Ende, nach dem Leerzeichen gehts noch weiter. Sowas nennt man Escape.

mv unansta\314\210ndiges\ bild.jpg unanstaendiges-bild.jpg

*uff* schon besser...
und nun ab damit in den geheimen Ordner

mv unanstaendiges-bild.jpg .xxx/

Durch die Erfahrung mit den Umlauten verunsichert, fragt mein Lehrling, was denn noch alles gefährlich wäre. Was passiert denn z.B. wenn ich eine datei einfach nur . nenne? Die Datei gibts schon, antworte ich. Was? Schau doch einfach mal nach! und ls -a fördert auch tatsächlich gleich zwei sehr merkwürdige Dateien zu Tage: . und ..

Was ist denn das? Der . ist eine Repräsentation des aktuellen Verzeichnisses, und .. repräsentiert das übergeordnete Verzeichnis. Deshalb kann ich mich auch mit cd .. eine Ebene höher bewegen. Und wozu braucht man den Punkt? Das ist eine längere Geschichte, da muß ich ein bißchen ausholen. Du hast gesehen, daß man mit einer Shell auch leicht Unsinn machen kann. Was hindert beispielsweise einen bösen Zauberer daran, in das Verzeichnis, in dem du gerade bist, ein kleines Programm zu legen, das wirklich böse Sachen anstellt und gemeinerweise "cd" heißt? Du gibst cd ein, um in ein anderes Verzeichnis zu wechseln und es löscht in Wirklichkeit alle Daten. Davor schützt dich die Shell, in dem sie nur Kommandos ausführt, die in einem Verzeichnis aufbewahrt sind, das sie kennt. Welche Verzeichnisse das sind, erfährst du, indem du sie nach dem Pfad fragst. Dazu sagst du

echo $PATH

Das Dollarzeichen sagt der Shell, daß es nach einer Variable suchen soll, die den Namen PATH trägt.

Jetzt kennen wir also alle Verzeichnisse, in denen unsere Shell nach Zaubersprüchen sucht. Wenn nun ein Zauberspruch in einem anderen Ordner liegt, weigert sie sich, diesen Zauber auszuführen. Wenn wir genau wissen, daß dieser zauber gut ist und keinen Schaden anrichten kann, können wir ihn aber trotzdem ausführen, indem wir davor einen Punkt setzen. Um einen neuen Zauberspruch zu erschaffen, brauchen wir so etwas zum Beispiel.

Au fein, ich will einen neuen Zauberspruch machen - wie geht das? Dazu gibt es zwei Möglichkeiten - entweder schreibst du ihn ganz selbst, in einer anderen Zaubersprache, die mächtiger ist als unsere Shell - z.B. der Programmiersprache C. Oder wir begnügen uns damit, einen Zauberspruch, den andere, weisere Magier erschaffen haben, auf unseren Computer zu kopieren. Wenn er allerdings noch in dieser höheren Zaubersprache geschrieben ist, müssen wir ihn erst übersetzen, damit ihn unser Computer versteht. Das nennt man kompilieren. Und weil die meisten Magier neue Zaubersprüche so schreiben, daß sie auf vielen verschiedenen Computern funktionieren sollen und keine Lust haben, für alle Computer ihr Programm zu übersetzen, müssen wir das selber machen.

An dieser Stelle bricht der Text leider ab. Vielleicht komme ich eines Tages dazu, ihn weiterzuschreiben. Aber vielleicht hast du ja Lust, bei den Zeitschriftenartikeln weiterzulesen?