Como alterar as cores no prompt bash [duplicado]

8

Eu segui as instruções aqui e no link howto fornecido aqui. No entanto, em nenhum lugar parece dizer como eu posso mudar as cores das diferentes partes, porque atualmente eu configuro para:

PS1='${debian_chroot:+($debian_chroot)}[\t] \u@\h:\w\$ '

Mas o texto ainda está todo branco, como eu poderia talvez tornar os números do tempo verde e meu nome de usuário e o nome do computador azul claro? Estou executando o Ubuntu GNOME 15.04.

    
por muru 20.09.2015 / 18:47

2 respostas

12

Antes de mais nada, abra seu arquivo ~ / .bashrc e ative os prompts de cor:

nano ~/.bashrc

descomente a linha #force_color_prompt=yes

Em seguida, altere a linha PS1 diretamente sob a linha if [ "$color_prompt" = yes ]; then

para:

PS1='${debian_chroot:+($debian_chroot)}\[3[00;32m\][\t] \[3[01;34m\]\u@\h:\w\$ '  

Como você pode ver, 01: 34m é azul claro e 00: 32m é verde. Verde claro seria 01: 32m em vez de 00: 32m.

Pressione CTRL + o e depois pressione ENTER para salvar o arquivo. Pressione CTRL + x para sair do nano.

Em seguida, execute o seguinte comando para aplicar as alterações "terceirizando" seu arquivo bashrc:

. ~/.bashrc

As alterações agora devem ser aplicadas a todos os terminais abertos recentemente em seu usuário.

clique aqui para mais informações

    
por mchid 20.09.2015 / 19:52
10

Aqui está um que um amigo meu e eu estamos trabalhando. Ele dá uma linha pontilhada cinza quando você é um usuário normal e, em seguida, se você estiver executando comandos como usuário root, ele mudará para vermelho tanto para a linha tracejada como para o texto.

Noseuarquivo.bashrc,adicioneoseguintecódigoaofinaldoarquivo:

if[-f"$HOME/.bash_ps1" ]; then
    . "$HOME/.bash_ps1"
fi

EDIT: Além disso, adicione-o à parte inferior do /root/.bashrc também. Isto é para se você mudar para o usuário root emitindo o comando sudo su - . (o restante da edição continua abaixo do código)

Copie e cole o restante deste código em um novo arquivo chamado /home/<username>/.bash_ps1

# Fill with minuses
# (this is recalculated every time the prompt is shown in function prompt_command):
fill="--- "

reset_style='\[3[00m\]'

# determine if root or not
a=$(id|awk -F\( '{print $1}')
if [ "$a" = "uid=0" ]
then
    # for root
    status_style=$reset_style'\[3[1;31m\]' # bold red; use 0;37m for lighter color
    command_style=$reset_style'\[3[1;31m\]' # bold red
else
    # for other users
    status_style=$reset_style'\[3[0;90m\]' # gray color; use 0;37m for lighter color
    command_style=$reset_style'\[3[1;29m\]' # bold black
fi
prompt_style=$reset_style

# Prompt variable:

PS1="$status_style"'$fill $(date +"%m/%d/%y ")\t\n'"$prompt_style"'${debian_chroot:+($debian_chroot)}\u@\h:\w\$'"$command_style "

# Reset color for command output
# (this one is invoked every time before a command is executed):
trap 'echo -ne "3[00m"' DEBUG

function prompt_command {
# create a $fill of all screen width minus the time string and a space:
let fillsize=${COLUMNS}-18
fill=""
while [ "$fillsize" -gt "0" ]
do
    fill="-${fill}" # fill with underscores to work on
    let fillsize=${fillsize}-1
done

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    xterm*|rxvt*)
    bname=$(basename "${PWD/$HOME/~}")
    echo -ne "3]0;${bname}: ${USER}@${HOSTNAME}: ${PWD/$HOME/~}
sudo -s
cd /root
ln -s /home/<username>/.bash_ps1
7" ;; *) ;; esac } PROMPT_COMMAND=prompt_command

EDIT (Parte 2): Agora crie um link para o .bash_ps1 na sua pasta /root

if [ -f "$HOME/.bash_ps1" ]; then
    . "$HOME/.bash_ps1"
fi

Você pode alterar qualquer um dos códigos acima para atender às suas necessidades. Este é um que eu uso realmente no trabalho para que eu saiba se estou digitando comandos como um root user que poderia ser potencialmente perigoso. Além disso, o registro de data e hora aparece logo acima de cada linha que você digita, facilitando um pouco se você rolar de volta para ver quando digitou o comando.

Espero que isso ajude!

    
por Terrance 20.09.2015 / 19:24