Eu queria saber se é possível alterar a cor da saída de um comando no linux para uma cor diferente daquela da linha de comando em que digito. É algo monótono e difícil de encontrar onde a saída começa. gostar,
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
obrigado
preexec () { echo -n "\\e[40;34m" }
; Se aprecmd
função IMHO não for necessária, parece que o zsh redefine a própria cor antes de exibir o prompt. Mas isso funciona apenas para os comandos que não alteram a cor em si (exemplo de destaquels
) como apontado por Aaron. Comcat
,bc
comandos internos do shell, etc. (paralpine
) isso funciona bem."\\e[40;34m"
ao fim da minhaPROMPT
var, e configurá-lo de volta ao branco compreexec () { echo -n "\\e[40;37m" }
...zle_highlight=(default:fg=cyan)
uma versão recente do zsh. O Zsh também oferece cores dinâmicas, comofish
; veja a seção DESTAQUE DE PERSONAGENS no man zshzle.Respostas:
Na verdade não; a cor da saída de um determinado programa é controlada pelo comando, não pelo terminal.
Dito isso, supondo que o seu terminal compreenda códigos de escape ANSI para cores (a maioria faz), você pode usar códigos de escape para definir a cor desejada no início do prompt e a cor desejada no final; isso resultaria em suas linhas de comando também com a cor que você definiu para a saída, mas provavelmente é o mais próximo que você conseguirá do que está procurando. Por exemplo, o seguinte:
fornecerá um prompt parecido com:
com 'user' e 'host' em roxo, 'wd' (seu cwd) em marrom (amarelo escuro) e tudo depois do '$' em qualquer que seja o terminal usado para azul claro. (Um xterm padrão renderiza isso em ciano; o gnome-terminal parece ter um tom bastante agradável de azul centáurea.)
O código de cores real, conforme especificado no formato necessário para o bash, é, por exemplo
\[\033[00;35m\]
, onde00;35
é a especificação de cores real; o líder00
raramente muda, mas pode produzir efeitos de negrito (01), sublinhado (??) e vídeo reverso (??) do IIRC, enquanto o '35' à direita é a cor real, que neste caso é roxa.É surpreendentemente difícil encontrar uma lista decente de códigos de cores ANSI, mas as cores de primeiro plano variam de 30 a 37 e as de segundo plano, de 40 a 47, da seguinte maneira:
Lembre-se de que, como você define uma cor padrão para tudo o que segue sua solicitação, os programas executados que não definem suas próprias cores por meio de códigos de escape terão essa cor - por exemplo, se você executar um pager, é provável que você veja a saída na mesma cor que definiu para outros comandos. Enquanto isso, os comandos que não definir suas próprias cores através de códigos de escape irá ignorar seus esforços inteiramente.
fonte
tput
é muito mais legível para colorir. Por exemplo, meu prompt (no bash) é oexport PS1="[\t \[$(tput setaf 9)\]\u\[$(tput setaf 15)\]@\[$(tput setaf 12)\]\h \[$(tput sgr0)\]\w ] \$ "
que mostra a hora, o nome de usuário em uma cor,@
em outra e o nome do host em um terceiro (vermelho, branco e azul no momento), depois imprime o PWD e$
. É muito fácil ver rapidamente onde estão as linhas de prompt ao rolar para trás no histórico.~/.bashrc
; encontre a linha em que ele define o PS1, que é sua sequência de prompt, e modifique-a conforme descrito na resposta. O que mudar depende de como sua sequência de caracteres é configurada, mas a maioria dos detalhes destacados está na minha resposta, e o restante pode ser encontrado pesquisando um pouco no Google. Não sei ao certo o que você quer dizer com "existe uma maneira de manter a última igual à cor anterior?"Você pode passar a saída para um programa que faz a coloração. Por exemplo, existem programas como
pycolor
:Para criar seu próprio:
Mais sobre saída em cores.
fonte
Sim, eu tenho esse trabalho para bash, no Linux e Mac OS, pelo menos.
Primeiro, defina algumas variáveis de atributo e o prompt PS1 para deixar o terminal definido com os atributos de linha de comando desejados, por exemplo:
Em seguida, use a armadilha bash DEBUG, que é executada imediatamente antes de cada comando, para alterar os atributos de texto para a saída do comando:
fonte
Outra alternativa (comando por comando) é o grc - generic colorizer. É preciso um pouco de trabalho para configurar as expressões regulares usadas para colorir as coisas. Eu descobri sobre isso aqui:
/unix/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c
e aqui:
/unix/26313/colored-find-output
Eu não sou um flash com expressões regulares, então não trabalhei muito com esses comandos.
fonte
Jogue-os no seu arquivo .bashrc e, em seguida, origine o arquivo após salvar.
Uma vez feito isso, você poderá usá-los permanentemente em seu terminal ou até comentar as variáveis ou excluí-las completamente. Você pode usá-los em scripts em sua máquina ou com substituição de comando ou o que for. Aqui está um exemplo a seguir de como eu os uso pessoalmente:
Normalmente, eu os uso com comandos individuais
echo
e / ou individuais,printf
mas você pode usá-los para colorir outros comandos, como oping
comando. Adicione o seguinte.bashrc
para obter os efeitos. Em seguida, forneça seu.bashrc
arquivo e execute ocping
comando para usarping
com texto roxo. Você pode definir cada função de comando para usar qualquer cor que seu terminal suporte.Então tente:
Sua saída para
cping
será roxa. Se você quiser usar várias cores na mesma saída, poderá adicioná-las de maneiras exclusivas. Como você faz isso é totalmente com você. Por exemplo:fonte
Você deve dar uma olhada no comando hl disponível no git hub:
github: git clone http://github.com/mbornet-hl/hl
e em:
http://www.flashnux.com/notes/page_000022_US.html
hl é um comando linux escrito em C, especialmente projetado para colorir um arquivo de texto ou a saída de um comando. Você pode usar até 42 cores simultaneamente e usar um arquivo de configuração para simplificar as linhas de comando. Você pode colorir a saída de cada comando que pode ser canalizado para outro. E se você souber o que são expressões regulares, será muito fácil usá-lo. Você pode usar a página de manual para entender como usá-lo.
fonte