bash PS1 256 cores com negrito

3

Eu quero listar todas as cores que eu posso usar no console bash. E depois eu quero definir o meu prompt para ser cor de laranja e negrito. Estou usando isso para listar códigos de cores para mim:

for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done

Mas a questão é como torná-lo em negrito e manter as cores?

Procurei alguns conselhos para torná-lo ousado aqui: link , mas não consegui encontrar nenhum código que combinasse negrito e uma das 256 cores.

    
por piotrekkr 02.10.2013 / 11:56

2 respostas

3

Você pode escrevê-lo como qualquer um desses:

echo -e "\e[1;38;05;${code}m $code: Test"
echo -e "\e[1m\e[38;05;${code}m $code: Test";
echo -e "\e[38;05;${code}m\e[1m $code: Test";
echo -e "\e[38;05;${code};1m $code: Test";
tput bold; tput setaf "$code" # provided the terminfo database is
                              # properly populated

Você pode executar tput bold apenas uma vez, desde que você não redefina o negrito com tput sgr0 ou \e[m ou \e[0m .

    
por 02.10.2013 / 14:23
2

Para suplementar o exemplo de Stephane, aqui está uma função de shell rápida para listar todas as 256 cores:

#!/bin/bash
esc=$'3'
for row in {0..15} ; 
do
    rowtext=
    for col in {0..15}; 
    do
        color=$(( $row * 16 + $col))
        BG="${esc}[48;5;${color}m"
        rowtext=${rowtext}$BG\ 
        if [[ $color -lt 100 ]]; then rowtext=${rowtext}$BG\   ;fi 
        if [[ $color -lt 10 ]]; then rowtext=${rowtext}$BG\   ;fi 
        rowtext=${rowtext}$BG${color}
        rowtext=${rowtext}$BG\ 
    done
    echo "${rowtext}${esc}[00m "
done

Esta é uma rápida "porta" de uma função zsh que eu tenho que bater. Eu pareço trabalhar (no bash), ou pelo menos bem o suficiente.

O número do código de cor é exibido no bloco de cores. Isso é o que você usaria no seu prompt ou em outro lugar para definir a cor.

    
por 02.10.2013 / 15:32