[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal:Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Der Befehl '''cd''' steht für '''c'''hange '''d'''irectory und dient - unter Berücksichtigung von Groß-/Kleinschreibung! - zum Wechsel in ein (Unter-)Verzeichnis. cd ist eine von der Shell (zum Beispiel der [:Bash:] und der [:Dash:]) mitgelieferte Funktion (''bultin''). = Syntax = Die allgemeine Syntax ist [1]: {{{#!vorlage Befehl cd [OPTION] VERZEICHNIS }}} = Optionen = Bei den meisten Shells kennt cd mindestens die folgenden beiden Optionen: ||'''Option'''||'''Beschreibung'''|| || ``-L`` ||cd folgt der logischen Verzeichnisstruktur (Standard)|| || ``-P`` ||cd folgt der physischen Verzeichnisstruktur|| Die Bash kennt auch noch die Optionen `-e` und `-@` Normalerweise wechselt cd in das angegebene Verzeichnis, sofern dieses existiert und der Benutzer dieses auch betreten darf. Damit wird dieses zum aktuellen Arbeitsverzeichnis. Im Fehlerfall bleibt man im vorherigen Arbeitsverzeichnis. = Beispiele = Das gewünschte Verzeichnis kann absolut mit vorangestelltem ``/`` von der Verzeichniswurzel aus oder relativ vom aktuellen Verzeichnis aus angegeben werden: {{{#!vorlage Befehl cd /usr/local # Wechsel nach /usr/local cd bin # Wechsel von /usr/local nach /usr/local/bin }}} Die Arbeitsweise für die Angabe per relativem Verzeichnis kann mit der Variablen `CDPATH` geändert werden. Das neue Verzeichnis wird zuerst im aktuellen Verzeichnis und dann in den mit dieser Variablen angegebenen Verzeichnissen gesucht. In `CDPATH` gibt man die Verzeichnisse durch „`:`“ getrennt an: {{{#!vorlage Befehl CDPATH='/:/tmp' # durchsuche akt. Verz., dann /, dann /tmp }}} Wird kein Verzeichnis angegeben, so wechselt cd in das mit der Variable `HOME` angegebene Verzeichnis; in der Regel ist dies das Home-Verzeichnis des aktuellen Benutzers. Wenn `HOME` nicht gesetzt ist, macht cd gar nichts. {{{#!vorlage Befehl cd # Wechselt nach $HOME }}} Wird ein „`-`“ angegeben, so wechselt cd in das vorherig benutzte Verzeichnis: {{{#!vorlage Befehl cd /tmp # Wechsel ins tmp-Verzeichnis cd /usr/local # Wechsel nach /usr/local cd - # Wechselt wieder ins tmp-Verzeichnis }}} Das übergeordnete Verzeichnis wird kurz mit zwei Punkten gekennzeichnet: {{{#!vorlage Befehl cd .. # Wechselt ins übergeordnete Verzeichnis also z.B. von /home/user nach /home cd ../user2 # Wechselt ins übergeordnete Verzeichnis und von dort nach user2, also z.B. von /home/user nach /home/user2 }}} Will man in ein Verzeichnis wechseln, dessen Name Leerzeichen enthält, so muss man diese durch vorangestellte '''\ ''' maskieren. Das wird auch automatisch gemacht, wenn man den Pfad wie gewohnt mit [[Vorlage(Tasten, tab)]] vervollständigt. Alternativ ist aber auch möglich, den ganzen Pfad unter Anführungszeichen zu setzen. {{{#!vorlage Befehl cd /media/Fotos\ Hawaii cd "/media/Fotos Hawaii" }}} Dies gilt gleichermaßen auch für die anderen aus Sicht der Shell besonderen Zeichen, wie Tabulator, Zeilenschaltung, den Doppelpunkt `:` und Klammern `([{` usw. = Gebrauch der Option `-P` = Wenn das gewünschte Ziel ein [:ln:symbolischer Link] auf ein reales/physisches Verzeichnis ist unterscheidet sich die Arbeitsweise von cd je nach Angabe der Option `-L` oder `-P`. Nach einem erfolgreichen Wechsel in das neue Arbeitsverzeichnis wird mit der Option * `-L` (bzw. keiner Angabe) stets das angegebene Zielverzeichnis, * aber mit `-P` stets das aufgelöste Ziel des Links als aktuelles Arbeitsverzeichnis angezeigt. Beispielsweise ist '''/bin''' ein symbolischer Link: {{{#!vorlage Befehl user@hostname:~$ file /bin }}} {{{ /bin: symbolic link to usr/bin }}} {{{#!vorlage Befehl user@hostname:~$ cd -L /bin user@hostname:/bin$ }}} aber {{{#!vorlage Befehl user@hostname:~$ cd -P /bin user@hostname:/usr/bin$ }}} Dies gilt auch für die Ausgabe des Befehls '''pwd''' und den Wert der Variablen `PWD`. = Links = * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle # tag: Shell