ADMIN-Tipp: Überraschendes cd

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Manchmal verbergen sich hinter den unscheinbarsten Dingen, bei denen es keiner erwartet, noch überraschend praktische Tipps. Beispielsweise ist cd sicher eins der häufigsten Shell-Kommandos überhaupt, seine Funktion ist in einem Satz erklärt und damit scheint alles gesagt. Trotzdem kann man hier noch weniger bekannte, nützliche Tricks finden.

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.

16.05.2012

Ähnliche Artikel

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021