Como limpar a formatação do PS1 no gnome-terminal?

4

Eu configurei gnome-terminal em .bashrc para ter cores personalizadas:

PS1='${debian_chroot:+($debian_chroot)}\[3[00;37m\][\[3[00;32m\]\t\[3[00;37m\]] \[3[01;34m\]\u\[3[00;37m\]@\[3[01;34m\]\h\[3[00;37m\]:\[3[01;34m\]\w\[3[01;32m\]$ '

E isso significa que, ao executar algo assim:

A saída se parece com isso, mesmo que a primeira linha seja branca e fique branca até que eu digite o comando digitado também em verde:

Então, como posso fazer com que a cor do texto de saída não seja afetada pelo fato de eu ter definido a cor do comando como verde? Estou executando o Ubuntu GNOME 15.04 com o GNOME 3.16.

Atualização de informações:

Tenho notado que, ao executar sudo rkhunter --nocolor --update , a saída é toda verde.

    
por terdon 15.10.2015 / 15:49

1 resposta

8

O problema é que você está configurando o comando para estar em verde, mas não está fechando o código de escape de cor. Portanto, todas as linhas subseqüentes, incluindo a saída de quaisquer comandos que não tenham sua própria formatação aplicada, são mostradas nessa cor. Como solução alternativa ( source ), você poderia trap imprimir o código de fechamento no sinal DEBUG. Adicione esta linha ao seu ~/bashrc

trap 'printf "\e[0m" "$_"' DEBUG

Isso imprimirá \e[0m (que fechará o código de cores aberto). Como é trap ped para o sinal DEBUG , ele será executado antes de qualquer comando executado. Então, entre apertar Enter e o comando realmente rodando. Conforme explicado em man bash :

  

Se um sigspec for DEBUG, o comando arg será executado antes de cada comando simples, por comando, comando de caso,         selecione comando, toda aritmética para comando, e antes do         primeiro comando é executado em uma função shell (veja SHELL GRAMMAR         acima).

    
por terdon 15.10.2015 / 16:10