Wer hatte nicht schon mal den Finger auf der falschen Taste?
jcb@hercules:~$ cd /use/local bash: cd: /use/local: Datei oder Verzeichnis nicht gefunden
Ups, müsste wohl "usr" heißen. Also neue Zeile, neues Glück. Das muss aber gar nicht sein. Der Einzeiler
shopt -s cdspell
- den man beispielsweise günstig in .bashrc platzieren kann - bewirkt, dass die Shell den Vertipper stillschweigend korrigiert und so tut, als sei nichts gewesen:
jcb@hercules:~$ cd /use/local /usr/local
Manchmal muss man mehrfach zwischen verschiedenen Verzeichnissen wechseln. Beispielsweise könnte man sich einen eigenen Apache im Homeverzeichnis unter ~/Apps installiert haben, dessen Konfiguration aber zum Teil unter /etc liegt, das Init-File zum Starten dagegen unter /etc/init.d. Nehmen wir an, dass man zum Auprobieren spezieller Optionen zwischen diesen Verzeichnissen pendeln muss. Das geht am effektivsten so:
jcb@hercules:/etc/init.d$ cd ~/Apps/Apache2/conf/ jcb@hercules:~/Apps/Apache2/conf$ pushd . ... jcb@hercules:~/Apps/Apache2/conf$ cd /etc/init.d ... jcb@hercules:/etc/init.d$ popd ~/Apps/Apache2/conf jcb@hercules:~/Apps/Apache2/conf$
Das Kommando pushd . hat das aktuelle Verzeichnis auf einen Stack geschoben (den man mit dirs betrachten kann) und wovon popd das oberste Element beim Rückweg als Sprungziel benutzt. Speziell bei langen Pfaden kann das einiges an Tipperei sparen. Liegen etliche Verzeichniss auf dem Stack, möchte man aber zu einem anderen als dem letzten zurück, hilft
jcb@hercules:/etc/init.d$ dirs -v 0 /etc/init.d 1 ~/Apps/Apache2/conf 2 ~/Apps/Apache2/conf 3 /etc/init.d 4 /etc
Nun gelangt der Admin via
pushd +<Nummer>
zum gewünschten Verzeichnis. Noch einfacher geht das Hin- und Herwechseln bei nur zwei Verzeichnissen mit
cd -
das zu dem Verzeichnis zurückführt, von dem aus man das aktuelle betreten hatte. Überspringt man dagegen immer eine feste Anzahl Unterverzeichnisse, hilft auch
alias ..='cd ..' alias ..='cd ../..' alias ....='cd ../../..'
und so weiter. Dauerhaft verankern lässt sich das wieder in der .bashrc . Steuert man immer wieder Unterverzeichnisse ein und desselben Directories an, lohnt es sich, das Verzeichnis in der Environmentvariablen CDPATH festzuhalten, etwa
export CDPATH=/home
Dann fürhrt ein
cd jcb
immer zu
/home/jcb
, ganz egal aus welchem Verzeichnis heraus man diesen Befehl absetzt. Aber Achtung: Ein
cd jcb
in
/var/mail
führt dann beispielsweise auch nach Hause und nicht in die Mailbox!
Man kann sich also durchaus selbst für cd ein paar nützlich Kniffe merken.