Como personalizar o .bashrc para configurar o prompt de comando?

8

Existe uma maneira fácil de alterar meu prompt do Bash para modificar as cores e qual texto é exibido? Ouvi dizer que isso é feito em .bashrc , mas não encontrei nenhuma maneira fácil e agradável de modificá-lo. Como as cores são expressas no Bash?

    
por Naftuli Kay 29.04.2011 / 23:11

3 respostas

4

Eu costumava ter aqueles definidos no meu .bashrc :

export e="\e["

function cls          { echo -n "${e}H${e}J${e}0m"; }
function rcls         { echo -n "${e}H${e}J${e}S${e}H${e}J${e}0m${e}u${e}J"; } # not quite yet !
# rcls only works when no funny codes have been issued in between, i.e. the buffer is clean
# below the current screen. And then there can be issues with the first line of the buffer.

function bright       { echo -n "${e}1m"; }
function normal       { echo -n "${e}0m"; }
function colour       { echo -n "${e}$1;$2;$3m"; }
function black        { echo -n "${e}30m"; }
function bg_black     { echo -n "${e}40m"; }
function red          { echo -n "${e}31m"; }
function bg_red       { echo -n "${e}41m"; }
function green        { echo -n "${e}32m"; }
function bg_green     { echo -n "${e}42m"; }
function yellow       { echo -n "${e}33m"; }
function bg_yellow    { echo -n "${e}43m"; }
function blue         { echo -n "${e}34m"; }
function bg_blue      { echo -n "${e}44m"; }
function magenta      { echo -n "${e}35m"; }
function bg_magenta   { echo -n "${e}45m"; }
function cyan         { echo -n "${e}36m"; }
function bg_cyan      { echo -n "${e}46m"; }
function white        { echo -n "${e}37m"; }
function bg_white     { echo -n "${e}47m"; }
function c_up         { echo -n "${e}$1A"; }
function c_down       { echo -n "${e}$1B"; }    # within
function c_right      { echo -n "${e}$1C"; }
function c_left       { echo -n "${e}$1D"; }    # screen
function c_pos        { echo -n "${e}$1;$2f"; } # [Hf]
function c_line       { echo -n "${e}$1d"; }
function screentop    { echo -n "${e}H"; }      # [Hdf]
function linetop      { echo -n "${e}G"; }
function buffertop    { echo -n "${e}u"; }      # depends on other control characters ?
function tab          { echo -n "${e}I"; }
function backtab      { echo -n "${e}Z"; }
function scrolldown   { echo -n "${e}$1T"; }    # within screen
function scrolldown_B { echo -n "${e}$1L"; }    # scroll down below cursor
function scrollup_B   { echo -n "${e}$1M"; }    # scroll up below cursor
function clear        { echo -n "${e}J"; }      # delete to end of screen
function cleanbuffer  { echo -n "${e}S"; }      # copies first screen to bottom and clears
                                                # everything else above the cursor.
#function xxx { echo -n "${e}xxx"; }

export -f bright normal colour
export -f black bg_black red bg_red green bg_green yellow bg_yellow
export -f blue bg_blue magenta bg_magenta cyan bg_cyan white bg_white
export -f c_up c_down c_right c_left c_pos c_line
export -f screentop linetop buffertop tab backtab
export -f scrolldown scrolldown_B scrollup_B clear cleanbuffer

Você pode usá-los, por exemplo, com:

PS1_init="\n$(bright)$(black)$(hostname):\w\n$(bg_blue)"
PS1_end="$(normal)$(bright)\n\! -> $(normal)$(clear)"
export PS1="$PS1_init"'$(date)'"$PS1_end"

Estes podem ajudá-lo.

A razão pela qual eu os fiz em funções, e não em variáveis, é a preguiça. Eu só queria cortar a digitação. É claro que se você procurar por variáveis de eficiência seria melhor.

No final do dia, eles apenas se encaixam em certos terminais. Portanto, para qualquer ajuda, consulte a documentação do seu terminal, não a do bash ou de qualquer outro shell.

    
por 30.04.2011 / 05:04
2

Bash usa o esquema de cores Ansi - Artigo da Wikipédia:      link

Por exemplo, aqui está o meu prompt: (Eu gosto do meu prompt em uma linha separada, mas nem todo mundo faz. Além disso, meus termos têm fundo escuro - ajuste as cores se o seu termos são leves.)

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[31m\]\h \[\e[0;36m\]\t \[\e[93m\]\w\[\e[36m\] p$$-\!-\$\[\e[0m\]\n\$ '

Os valores do prompt especial são descritos na página de manual do Bash em "Solicitação":

\u  the username of the current user
\h  the hostname up to the first '.'
\t  the current time in 24-hour HH:MM:SS format
\w  the current working  directory,  with 
    $HOME  abbreviated with  a tilde
    (uses the value of the PROMPT_DIRTRIM variable)
$$  PID of the Bash (helps distinguish my many terms.
    Useful, eg, if I have to kill something.
\!  the history number of this command
\n     newline
\$  if the effective UID is 0, a #, otherwise a $
    
por 30.04.2011 / 00:13
0

por exemplo, para colorir, você pode fazer isso:

Simplesmente adicione a seguinte linha:

export PS1=" \[3[34m\]\u@\h \[3[33m\]\w\[3[31m\]\[3[00m\] $ "

Pré-visualização:

Estas são as minhas cores preferidas. Você pode personalizar cada parte da cor da solicitação alterando m códigos (por exemplo, 34m ) que são códigos de cores ANSI.

Lista de códigos de cores ANSI:

  • Preto: 30m
  • Vermelho: 31m
  • Verde: 32m
  • Amarelo: 33m
  • Azul: 34m
  • Roxo: 35m
  • Ciano: 36m
  • Branco: 37m
por 14.01.2018 / 00:32

Tags