Bäumchen wechsle Dich
Schneller Verzeichniswechsel
Die cd-Erweiterung
Dies ist eine echte Erweiterung gegenüber dem nach POSIXdefinierten cd, und da sie nützlich ist, wollen wir sie auch in das normale Linux einbauen. Das geschieht recht einfach und schnell über eine function, die Sie selbst erstellen und beispielsweise in Ihre .bashrc dauerhaft einbinden können. Betrachten Sie kurz Listing 1, das Sie auch auf der Heft-CD finden.
Listing 1
Die Funktion <I>cd<I>
###############################
## cd - erweitert ###
###############################
function cd
{
#
# wurden mehr als zwei Parameter übergeben?
#
if [ "$#" -ge 3 ]; then
echo cd: Falsche Anzahl an Parametern.
return 2
else
#
# erfolgte der cd-Aufruf klassisch mit (k)einem Parameter?
#
if [ "$2" = "" ]; then
builtin cd $1
return $?
else
#
# konnte der erste Parameter im aktuellen Pfad nicht gefunden werden?
#
if [ "$(pwd | grep $1)" = "" ]; then
echo cd: Erstes Argument kommt im aktuellen Pfad nicht vor.
return 1
else
#
# wechseln in das Verzeichnis mit vertauschter Zeichenkette
#
builtin cd $(pwd | sed "s/$1/$2/")
return $?
fi
fi
fi
}
Hier wird die Funktion cd definiert, in der zuerst die Anzahl der übergebenen Parameter überprüft wird. Die Funktion darf zwei Parameter erhalten, gibt also erst ab drei Parametern eine Fehlermeldung aus und den Returncode2 zurück. Dann unterscheidet die Funktion nach keinem, einem oder zwei Parametern. Bei keinem oder einem Parameter wird das cd-Kommando klassisch aufgerufen und dessen Rückgabewert zurückgegeben. Beachten Sie das Schlüsselwort builtin vor dem cd-Aufruf: Da die Funktion cd genannt wurde, überschreibt sie den in die Bash integrierten cd-Befehl. Mit vorangestelltem builtin erhält man aber stets den eingebauten Befehl. Ohne builtin würde die cd-Funktion sich hier selbst aufrufen und in eine Endlosschleife geraten.
Erst der Fall mit zwei Parametern ist wirklich interessant, denn hier wird zuerst getestet, ob sich der erste Parameter als Teilzeichenkette im aktuellen Pfad wiederfindet. Ist dies nicht der Fall, werden eine Fehlermeldung und der Returncode 1 zurückgegeben, ansonsten wird der Zielpfad durch Austausch des ersten Parameters durch den zweiten im aktuellen Pfad erstellt und dann (wieder mit builtin) das normale cd-Kommando aufgerufen. Somit bietet die cd-Funktion neben dem Zusatz-Feature alles, was das reguläre cd auch kann, so dass sie dauerhaft das eingebaute cd ersetzen kann.
Bekanntmachung
Wenn Sie diese Funktion in einer Datei neu-cd ablegen, können Sie diese durch Aufruf von
. neu-cd
aktivieren und fortan mit dem erweiterten cd-Befehl arbeiten. Wollen Sie diese Funktionalität auch in Zukunft nutzen, so kopieren Sie die Funktionsdefinition ans Ende der Datei .profile oder .bashrc – so ist sichergestellt, dass bei jedem Einloggen die neue cd-Funktion definiert wird.
Glossar
POSIX
Portable Operating System Interface, formuliert eine Reihe von Bedingungen an die Portabilität von Betriebssystemen. Dieser Standard sorgt dafür, dass sich ein Kommando auf verschiedenen Unix-Versionen im Wesentlichen gleich verhält.
Returncode
Jedes Kommando gibt einen Returncode zurück, der i. d. R. nach Ausführung in der Umgebungsvariablen $? zur Verfügung steht. Es ist vereinbart, dass ein Kommando den Wert 0 zurückgibt, wenn es erfolgreich gearbeitet hat. Treten Schwierigkeiten auf, so werden je nach Schwere Warnungen mit 1 bis 4 und Fehler mit 1 bis 16 im Rückgabewert quittiert. Der Wert ist kommandoabhängig.



