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.

Der Autor

Volker Schmitt ist Mathematiker und arbeitet bei einer großen Versicherung. Aus seiner Arbeit mit AIX und den Unix System Services hat er cd entw prod in seinem Linux sehr vermisst und sich mit der erweiterten cd-Funktion geholfen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • The Answer Girl
    Die Linux-Kommandozeile kann weitaus mehr als die gute alte DOS-command.com. Doch viele ihrer Schätze sind schwer zu finden.
  • Muschelsuppe
    Die Hotwire-Shell hat sich zum Ziel gesetzt, die oft umständliche Arbeit in der Konsole mit Interaktionen zu vereinfachen und langfristig die traditionellen Eingabefenster zu ersetzen.
  • Dr. Linux
    Was sich hinter einem Befehl versteckt oder wer gerade eingeloggt ist; das alles lässt sich mit wenigen Eingaben auf der Tastatur herausfinden.
  • Zu Befehl: pwd, cd, pushd, popd und dirs
    Die Wege im Verzeichnisdschungel sind unergründlich. Wie Sie auf dem rechten Pfad bleiben und welche Kommandos bei der Navigation helfen, zeigt diese "Zu Befehl"-Folge.
  • Shell-Tipps
    Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller bewältigen als in grafischen Programmen. Wir stellen interessante Anwendungen und Aufrufparameter vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 3 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...