Вступ
Команда echo
команда виводить заданий рядок у стандартна вихідна труба, зазвичай вказуючи на термінал. Хоча стандартний вихідний канал може вказувати на інші інтерфейси – the echo
Команда зазвичай використовується для друку та відображення повідомлень у терміналі. За замовчуванням текст відображеного повідомлення успадковує колір іншого тексту в терміналі (який сам по собі можна налаштувати). Однак існує кілька способів змінити колір виведення echo
– як для окремих рядків, так і для цілих повідомлень.
У цьому короткому посібнику ми розглянемо, як можна змінити колір виведення
echo
в системах на базі Linux, використовуючи escape-коди ANSI,tput
і як можна зробити цей процес менш багатослівним у сценаріях Bash.
Змініть колір виводу за допомогою ANSI Escape Codes
Найпростіший спосіб змінити колір за допомогою керуючих послідовностей/кодів ANSI. Усі escape-коди ANSI починаються з Escape
символ, який може бути представлений у різних форматах – 27
в десятковому, x1B
у шістнадцятковій формі, як клавіша керування ^[
або 33
у вісімковому форматі. Потім послідовності супроводжуються командою:
33[command
Де відкриває дужку (Контрольна послідовність Introducer) є необов’язковим, але допомагає відокремити команду від символу керування. Коли ви ставите a колірний код як команда, вона змінює колір наступного тексту:
33[0;34
0;34
це, наприклад, код синього кольору. Тільки за допомогою цього ви можете змінити колір тексту echo
з:
33[0;34Text
де Text
буде пофарбовано в синій колір. В якості альтернативи розгляньте простий сценарій bash для друку “Ласкаво просимо до Франції” в кольорах французького прапора:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
The optional -e
прапор echo
Команда дозволяє використовувати спеціальні символи, наприклад n
(новий рядок) і t
(табуляція) всередині рядка введення.
Після запуску сценарію:
$ ./colors.sh
Це призводить до:
Коди ANSI не обмежуються кольором, але також можуть бути застосовані для стилю. Коди 0..9
представляють стилі тексту, а коди 30...37
представляють кольори:
Колір | Codes | Стилі тексту | Codes |
Black | 30 | Простий текст | 0 |
червоний | 31 | Жирний текст | 1 |
зелений | 32 | Текст низької інтенсивності | 2 |
Коричневий / помаранчевий | 33 | Підкреслити текст | 4 |
синій | 34 | Миготливий текст | 5 |
фіолетовий | 35 | Невидимий текст | 8 |
Блакитний | 36 | Закреслений текст | 9 |
Світло Сірий | 37 |
Давайте створимо сценарій bash, щоб дослідити деякі з цих параметрів:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
Запуск цього сценарію призводить до:
Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!
Так само ви можете змінити колір фону цих текстів за допомогою кодів 40..47
:
color | Codes |
Black | 40 |
червоний | 41 |
зелений | 42 |
Коричневий / помаранчевий | 43 |
синій | 44 |
фіолетовий | 45 |
Блакитний | 46 |
Світло Сірий | 47 |
Зміна фону заданого рядка зводиться до того ж правила, що і при зміні кольору шрифту – сам код змінює поведінку:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Примітка: Як правило, ви можете перетворити кольори шрифту на кольори фону, додавши 10. 30
чорний колір шрифту, 40
чорний колір тла.
Змініть вихідний колір за допомогою tput
Альтернативою кодам ANSI є використання tput
команда:
$ tput setaf color_code
setf
допускає 8 кольорів, при цьому setaf
дозволяє використовувати 256 кольорів, тож залежно від команди, яку ви використовуєте, ви можете переходити між ними 0..7
та 0..255
як кольорові коди. обидві команди присвяч 0..7
до тих же колірних кодів, при цьому с setaf
, 8..15
це кольори високої інтенсивності, і 16..231
є різними відтінками перших 8 і 232..255
це сірі кольори:
Кредит: Вікіпедія
Нарешті, tput
також дозволяє змінювати колір фону, додавати жирний шрифт, зменшувати інтенсивність тощо за допомогою інших команд:
Стилі тексту | Команди |
Колір переднього плану | setaf |
Background color | сетаб |
Ніякого стилю | sgv0 |
Жирний текст | сміливий |
Текст низької інтенсивності | Нд |
Підкреслити текст | смул |
Миготливий текст | блимати |
Зворотний текст | об |
Давайте створимо інший сценарій, який використовує tput
щоб змінити колір виведення echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Цей сценарій надрукує наступний вихід у терміналі:
Команда tput забезпечує простий спосіб друку будь-якого кольору за допомогою простого коду кольору. Давайте тепер створимо сценарій, який може друкувати всі коди кольорів, доступні для команди tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Він друкуватиме від 0 до 255 кольорів та їх коди:
Висновок
У цьому короткому посібнику ми розглянули, як можна змінити колір echo
Вивід у Linux – з використанням керуючих послідовностей ANSI та tput
команда
Ми також дослідили, як можна зробити процес менш багатослівним за допомогою змінних Bash, налаштувати фонові кольори та стиль тексту.