Kurzer Prompt in Bash und ZSH
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/