redefinir a cor da saída após o meu comando no shell bash

1

Eu quero distinguir meu comando do resto da saída do shell facilmente através de cores diferentes. Mas eu não tenho muita experiência com a personalização do meu bash shell, então eu não sei como redefinir a cor (após) minha entrada.

minha variável atual do PS1 é assim:

export PS1="$red\u$green\$(__git_ps1) $turk\w
$white$ "

# '\$(__git_ps1)' git status prompt (generates a space before it even if empty)

Então minha entrada é branca. Mas até mesmo a saída dos comandos é branca porque não é redefinida. Além disso, se o próprio comando cor codifica sua saída, ele mesmo redefine as cores que resultam em alguma mistura feia de branco e cinza.

Como faço para redefinir a cor depois do comando de entrada?

    
por Lockon2000 25.12.2017 / 08:08

2 respostas

4

A interceptação DEBUG é executada antes de cada comando, portanto, você pode abusar dela para redefinir as cores, caso tenha colorido a entrada da linha de comando. ("abuso", já que isso não está depurando).

Com isso:

$ promptcol="$(tput sgr0)$(tput setaf 3)"
$ cmdcol="$(tput sgr0)$(tput bold)"
$ normalcol="$(tput sgr0)"
$ trap 'echo -n "$normalcol"' DEBUG
$ PS1="\[$promptcol\]\w\$ \[$cmdcol\]"

Eu entendo isso:

Observequevocêprecisado\[...\]emtornodoscódigosdecores,paraqueoshellsaibacomocalcularalarguradopromptcorretamente.Alémdisso, observe que você não pode colocar o \[...\] dentro das variáveis , o shell lida com o prompt escapa primeiro e expansões variáveis somente depois disso.

    
por 25.12.2017 / 11:32
1

No ~/.bash_logout Insira o seguinte:

echo -e "3[0m"
/usr/bin/clear
    
por 25.12.2017 / 08:24

Tags