Porque é que esta festa pronta a agir estranhamente / desaparecendo, e como faço para corrigir isso (OS X)?
Pergunta
Eu admito que eu usar uma festança pouco prolixo prompt:
--(username)-(Wed April 01|12:00:00)--(~ $
Recentemente, tive a brilhante idéia de alterá-lo para que dependendo do valor de saída do comando anterior, se o sucesso, os elementos interiores dos () 's seria verde, e se a falha, eles seria vermelho. Eu tenho que trabalhar para a maior parte (cerca de status de saída estranhos irá mudar a cor para outra coisa, mas estou ok com ele), mas ao digitar um comando que é mais de uma linha, e faz com que o terminal de rolagem, o desaparece alerta! Meu funcionou bem rápida quando não havia nenhuma cor, então eu estou supondo que está relacionado com a minha cor de escapar e, particularmente, a minha [não fechada 's, mas não posso fixá-lo.
#.profile
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '
Agradecemos antecipadamente!
Solução
Parece este deve resolver o seu problema.
Este parece funcionar para me*
:
export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ '
*
bem, funciona muito export PS1='\u@\h:\w\$ '
para me
Para citar o post ligado, as mentiras resposta em adicionar \ [e \] em torno de todas as suas seqüências de cores na sua declaração PS1:
Antes eu tinha o seguinte valor para PS1:
'\ e [0; 34m \ h: \ w [] \ $ \ e [0m!'
que me deu um belo azul imediata da seguinte forma
hostname:-diretório de trabalho [-número de comando] $
No entanto, eu tive o mesmo problema quebra de linha que você fez. A correção foi para inserir \ [e \] em torno da ANSI escapa de modo que a casca não sabe para incluí-los no cálculo a quebra de linha. Isso resulta no seguinte valor para PS1:
'\ [\ e [0; 34m \] \ h: \ w [] \ $ \ [\ e [m \]'
Outras dicas
http://mywiki.wooledge.org/BashFAQ/053 - tenho uma fantasia a tempo com cores e, agora, o bash não parecem saber como grande meus é terminal . Linhas de envolver em torno de forma incorreta.
A propósito; para sua referência; aqui está o meu PS1
que tem esta aparência:
(fonte: lyndir.com )
\[$reset$bold$green\]\u@\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\]
Observe como eu colocar todos os códigos de cores em $parameters
para torná-lo mais puro, mas mais importante, porque você deve estar usando tput
para gerá-los . Veja:
http://mywiki.wooledge.org/BashFAQ/037 -? Como posso imprimir um texto em várias cores
Eu declaro meus parâmetros de cor em um script utilitário que fica fontes de minha ~/.bashrc
( e os scripts que eu escrevo) que é chamado bashlib
.
Em uma nota final; colocar a sua definição PS1
em ~/.bashrc
e não export
-lo. Não há absolutamente nenhuma razão para que você deve adicionar a sua definição PS1
ao ambiente de qualquer e todos os processos você gerar a partir de sua concha.
Você parece estar faltando os colchetes inicial e final em torno de seus escapes (antes da primeira '\ e' e após a última 'm'):
PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ '
Como mencionado, o PS1 var não precisa ser exportado:. Apenas suas necessidades shell para vê-lo