Como definir a cor do prompt de comando no Bash?

5

Navegar nos resultados do último comando no Bash é um pouco difícil porque o prompt de comando e os resultados são da mesma cor. Isso dificulta a separação dos resultados de comandos consecutivos.

Como faço para mudar a cor para rosa, por exemplo?

    
por Yasser Zamani 08.05.2012 / 19:32

2 respostas

7

@Rob está certo; especificamente, para mudar para vermelho claro (rosa não é uma cor disponível):

PS1 = "\[3[1;31m\]\u:\w\$\[3[0m\] "
#      ^^^^^^^     ^^                    Begin/end ANSI escape
#             ^^^^^                      "light red foreground"
#                    ^^^^^^^             Your original prompt
#                           ^^^^^^^^^^^  Reset color back to default foreground

Você precisa usar sequências de escape ANSI (neste caso, 1;31m , o código para "primeiro plano vermelho claro"), delimitado por \[3[ e \] .

Editar: O roxo claro pode estar mais próximo da cor desejada. a mudança de PS1 é deixada como um exercício para o leitor.

referência @ o projeto de documentação do linux

    
por 08.05.2012 / 20:48
0

Se você quiser uma solução alternativa, você pode criar um pequeno script para definir as cores PS1 da sessão de terminal sem torná-las permanentes (a menos que você deseje cores permanentes, siga a solução de Alex).

Se criarmos yellow.sh e salvarmos no diretório /usr/bin e, em seguida, tornar o arquivo executável com chmod +x yellow.sh , poderemos editar o yellow.sh e adicionar o seguinte código:

#!/bin/bash
clear

# Yellow color variable
ylw='\x1b[93m'

echo -e "${ylw}"
clear

A execução desse script alterará a cor do terminal para amarelo. Você pode redefinir sua cor do PS1 da mesma maneira usando este código:

#!/bin/bash
clear

# Reset color to default
rst='\x1b[0m'

echo -e "${rst}"
clear

Aqui está uma lista rápida de algumas variáveis de código de cores que você pode usar.

black=$'\x1b[90m' # Dark gray. Not used much.
red=$'\x1b[91m'
green=$'\x1b[92m'
yellow=$'\x1b[93m'
blue=$'\x1b[94m'
purple=$'\x1b[95m'
cyan=$'\x1b[96m'
pink=$'\x1b[97m'
default=$'\x1b[0m' # Reset to default color.

Uso de comandos comuns em scripts simples:

echo -e "${red} $(ls $1) ${default}" # Argument would be the directory you want to list.

Isso pode ser feito rapidamente, dependendo de como você configura suas cores para serem usadas. Os códigos de cores que forneci não são todos. Dependendo de quais cores o seu terminal suporta, você pode usar um intervalo de 256 cores.

    
por 07.11.2016 / 15:05