Quero listar todas as cores que posso usar no console bash. E depois disso eu quero definir meu prompt para ser em negrito e na cor laranja. 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 fazer issoaudaciosoe manter as cores?
Procurei alguns conselhos sobre como torná-lo ousado aqui:http://misc.flogisoft.com/bash/tip_colors_and_formattingmas não encontrei nenhum código que combine negrito e uma das 256 cores.
Responder1
Você pode escrevê-lo como qualquer um destes:
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 não redefina oousadiacom um tput sgr0
ou \e[m
ou \e[0m
.
Responder2
Para complementar o exemplo de Stephane, aqui está uma função shell rápida para listar todas as 256 cores:
#!/bin/bash
esc=$'\033'
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 "porta" rápida de uma função zsh que preciso fazer o bash. Parece que estou funcionando (no bash), ou pelo menos bem o suficiente.
O número do código de cor é exibido no bloco de cores. Isto é o que você usaria no seu prompt ou em outro lugar para definir a cor.