Різний колір для команд та виводу


13

Мені було цікаво, чи можна змінити колір виводу команди в Linux на інший колір, ніж у командному рядку, куди я вводяться. Це сом одноманітно і важко знайти, де починається вихід. люблю,

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

Спасибі


2
можливо, використовуючи precmd_functions, ви можете змінити колір запиту і встановити його назад перед preexec_functions, або щось подібне. (в zsh, я не знаю, чи є еквівалент для інших снарядів)
pataluc

Я просто спробував свою пропозицію, але я не отримую кольорову команду ... :(
pataluc

1
@pataluc: мені вдалося preexec () { echo -n "\\e[40;34m" }; precmdфункція ІМХО не треба, здається ЗШ перезавантажується сам по собі колір перед відображенням підказки. Але це працює лише для тих команд, які не змінять сам колір (помітний приклад ls), як вказував Аарон. З cat, bcвбудованими командами оболонки тощо (навіть alpine) це чудово працює.
mpy

@mpy мені вдалося також, з усіма командами, припускаючи, що raj хоче розфарбувати команду, а не результат, я додав "\\e[40;34m"до кінця свого PROMPTvar і повернув його в білий колір із preexec () { echo -n "\\e[40;37m" }...
pataluc

1
@pataluc: Вибачте, зараз я розумію. Для фарбування командного рядка просто використовуйте zle_highlight=(default:fg=cyan)нещодавню версію zsh. Zsh також пропонує динамічне забарвлення, як-от fish; дивіться розділ ОСВІТЛЕННЯ ОСВІТЛЕННЯ в людині zshzle.
mpy

Відповіді:


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 $ _

з "користувачем" і "хостом" у фіолетовому, "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

Майте на увазі, що оскільки ви встановлюєте колір за замовчуванням для всього, що відповідає вашому запиту, програми, які ви запускаєте, які не встановлюють свої кольори за допомогою кодів евакуації, приймуть цей колір - наприклад, якщо ви запускаєте пейджер, ви, ймовірно, побачите його вихід у тому ж кольорі, який ви встановили для інших команд. У той же час, команди , які дійсно встановлюють свої власні кольори з допомогою евакуаційних кодів буде ігнорувати ваші зусилля повністю.


1
Замість кодів евакуації я виявив, що використання tputкольорів набагато легше читати. Наприклад, моє підказка (в баші) - export PS1="[\t \[$(tput setaf 9)\]\u\[$(tput setaf 15)\]@\[$(tput setaf 12)\]\h \[$(tput sgr0)\]\w ] \$ "це виведення часу, потім ім'я користувача в одному кольорі, @в іншому та ім'я хоста в третьому (червоний, білий і синій на даний момент), а потім друкує PWD і $ . Дуже легко з першого погляду побачити, де знаходяться підказки під час прокрутки назад по історії.
MattDMo

ур дивовижно ... ось все, що я коли-небудь хотів. Спасибі, чи можете ви сказати мені, які значення слід змінити, якщо я коли-небудь захочу змінити кольори?
raj

і чи є спосіб зберегти останній таким же, як і колір раніше?
raj

і чому це не зміна змін, кожен раз, коли я входжу в систему, я мушу її знову зафарбовувати
raj

1
Зміна не є постійною, якщо ви не додасте її до файлу ініціалізації оболонки, який для bash є ~/.bashrc; знайдіть рядок, де він встановлює PS1, який є вашим рядком підказок, і змініть його, як описано у відповіді. Що потрібно змінити, залежить від того, як налаштовано ваш рядок підказок, але більшість важливих деталей є в моїй відповіді, а решту можна знайти, зробивши трохи гугл. Я не впевнений, що ви маєте на увазі під "чи існує спосіб зберегти останній такий, як колір раніше"?
Аарон Міллер

7

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

pycolor module.py

Щоб створити свій власний:

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

Детальніше про кольоровий вихід.


3

Так, у мене це працює для bash, як мінімум на Linux та Mac OS.

Спочатку встановіть деякі змінні атрибути, а PS1 запропонує залишити набір терміналів із потрібними атрибутами командного рядка, наприклад:

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

Потім використовуйте пастку bash DEBUG, яка виконується безпосередньо перед кожною командою, щоб змінити текстові атрибути для виведення команди:

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

1

Ще одна альтернатива (за командою за командою) - grc - загальний колоризатор. Потрібно трохи попрацювати, щоб встановити регулярні вирази, які він використовує для розфарбовування речей. Я дізнався про це тут:

/unix/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

і ось:

/unix/26313/colored-find-output

Я не флеш з реджексами, тому я не дуже багато працював з цими командами.


Я використовую це з усіма моїми сценаріями хвостового журналу. Чудовий.
stefgosselin

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 кольорів та використовувати файл конфігурації для спрощення командних рядків. Ви можете розфарбувати вихід кожної команди, яка може бути перенесена на іншу. І якщо ви знаєте, що таке регулярні вирази, вам це буде дуже просто використовувати. Ви можете скористатись довідковою сторінкою, щоб зрозуміти, як її використовувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.