como obter [current_path] no prompt do shell do bash?

2

É possível ter o nome do diretório de trabalho atual no prompt no shell?

Estou trabalhando em OSX e CentOS em vários projetos em / srv / ... e um erro para o diretório errado é rapidamente feito.

Eu gostaria de ter

[current_path] no meu prompt de alguma forma, talvez colorido Isso é possível?

Por exemplo, como / srv / myproject, ele forneceria prompt [root @ server [myproject] # Isso deve permanecer o mesmo, mesmo em / srv / myproject / app / etc

    
por Rubytastic 25.06.2013 / 18:59

3 respostas

0

Isso deve estar perto do que você está procurando:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"\$p$ \" )"

Para testes, use isso para mostrar o diretório completo juntamente com o truncado para comparação:

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p=[\${p%%/*}]; echo -n \"[\$PWD] \$p$ \" )"

As saídas fazem com que a expansão da variável seja adiada até que o prompt seja emitido. As expansões de parâmetro eliminam o primeiro diretório de nível e todos os níveis de diretório abaixo do segundo nível.

Você provavelmente precisará:

shopt -s promptvars

mas acho que é o padrão.

O prompt só faz seu trabalho quando você está em um diretório em /srv

Esta é uma maneira de adicionar algumas cores. Isso torna o nome do projeto ciano.

PS1="\$([[ \$PWD == /srv/*/* ]] && p=\${PWD#/*/} && p='[\[3[1;36m\]'\${p%%/*}'\[3[0m\]]'; echo -n \"\$p$ \" )"
    
por 26.06.2013 / 03:45
2

A seqüência de caracteres para o diretório de trabalho atual completo em $PS1 é \w . Consulte "Dica: Avisar a mágica" para obter mais detalhes.

    
por 25.06.2013 / 19:01
2

Eu uso a seguinte string em /etc/bashrc em meus sistemas Linux. Geralmente, é uma questão de substituir um "W" maiúsculo por minúsculas "w" na maioria das instalações padrão do Bash:

PS1="[\u@\h \w]\$ "

Isso produz:

[root@MDMarra /ppro/edi/0010/GOODBI/receive/archive]#  

em vez de:

[root@MDMarra archive]#
    
por 25.06.2013 / 19:03