Cor diferente para comando e saída

11

Eu queria saber se é possível alterar a cor da saída de um comando no Linux para uma cor diferente da linha de comando em que eu digito. É algo monótono e difícil de encontrar onde a saída é iniciada. como,

@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/

Obrigado

    
por raj 20.06.2013 / 16:56

6 respostas

5

Não realmente; a cor da saída de um determinado programa é controlada pelo comando, não pelo terminal.

Dito isso, supondo que seu terminal compreenda códigos de escape ANSI para cores (a maioria faz), você pode usar códigos de escape para definir a cor solicitada desejada no início do prompt e a cor de saída desejada no final; Isso resultaria em suas linhas de comando também em qualquer cor definida para a saída, mas provavelmente é o mais próximo que você chegará do que está procurando. Por exemplo, o seguinte:

$ export PS1='\[3[00;35m\]\u\[3[00m\]@\[3[00;35m\]\H\[3[00m\]:\[3[00;33m\]\W\[3[00m\] \$\[3[00;34m '

fornecerá um aviso semelhante a:

user@host:wd $ _

com 'user' e 'host' em roxo, 'wd' (seu cwd) em marrom (amarelo escuro), e tudo após o '$' em qualquer terminal usado para azul claro. (Um xterm padrão irá renderizar isso em cyan; o gnome-terminal parece padronizar um tom bastante agradável de azul-centáurea).

O código de cor real, conforme especificado no formato necessário para o bash, é, por exemplo, \[3[00;35m\] , em que 00;35 é a especificação de cor real; o 00 inicial raramente muda, mas pode produzir efeitos IIRC negrito (01), sublinhado (??) e reverso de vídeo (??), enquanto o rastro '35' é 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 são de 30 a 37 e as de segundo plano de 40 a 47, como segue:

color        fg  bg
black        30  40
red          31  41
green        32  42
yellow       33  43
blue         34  44
purple       35  45
cyan         36  46
gray/white   37  47

Tenha em mente que, como você está definindo uma cor padrão para tudo que segue o seu prompt, os programas executados que não definem suas próprias cores por meio de códigos de escape levarão essa cor - por exemplo, se Se você executar um pager, provavelmente verá sua saída na mesma cor que definiu para outros comandos. Enquanto isso, os comandos que fizerem definirem suas próprias cores por meio de códigos de escape ignorarão completamente seus esforços.

    
por 20.06.2013 / 17:12
7

Você pode passar a saída para um programa que faz a coloração. Por exemplo, existem programas como pycolor :

pycolor module.py

Para criar o seu próprio:

red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red$reset/"

Mais informações sobre cores

    
por 20.06.2013 / 17:30
3

Sim, eu tenho este trabalho para o bash, no linux e no Mac OS, pelo menos.

Primeiro, defina algumas variáveis de atributo e o prompt do PS1 para deixar o terminal configurado com os atributos desejados da linha de comando, por exemplo:

bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"

Em seguida, use a armadilha bash DEBUG, que é executada antes de cada comando, para alterar os atributos de texto para a saída do comando:

trap 'echo -ne "${none}"' DEBUG
    
por 14.07.2013 / 17:16
1

Outra alternativa (em um comando por base de comando) é o grc - colorizer genérico. Demora um pouco de trabalho para configurar as expressões regulares que ele usa para colorir as coisas. Eu descobri sobre isso aqui:

link

e aqui:

link

Eu não sou um flash com regexes, então não trabalhei muito com esses comandos.

    
por 25.06.2013 / 06:07
1

Jogue isso no seu arquivo .bashrc e, depois, salve o arquivo depois de salvá-lo.

blk=$'\x1b[90m' # Sets text to black
red=$'\x1b[31m' # Sets text to red
grn=$'\x1b[92m' # Sets text to green
ylw=$'\x1b[93m' # Sets text to yellow
blu=$'\x1b[94m' # Sets text to blue
pur=$'\x1b[95m' # Sets text to purple
cyn=$'\x1b[96m' # Sets text to cyan
wht=$'\x1b[97m' # Sets text to white
rst=$'\x1b[0m'  # resets to default terminal color

Uma vez feito isso, você pode usar qualquer um deles no seu terminal permanentemente ou até você 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 qualquer outra coisa. Aqui está um exemplo de como eu os uso pessoalmente:

echo -e "${red}This text is red.${rst}"
printf "${grn}This text is green.\n${rst"

Eu costumo usá-los com comandos individuais echo e / ou printf , mas você pode usá-los para colorir outros comandos, como o comando ping . Adicione o seguinte a .bashrc para obter os efeitos. Em seguida, digite seu arquivo .bashrc e execute o comando cping para usar ping com texto roxo. Você pode definir cada função de comando para usar qualquer cor suportada pelo seu terminal.

# Add this to your .bashrc file
colored_ping() {

    echo -e "${pur}$(ping $1)${rst}"
}

alias cping='colored_ping'

Em seguida, tente:

user@linux:~# cping superuser.com

Sua saída para cping será roxa. Se você quiser usar várias cores na mesma saída, poderá adicioná-las de maneiras únicas. Como você faz isso é completamente com você. Por exemplo:

echo -e "${red}This is red and ${blu}this is blue and ${grn}this is green.${rst}
    
por 10.03.2017 / 10:24
0

Você deve dar uma olhada no comando hl disponível no git hub:
github: git clone link
e em: link
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 todos os comandos que podem ser canalizados para outro. E se você souber o que são expressões regulares, será muito fácil de usar. Você pode usar a página man para entender como usá-la.

    
por 02.08.2015 / 16:27