Kurzer Prompt in Bash und ZSH

Juni 15, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 Min Lesezeit

Ich versuche, meine Dateien gut organisiert zu halten, damit ich sie leicht finde. Eine Folge davon ist, dass ich mich manchmal durch mehrere Unterordner hangeln muss, um dorthin zu gelangen, wo ich hinwill.

Zum Beispiel, um ein Buch zu öffnen, brauche ich diese Befehle:

julio@julio-acer ~  $ cd /media/externo/Documentos/Ebooks/Programacao/Lisp/Peter Seibel/Practical Common Lisp/
julio@julio-acer /media/externo/Documentos/Ebooks/Programacao/Lisp/Peter Seibel/Practical Common Lisp  $ okular Practical Common Lisp.pdf &

Mit Tab‑Completion, autojump‑Plugins (z. B. fasd) und Aliassen in meiner ~/.bashrc ist das Navigieren nicht kompliziert – so komme ich direkt in den gewünschten Ordner:

alias docs='cd /media/externo/Documentos'

Das Problem ist, dass die Shell‑Eingabeaufforderung den kompletten Pfad anzeigt; in diesem Beispiel sind es nur 8 Ordner mit kurzen Namen, oft aber tiefere Strukturen mit langen Namen, sodass der Pfad den Bildschirm einnimmt.

Bash

Es gibt die Systemvariable PROMPT_DIRTRIM, die die Anzeige des Pfads auf eine maximale Anzahl von Ordnern begrenzt. Einfach auf die gewünschte Zahl setzen (3 ist ein guter Wert) und der Rest des Pfades wird durch ... ersetzt.

Beispiel:

julio@julio-acer ~  $  cd /media/externo/Documentos/Ebooks/Programacao/Lisp/Peter Seibel/Practical Common Lisp/
julio@julio-acer /media/externo/Documentos/Ebooks/Programacao/Lisp/Peter Seibel/Practical Common Lisp $  export PROMPT_DIRTRIM=3
julio@julio-acer .../Lisp/Peter Seibel/Practical Common Lisp  $  pwd
/media/externo/Documentos/Ebooks/Programacao/Lisp/Peter Seibel/Practical Common Lisp
julio@julio-acer .../Lisp/Peter Seibel/Practical Common Lisp  $

Um die Änderung dauerhaft zu machen, diese Zeile zu ~/.bashrc hinzufügen:

export PROMPT_DIRTRIM=3

ZSH

In ZSH gibt es keine Variable $PROMPT_DIRTRIM wie in BASH, aber wir können ein ähnliches Ergebnis erzielen, indem wir die Variable $PROMPT (=$PS1) bearbeiten:

julio@julio-acer /media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo> pwd
/media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo
julio@julio-acer /media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo> PROMPT='%n@%m %{$fg[$user_color]%}%3c%{$reset_color%}%(!.#.>) '
julio@julio-acer projetos/Sites/gera_curriculo> pwd
/media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo

Das Geheimnis ist %3c, das nur die letzten drei Ordner anzeigt.

Um die Änderung standardmäßig zu setzen, diese Variable in ~/.zshrc exportieren:

export PROMPT='%n@%m %{$fg[$user_color]%}%3c%{$reset_color%}%(!.#.>) '

Das Beispielbuch ist eines der besten Einführungsbücher für Common Lisp und kann hier kostenlos eingesehen werden: http://gigamonkeys.com/book/

Julio Batista Silva
Autoren
Senior Cloud-Entwickler
comments powered by Disqus