Porque é que esta festa pronta a agir estranhamente / desaparecendo, e como faço para corrigir isso (OS X)?

StackOverflow https://stackoverflow.com/questions/706750

  •  22-08-2019
  •  | 
  •  

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!

Foi útil?

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: text alt
(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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top