Format : cd [Verzeichnis[*]] [-neu] [-ffilename] Schablone : cd Verzeichnis/A Bedeutung : Das Programm 'cd' funktioniert ähnlich wie 'cd'. Mit ihm kann man das aktuelle Verzeichnis wechseln. Anders als bei 'cd' muß man aber nicht stets den kompletten Pfad angeben. Es reicht, wenn man ein Kürzel verwendet. Dies funktioniert auch über Platten hinweg. Wer nur Disketten hat, kann sich mit einem Trick auch nach dem Aufruf von 'cd' die richtige Diskette anfordern lassen. Ein Beispiel: Man weiß, daß sich irgendwo auf den Partitionen seines Rechners das Verzeichnis "vergeß_ich_nie" befindet. Man weiß aber leider nicht mehr, wo das war. Statt nun mit einem 'find'- Programm auf Suche zu gehen, tippt man cd vergeß_ und schon ist man in dem gesuchten Verzeichnis. Funktion : 'cd' durchsucht natürlich nicht bei jedem Aufruf alle verfügbaren Partitionen. Das würde viel zu lange dauern. Statt dessen macht es sich einmal eine Übersicht über alle Partitionen und schreibt diese in die Datei "s:cd.liste". Wenn Sie dann eine Zeile wie oben bereits im Beispiel gezeigt eintippen, dann sucht 'cd' im der Datei "s:cd.liste" nach dem eingegebenen Begriff. Findet es in einer Zeile den Begriff, nimmt es die ganze Zeile und versucht sie zum aktuellen Verzeichnis zu machen. Hier ein Ausschnitt aus "s:cd.liste": dh2:TeX-Texte/t dh2:fontlib dh2:config dh2:UseNet+PD dh2:UseNet+PD/Path dh2:UseNet+PD/Dice dh2:UseNet+PD/Dice/examples dh2:UseNet+PD/Dice/dlib dh2:UseNet+PD/Dice/vergeß_ich_nie dh2:UseNet+PD/Dice/dutil dh2:UseNet+PD/Dice/include In der drittletzten Zeile steht das gesuchte Verzeichnis. 'cd' nimmt nun diese Zeile und führt ein cd dh2:UseNet+PD/Dice/vergeß_ich_nie aus. 'cd' nimmt also immer das erste Verzichnis, das es in "s:cd.liste" findet und wählt dieses an. Wenn weitere Verzeichnisse auf das gleiche Suchwort passen, müssen Sie das Suchwort verlängern oder verändern. Um zum Beispiel das "vergeß_ich_nie" anzuwählen, können Sie auch cd ce/ver eingeben. Damit Sie nicht ständig zwischen zwei Programmen wie 'c:cd' und 'cd' hin - und herwechseln müssen, kann 'cd' die Funktion von 'c:cd' vollständig übernehmen. Sie können also auch mit 'cd' ganz normal Verzeichnisse anwählen. Dabei gilt folgende Reihenfolge, mit der 'cd' versucht, das Verzeichnis zu wechseln: 1. wie angegeben im aktuellen Verzeichnis 2. als Wortanfang im aktuellen oder angegebenen Verzeichnis 3. in der Liste in "s:cd.liste" Fall 1: ------- cd sys:Utilities Fall 2: ------- cd sys:Util ... dies entspricht der Folge ... cd sys: cd Util Fall 3: ------- cd Util Version 1.03 : cd wertet nun die Environment-Variable HOME aus. Diese kann 'local' oder 'global' sein (in 2.0 gibt es da einen Unterschied). Wenn man in sein HOME-Verzeichnis wechseln möchte, gibt man nur cd ~ an, und schon befindet man sich in dem Verzeichnis, dessen Name in der Variablen HOME steht. Diese kann wie folgt gesetzt werden: setenv HOME "work:c-compiler/Sourcen" oder auch set HOME "work:c-compiler/Sourcen" (nur in 2.0 möglich) Letzteres ist besonders sinnvoll, da die Variable HOME dann nur local in der Shell festgelegt ist. Jede Shell kann damit ein eigenes HOME-Verzeichnis besitzen. Für MSDOS oder UNIX-Freaks: cd .. führt zu einem Wechsel in das übergeordnete Verzeichnis Erster Start : Bevor man 'cd' benutzen kann, muß man ihm sagen, welche Partitionen und Disketten 'cd' beim ersten Start durchsuchen soll. Dies geschieht in der Datei "s:cd_drivelist". Hier können Sie Zeile für Zeile Laufwerke, Verzeichnisse und auch Diskettennamen angeben, die 'cd' durchgucken soll. Sie darf keine Leerzeilen enthalten. In jeder Zeile hat lediglich ein Laufwerk oder ein Verzeichnis zu stehen. Bei Verzeichnissen muß ein '/' das letzte Zeichen sein. Ein Beispiel dh0: dh1: dh2:Texte/ Beim Aufruf von 'cd' werden dann nur die beiden Partitionen in "dh0:", "dh1:" und die Verzeichnisse in "dh2:Texte" berücksichtigt. Verzeichnisse in "dh2:" wird 'cd' dann nicht finden. Optionen : Wenn Sie lange Zeit 'cd' benutzen und viele Verzeichnisse auf Ihren Partitionen entstanden sind, die noch nicht in der Liste stehen, müssen Sie diese notgedrungen aktualisieren. Hierzu gibt es mehrere Möglichkeiten. Zum einen läßt sich 'cd' mit der Option '-neu' (kleingeschrieben) aufrufen. Dann erzeugt es eine neue Datei "s:cd.liste". Dieses Verfahren ist am sichersten. Es funktioniert immer, dauert aber auch am längsten. Zum anderen kann man sich eine Script-Datei schreiben, die jedes neue Verzeichnis automatisch an "s:cd.liste" anfügt, wenn man ein Verzeichnis anlegt. Anbei findet sich eine solche Script-Datei. Sie heißt "mkdir". Probleme gibt es mit dieser Methode, wenn man Verzeichnisse löscht und wenn neue Verzeichnisse nicht von "mkdir", sondern beispielsweise von "copy" angelegt werden. Es empfiehlt sich also, von Zeit zu Zeit "cd -neu" aufzurufen. Manchmal kann es nützlich sein, nicht nur eine Liste mit allen Verzeichnissen zu haben, sondern deren mehrere. So ist es sicher sinnvoll, eine Liste mit allen Verzeichnissen der vorhandenen PD-Disketten anzulegen. Ein Aufruf wie cd Diskx führt dann zu der Aufforderung, die "AmigaLibDisk158" einzulegen. Die Option "-f" erlaubt die Angabe einer alternativen Datei mit Pfaden. Hierzu ist natürlich jeweils die Option mit dem Dateinamen anzugeben. Da dies eher unpraktisch viel zu tippen ist, sollten Sie einen Alias vereinbaren. Zum Beispiel: alias pd cd [] -fs:cd-pd-liste Ruft man 'cd' mit einem '?' auf, gibt es eine Zeile aus, wie es aufgerufen werden kann. Version 1.01 : Der Fehler beim Wechseln des Verzeichnisses mit Kürzel "relativ rückwärts" - Richtung Wurzel also - ist behoben. Fortan sind Wechsel wie cd /sy von Erfolg gekrönt, wenn es im übergeordneten Verzeichnis ein Verzeichnis gibt, das mit den Buchstaben "sy" beginnt. Version 1.02 : Alle Buchstaben der Verzeichnisnamen in "cd.liste" werden in Großbuchstaben umgewandelt. Dies hat einen Geschwindig- keitsgewinn von 15 Prozent zur Folge, wenn in dieser Datei gesucht werden muß. Version 1.03 : cd kann nun auch mit dem Parameter '~' aufgerufen werden. Ist dies der Fall, sucht er nach der Environment-Variable HOME und wechselt in das Verzeichnis, welches in dieser Variable steht. Ab Betriebssystemversion 2.0 gibt es lokale und globale Environment-Variablen. cd wertet zuerst die jeweils für eine Shell lokale, und wenn diese nicht vorhanden ist, die globale Variable HOME aus. Damit kann jede Shell ein eigene HOME-Verzeichnis besitzten. cd kennt einen weiteren Parameter. Es reagiert auf ".." als Ersatz für den "/". Version 1.04 : cd hatte Probleme beim Durchsuchen von Verzeichnissen, die als Netz gemountet waren (nur wichtig bei der Benutzung von PNET: oder DNET:). Dies ist nun nicht mehr der Fall. Version 1.05 : Fehler behoben, der nur auftrat, wenn man im Root-Verzeichnis einer Diskette oder Volumes war, die per Handler angesprochen wurde. Dann setzte cd den Namen im Prompt einer Shell nicht (nicht nutzungseinschränkend, nur lästig). Version 1.06 : Link-Support soweit eingebaut, daß cd nun keine Links verfolgt, wenn er eine neue Liste erstellt. Ein cd auf ein Link geht nach wie vor. Früher hieß 'cd' 'nd'. Die Namensänderung hat zur Folge, daß alle Zusatzfiles nun ebenfalls mit cd statt mit nd beginnen. Version 1.07 : Nun kann man 'cd' auch mehrfach nacheinander mit dem gleichen Begriff aufrufen. 'cd' sucht dann "weiter". Es setzt also in der Suchdatei wieder auf. Hierzu verwendet es die lokalen Environment-Variablen 'CD_INDEX' und 'CD_LAST'. In CD_INDEX speichert er die Position, an welcher er in der Suchdatei gerade war und in CD_LAST das zuletzt gesuchte Wort. Da hier lokale Variablen verwendet werden, funktioniert dies Verfahren nur unter der Workbench 2.04 oder höher. Außerdem hat sich das Dateiformat geändert. Alle Namen enden nun mit einem '/' und einer '\0' -- nicht mehr mit einem Return. Dies habe ich deswegen geändert, damit auch der MFR die 'cd.liste' nutzen kann. In der momentanen Version ist er nämlich nicht in der Lage Softlinks zu verfolgen. Ein Abbruch ist die Folge. Version 1.08 : 'cd' benutzt ab OS2.0 nun die Betriebssystem-Funktion 'SetCurrentDirName()', um den Prompt auf den Stand zu bringen. Dies hat den Vorteil, daß es nun nicht mehr zu Ungereimtheiten bei Pfaden über 80 Zeichen kommt. Allerdings schneidet diese Funktion alle Pfade ab, die mehr als 80 Zeichen enthalten.