11

Мне было интересно, если можно изменить цвет вывода команды в Linux на цвет, отличный от цвета командной строки, где я набираю. Это однообразно, и трудно найти, где начинается вывод. лайк,

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

Спасибо

6 ответов6

7

Вы можете передать вывод программе, которая выполняет раскраску. Например, есть программы типа pycolor:

pycolor module.py

Чтобы построить свой собственный:

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

Подробнее о выводе цвета.

5

На самом деле, нет; Цвет вывода данной программы контролируется командой, а не терминалом.

Тем не менее, предполагая, что ваш терминал понимает управляющие коды ANSI для цвета (большинство делают), вы можете использовать управляющие коды, чтобы установить желаемый цвет подсказки в начале подсказки и желаемый выходной цвет в конце; это приведет к тому, что ваши командные строки также будут в том цвете, который вы установили для вывода, но это, вероятно, примерно так же близко, как вы собираетесь получить то, что вы ищете. Например, следующее:

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

даст вам приглашение, которое выглядит так:

user@host:wd $ _

с 'user' и 'host' в фиолетовом, 'wd' (ваш cwd) в коричневом (темно-желтый) и всем, что после вашего терминала использует светло-синий, после '$'. (Значение по умолчанию для xterm будет отображаться синим цветом; gnome-терминал по умолчанию выглядит довольно красивым оттенком василькового.)

Фактический код цвета, как указано в необходимом формате для bash, например, \[\033[00;35m\] , где 00;35 - фактическая спецификация цвета; ведущий 00 редко изменяется, но может давать IIRC жирный (01), подчеркивание (??) и обратное видео (??) эффектов, в то время как конечный «35» является фактическим цветом, который в этом случае является фиолетовым.

Удивительно сложно найти достойный список цветовых кодов ANSI, но цвета переднего плана варьируются от 30 до 37, а цвета фона - от 40 до 47, как показано ниже:

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

Имейте в виду, что, поскольку вы устанавливаете цвет по умолчанию для всего, что следует за вашим приглашением, программы, которые вы запускаете и которые не устанавливают свои собственные цвета с помощью escape-кодов, получат этот цвет - например, если вы запустите пейджер, вы, вероятно, увидите его вывод в том же цвете, который вы установили для других команд. В то же время, команды , которые действительно устанавливают свои собственные цвета с помощью эвакуационных кодов будет игнорировать ваши усилия полностью.

3

Да, у меня это работает для Bash, по крайней мере на Linux и Mac OS.

Сначала установите некоторые переменные атрибута, и PS1 предложит оставить терминал установленным с требуемыми атрибутами командной строки, например:

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

Затем используйте ловушку bash DEBUG, которая выполняется перед каждой командой, чтобы изменить текстовые атрибуты для вывода команды:

trap 'echo -ne "${none}"' DEBUG
1

Другой альтернативой (по командам на основе команд) является grc - универсальный colorizer. Требуется немного поработать, чтобы настроить регулярные выражения, которые используются для раскрашивания. Я узнал об этом здесь:

https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

и здесь:

https://unix.stackexchange.com/questions/26313/colored-find-output

Я не флеш с регулярными выражениями, поэтому я не очень много работал с этими командами.

1

Добавьте их в файл .bashrc, а затем сохраните файл после сохранения.

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

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

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

Я обычно использую их с отдельными командами echo и / или printf но вы можете использовать их для раскрашивания других команд, таких как команда ping . Добавьте следующее в .bashrc чтобы получить эффекты. Затем создайте файл .bashrc и выполните команду cping чтобы использовать ping с фиолетовым текстом. Вы можете настроить каждую командную функцию на использование любого цвета, поддерживаемого вашим терминалом.

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

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

alias cping='colored_ping'

Тогда попробуйте:

user@linux:~# cping superuser.com

Ваш вывод для cping будет фиолетовым. Если вы хотите использовать несколько цветов в одном выводе, вы можете добавить их уникальными способами. Как вы это делаете, полностью зависит от вас. Например:

echo -e "${red}This is red and ${blu}this is blue and ${grn}this is green.${rst}
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .