Existem vários tutoriais / publicações on-line (por exemplo, http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) sobre como personalizar seu prompt no bash, definindo PS1
. Existe uma maneira de personalizar a cor / negrito do comando digitado?
Em outras palavras, como exemplo, digamos que eu queria um prompt verde, um comando azul em negrito e, em seguida, a saída em qualquer cor que fosse padrão. No exemplo abaixo, eu já sei " joe>
" mostrar como verde, azul, negrito, qualquer que seja a configuração PS1
. Mas existe uma maneira de git status
mostrar como ousado, por exemplo?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Respostas:
Você teria que deixar uma cor após o PS1 (inicie-a depois
>
no seu exemplo) e, em seguida, use aDEBUG
armadilha do bash para limpar a cor antes que seu comando fosse executado (mas depois de pressionar enter no seu shell. Tente algo como isto :fonte
ls --color=always
colorido)?^[(B^[[m
). Porém, acontece apenas em alguns sistemas: testei isso em dois sistemas, ambos executando o Ubuntu 12.04 LTS, e apenas um deles teve a interferência.Para garantir a integridade, veja como definir uma cor de prompt e a cor de entrada da linha de comando no bash. Coloque essas linhas no seu
.bashrc
.A interceptação DEBUG, conforme sugerido por Chris Down , é usada para redefinir os atributos de texto. Destina-se à depuração, mas também é útil executar o código antes de executar o comando digitado pelo usuário .
Na configuração do prompt:
\[…\]
é usado em torno das seqüências de escape para dizer ao bash que eles não usam nenhum espaço na tela (sem eles, a tela fica distorcida quando o bash precisa redesenhar o prompt).\e[…m
onde…
é um número ou, geralmente, uma sequência de números separados por ponto e vírgula, é uma sequência de escape enviada ao terminal para afetar a cor e outros atributos do texto a seguir. Por exemplo,1;34
define negrito azul;0;32
redefine todos os atributos e muda a cor para verde. Ajuste a gosto.\w\$
imprima o diretório atual e$
ou#
. É claro que você pode alterar isso para o que quiser e inserir alterações nos atributos de texto, se quiser.fonte
Estou apenas aprendendo sobre os comandos do BASH e estou aqui sentado, brincando com os comandos de cores da minha versão. Eu descobri esta solução:
Usando este comando:
Desconstruir: PS1 =: inicia o comando PS1
'': contém o comando entre aspas simples (para que o BASH não pense que é um comando para ele)
\: cada comando individual começa com este
[]: contém cada comando
\ e (também pode ser \ 033 um caractere de escape ASCII): inicia um comando de cor
O comando color precede o que ele se aplica.
[\ e [0; 36m]: ciano
\ h: nome do host
'>': impresso após o nome do host
[\ e [0; 31m]: vermelho
Aparentemente, o comando vermelho no final torna a entrada vermelha. Basta alterar as cores ao seu gosto e é isso que você está procurando.
Além disso, este site me ajudou um pouco:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Minha versão: GNU bash, v. 4.2.46
Cuidar,
Doninha
fonte