2014-01-03 3 views
6

Например, я хочу, чтобы цвет вывода locate команды следует отличать от терминала текста, должно быть что-то вроде:Цвет команда линукс выход

locate -bir pdf | some_command_to_color_the_result 

Это не только locate команды. Мне нужен общий способ можно использовать в предыдущем пути трубопровода, может быть, с grep, cat, ..

Если есть нет встроенного Linux commad, любые намеки, как создать один

+0

grep --color обеспечит цвет – Vahid

+0

Это зависит от того, что вы хотите покрасить, но 'grep --color '.' 'Даст вам все в некотором цвете (красный, когда я попробую). –

+0

Это ответило на мой вопрос. Я создал псевдоним «alias color = 'grep --color.», Затем я использую его как «locate -bir pdf | color» – user3158243

ответ

4

Вы можете использовать управляющие последовательности для изменения цвета шрифта любого вывода в оболочку bash. Вот некоторые коды цветов, которые вам понадобятся:

BLACK="\033[30m" 
RED="\033[31m" 
GREEN="\033[32m" 
YELLOW="\033[33m" 
BLUE="\033[34m" 
PINK="\033[35m" 
CYAN="\033[36m" 
WHITE="\033[37m" 
NORMAL="\033[0;39m" 

Как только они определены, вы можете использовать их в обычных командах эха. Например:

echo -e $GREEN this text is green $NORMAL and this is normal 

Обратите внимание, что -e не всегда необходимо, но на каком-то Осс (включая OSX.) Требуется для для того, чтобы управляющие последовательности.

С учетом этих определений вы можете создавать сценарии и трубы для цветного вывода из других команд. Вот полный пример я использую, чтобы окрасить выход из svn up:

#!/bin/bash 

BLACK="\033[30m" 
RED="\033[31m" 
GREEN="\033[32m" 
YELLOW="\033[33m" 
BLUE="\033[34m" 
PINK="\033[35m" 
CYAN="\033[36m" 
WHITE="\033[37m" 
NORMAL="\033[0;39m" 

TMPFILE=.cvsup.tmp 

svn up > $TMPFILE 
svn status >> $TMPFILE 
printf $YELLOW 
grep -e ^"\? " -e ^"I " $TMPFILE 
printf $GREEN 
grep -e ^"R " -e ^"U " -e ^"G " $TMPFILE 
printf $BLUE 
grep -e ^"M " -e ^"E " $TMPFILE 
printf $RED 
grep -e ^"C " -e ^"! " -e ^"X " -e ^"~ " $TMPFILE 
printf $PINK 
grep ^"R " $TMPFILE 
printf $PINK 
grep ^"D " $TMPFILE 
printf $CYAN 
grep ^"A " $TMPFILE 

printf $NORMAL 
rm $TMPFILE 

Вы также можете посмотреть на tput.

6
norm="$(printf '\033[0m')" #returns to "normal" 
bold="$(printf '\033[0;1m')" #set bold 
red="$(printf '\033[0;31m')" #set red 
boldred="$(printf '\033[0;1;31m')" #set bold, and set red. 

somecommand | sed -e "s/someregexp/${boldred}&${norm}/g" # will color any occurence of someregexp in Bold red 

printf "%s" "$red" ; locate something ; printf "%s" "$norm" # will color output of locate something in red 
    #I (ab)use printf "%s" "something", as it's more portable than echo,and easy to modify 

Есть много других способов (создать функцию/сценарий, который может раскрасить регулярное выражение, например, а затем: somecommand | colorize -c green 'foo.*bar' 'other')

1

Следующая ответил на мой вопрос:

1- создать псевдоним в моей .bashrc

alias color='grep --color .' 

2- Тогда всякий раз, когда я хочу, чтобы цвет текста трубопровода вывод я использую цвета псевдоним, как:

locate -bir pdf | color 

Это цвет вывода на красный

2

Как предположил Джонатан Леффлера, коментарий как anwser:

grep --color обеспечит цвет

1

Существует гораздо лучший способ достичь настраиваемый раскраска:

colorit

Вы можете использовать его, как показано в других ответах, через some_command | colorit, но он прекрасно настраивается по сравнению с .coloritrc. В моем случае у меня есть такие вещи, как

dnl Define some useful color variables 
define(`red', `1') 
define(`green', `2') 
define(`magenta', `5') 
dnl 
dnl Mark macro arguments: regexp foreground-color [background-color] 
dnl 
define(`mark', ``mark "$1"'' `ifelse(`$#', `3', ``"\033[3$2;4$3m"'', 
``"\033[3$2m"'')' `"\033[m"') 
dnl 
divert 
mark(`warning', magenta) 
mark(`Warning', magenta) 
mark(`Traceback', magenta) 
mark(`Error', red) 
mark(`FAIL', red) 
mark(`ERROR', red) 
mark(`XFAIL', green) 
mark(`ok', green) 
mark(`OK', green) 
mark(`PASS', green) 

и использовать его все время для раскраски вывода компилятора и подобных материалов. См. Мой .coloritrc для получения дополнительной информации.

1

Я предпочитаю использовать утилиту выделения:

highlight -O xterm256 -S sh 

-S sh здесь означает, обрабатывает ввод как синтаксис сценария оболочки.

Подробнее: http://www.andre-simon.de/

я поставил его в качестве псевдонима через ~/.bashrc: enter image description here

enter image description here

1

Вы должны взглянуть на hl команда доступна на мерзавца хаба:
мерзавец клон http://github.com/mbornet-hl/hl
и:
http://www.flashnux.com/notes/page_000022_US.html
гектолитров это команда Linux написана на C, разработан специально для цвета текстового файла или вывода команды. Вы можете использовать до 42 цвета одновременно и использовать файл конфигурации для упрощения командной строки. Вы можете раскрасить вывод каждой команды, которая может быть подключена к другой. И если вы знаете, что такое регулярные выражения, вам будет удобно использовать . Вы можете использовать справочную страницу , чтобы понять, как ее использовать.

Смежные вопросы