Altera a cor do texto de entrada, não a saída [duplicada]

6

Eu preciso capturar screenshots do terminal onde os comandos digitados visualmente "se destacam" do resto. Agora eu estou usando isso para fazer meus comandos digitados "vermelho":

PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[0;31m\]'

O problema é: tudo depois do prompt é vermelho, não apenas meu texto digitado

Como posso corrigir isso?

Estou usando o bash (CentOS 7).

    
por Dr. Gianluigi Zane Zanettini 26.04.2015 / 18:11

2 respostas

6

Você pode usar uma armadilha para conseguir isso: trap 'echo -ne "\e[0m"' DEBUG

De acordo com o homem de bash: uma armadilha em DEBUG executa

before every simple command, for command, case command, select command, every arithmetic for command, and before the first command executes in a shell function

Assim, toda vez que você executar o comando, o shell inserirá \e[0m desativando o código de cor anterior. Apenas para que seja reajustado através do prompt, uma vez que o comando tenha sido executado.

Eu encontrei o truque admitidamente hackiano aqui: link

    
por 26.04.2015 / 19:27
-1
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;31m\]'

Você pode consertar isso alterando a cor de saída, abaixo está um exemplo para o mesmo.

PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;34m\]\$ \[\e[m\]\[\e[1;32m\]'

O comando acima exibe a saída abaixo em verde

    
por 26.04.2015 / 19:52