Blog do Julio

Hacks, tutoriais e dicas

Prompt Curto No Bash E ZSH

| Comments

Eu procuro deixar meus arquivos bem organizados para que seja fácil encontrar algum arquivo quando eu precisar; uma das consequências dessa organização é que, às vezes, é necessário navegar por vários subdiretórios até chegar onde quero.

Por exemplo, para um simples acesso a um livro, eu tenho que executar os seguintes 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 e navegar até a pasta correta não é nada complicado combinando tab completion e um alias no meu ~/.bashrc que me leva direto para a pasta Documentos: alias documentos=‘cd /media/externo/Documentos’

O problema aqui é que o prompt da linha de comando exibe o caminho completo da pasta onde estou; nesse caso são apenas 8 diretórios com nomes curtos, mas, em muitos casos, é preciso entrar em pastas ainda mais profundas e com nomes longos, o que faz com que só o caminho para a pasta ocupe toda a tela.

BASH

Existe uma variável de sistema que “apara” a exibição desse caminho, limitando-o a um número máximo de diretórios mostrados. Essa variável é a PROMPT_DIRTRIM. Basta exportá-la igualada ao valor máximo de pastas a serem exibidas (3 é um bom número) que o restante do caminho será substituido por “…”.

Exemplo: 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 tonar essa alteração permanente, adicione a seguinte linha ao ~/.bashrc: export PROMPT_DIRTRIM=3

ZSH

Para o ZSH não existe uma variável $PROMPT_DIRTRIM igual ao BASH, mas podemos conseguir um resultado parecido editando a variável do próprio $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 projetos/Sites/gera_curriculo> pwd
/media/externo/Documentos/Programacao/Web/comp/www/projetos/Sites/gera_curriculo

O segredo está no “%3c”, que faz com que apenas os 3 últimos diretórios sejam exibidos.

Para tornar essa mudança padrão, basta exportar essa variável no ~/.zshrc: export PROMPT=‘%n@%m %{$fg[$user_color]%}%3c%{$reset_color%}%(!.#.>) ’


O arquivo que utilizei como exemplo é um dos melhores livros introdutórios para aprender Common Lisp e pode ser consultado gratuitamente em http://gigamonkeys.com/book/

Comments