É possível definir a cor para a entrada do usuário no bashrc?

2

Note que eu só quero que a entrada do usuário tenha cores específicas (palavras que o usuário tenha digitado com o teclado), e não a saída do comando real.

Eu tentei:

export PS1="$ 3[38;5;154m"

Eu sei que ele deve ser fechado com 3[m , mas não tenho idéia de como inseri-lo após a entrada foi enviada para stdin.

export PS1="$ 3[38;5;154m$PS13[m"

Isso também não funciona.

A razão pela qual eu quero isso é ser capaz de distinguir facilmente o comando de entrada de sua saída. Agradecemos antecipadamente.

    
por Aleksandr Makov 20.02.2013 / 17:21

3 respostas

2

O Bash não conseguirá colorir todas as entradas do usuário. O UNIX é full-duplex e todos os dados exibidos vêm da máquina unix, não do emulador de terminal local / teclado, então o emulador de terminal (xterm?) Não pode realmente diferenciar, e o bash controla apenas o que ele faz, não o que programa faz.

Eu uso um prompt colorido diferente.

e=$'\e'
COLORblue="$e[0;34m"
COLORred="$e[0;31m"
COLORreset="$e[0m"
PC="$COLORblue"
if [[ "$EUID" -eq 0 ]]; then PC="$COLORred"; fi
PS1="\[$PC\]#===> \@ %\j / \u @ \h : \w/\n#===> \\$ \[$COLORreset\]"

# Print when exit status is not 0 -- I like this too... shown in red
export PROMPT_COMMAND="x0=\$?;if ((\$x0 > 0)); then echo '${COLORred}# exit status = '\$x0' -- From PROMPT_COMMAND$COLORreset'; fi"

Talvez verifique
link

    
por 16.12.2013 / 12:04
2

Eu tenho trabalhado nisso e em algumas outras coisas bash / terminais o dia todo, e descobri que eu iria encontrar alguma pergunta relevante e respondê-las se eu pudesse ser de alguma ajuda remota - então o abaixo .bashrc colore o comando de entrada terminal verde e a saída será branca padrão. O fundo ainda é preto.

# ~/.bashrc: executed by bash(1) for non-login shells.

# Created by EDH automated script to set up terminal colors
# Ref: http://linux.die.net/man/1/echo
# Ref: https://www.kirsle.net/wizards/ps1.html#help
# Ref: https://wiki.archlinux.org/index.php/Color_Bash_Prompt
# Ref: http://linux.die.net/man/1/bash

# Note: reload settings w/o relogin; source ~/.bashrc

# for terminal line coloring
export PS1="\[$(tput sgr0)\]\[$(tput setaf 1)\]\u \[$(tput setaf 6)\]\w \[$(tput setaf 1)\]\$ \[$(tput setaf 2)\]"
none="$(tput sgr0)"
trap 'echo -ne "${none}"' DEBUG

# ls dir coloring
export LS_OPTIONS='--color=auto'
eval "'dircolors'"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

Eu tentei incluir as fontes onde as encontrei! Espero que isso ajude, mesmo se este for um tópico mais antigo.

    
por 08.09.2015 / 08:24
1

Eu não acho que você pode obter uma cor diferente para os comandos de entrada e sua saída. Em qualquer caso, você certamente não pode fazer isso configurando a variável PS1 . O PS1 é o prompt, o texto exibido à esquerda do que você digitar. Por exemplo:

Vocêpodealterarascorespadrãodoterminalmodificandoseuarquivo.Xdefaultse/ou.Xresources.Dêumaolhada aqui , aqui e aqui para mais informações .

    
por 20.02.2013 / 18:17