Como altero a cor do título padrão no iTerm2
Você pode fazer isso modificando a variável PROMPT_COMMAND
.
O conteúdo desta variável não é apenas uma string, como com PS1
. Na verdade, é um comando que é executado antes de o bash exibir o prompt.
Como personalizar o prompt de comando
Customizing
PROMPT_COMMAND
The better way to do this is the use the
PROMPT_COMMAND
variable; the contents of this variable isn’t just a string, like withPS1
. It’s actually a command that executed before bash displays the prompt. To give this a try, let’s add this to our.bashrc
:PROMPT_COMMAND='echo "comes before the prompt"'
We’re using the
echo
command here; if you aren’t familiar with it, you just pass it a string, and it will write it to the terminal. By itself, it’s not incredibly useful (although you can use it to view variables:echo $PS1
), but it’s great when used with other commands, so display their output.Let’s do something more useful here. Let’s write a bash function that we will assign to
PROMPT_COMMAND
. Try this:print_before_the_prompt () { echo "comes before the prompt" } PROMPT_COMMAND=print_before_the_prompt
If you use this, you shouldn’t see a difference in your prompt from what we have above. Now, let’s make this useful.
print_before_the_prompt () { echo "$USER: $PWD" } PROMPT_COMMAND=print_before_the_prompt PS1='->'
print_before_the_prompt
é posteriormente modificado para adicionar cor ao prompt.
...
Adding Some Color
Looking good! But let’s take it one step farther. Let’s add some color to this. We can use some special codes to change the color of the text in the terminal. It can be rather daunting to use the actual code, so I like to copy this list of variables for the color and add it at the top of my .bashrc file:
txtblk='\e[0;30m' # Black - Regular txtred='\e[0;31m' # Red txtgrn='\e[0;32m' # Green txtylw='\e[0;33m' # Yellow txtblu='\e[0;34m' # Blue txtpur='\e[0;35m' # Purple txtcyn='\e[0;36m' # Cyan txtwht='\e[0;37m' # White bldblk='\e[1;30m' # Black - Bold bldred='\e[1;31m' # Red bldgrn='\e[1;32m' # Green bldylw='\e[1;33m' # Yellow bldblu='\e[1;34m' # Blue bldpur='\e[1;35m' # Purple bldcyn='\e[1;36m' # Cyan bldwht='\e[1;37m' # White unkblk='\e[4;30m' # Black - Underline undred='\e[4;31m' # Red undgrn='\e[4;32m' # Green undylw='\e[4;33m' # Yellow undblu='\e[4;34m' # Blue undpur='\e[4;35m' # Purple undcyn='\e[4;36m' # Cyan undwht='\e[4;37m' # White bakblk='\e[40m' # Black - Background bakred='\e[41m' # Red badgrn='\e[42m' # Green bakylw='\e[43m' # Yellow bakblu='\e[44m' # Blue bakpur='\e[45m' # Purple bakcyn='\e[46m' # Cyan bakwht='\e[47m' # White txtrst='\e[0m' # Text Reset
There’s some method to this madness: The first set are turn on normal coloring. The second set turn on bold coloring. The third set turn on underlined coloring. And that fourth set turn on background coloring. That last one resets the coloring to normal. So, let’s use these!
print_before_the_prompt () { printf "\n $txtred%s: $bldgrn%s \n$txtrst" "$USER" "$PWD" }
Here, I’ve added
$txtred
before the first%s
, and$bldgrn
before the second%s
; then, at the end, I’ve reset the text color. You have to do this because once you set a color, it will hold until you either use a new color or reset the coloring. You’ll also notice that when setting a variable, we don’t prefix it with a dollar sign; but we do use the dollar sign when using the variable: that’s the way bash variables work. This gives us the following: