Prompt corto en Bash y ZSH

jun. 15, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 min de lectura

Procuro mantener mis archivos bien organizados para que sea fácil encontrar algo cuando lo necesite; una consecuencia de esa organización es que, a veces, es necesario navegar por varios subdirectorios hasta llegar a donde quiero.

Por ejemplo, para abrir un libro, tengo que ejecutar los siguientes comandos:

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 &

Encontrar y navegar hasta la carpeta correcta no es nada complicado combinando tab completion, plugins de autojump (p. ej.: fasd) y alias en mi ~/.bashrc que me llevan directo a la carpeta deseada:

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

El problema aquí es que el prompt de la línea de comandos muestra la ruta completa del directorio en el que estoy; en este caso son solo 8 directorios con nombres cortos, pero, en muchos casos, hay que entrar en rutas aún más profundas y con nombres largos, lo que hace que solo la ruta ocupe toda la pantalla.

Bash

Existe una variable del sistema que “recorta” la visualización de esa ruta, limitándola a un número máximo de directorios mostrados. Esa variable es PROMPT_DIRTRIM. Basta con exportarla con el valor máximo de carpetas a mostrar (3 es un buen número) y el resto de la ruta será sustituido por ....

Ejemplo:

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  $

Para hacer este cambio permanente, añade la siguiente línea a ~/.bashrc:

export PROMPT_DIRTRIM=3

ZSH

En ZSH no existe una variable $PROMPT_DIRTRIM como en Bash, pero podemos lograr un resultado parecido editando la propia variable del $PROMPT (=$PS1):

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 proyectos/Sites/gera_curriculo> pwd
/media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo

El secreto está en %3c, que hace que solo se muestren los 3 últimos directorios.

Para hacer este cambio predeterminado, basta con exportar esa variable en ~/.zshrc:

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

El archivo que utilicé como ejemplo es uno de los mejores libros introductorios para aprender Common Lisp y puede consultarse gratuitamente en http://gigamonkeys.com/book/

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus