Відповіді:
Найбільш сумісний спосіб це використовувати tput
для виявлення правильних послідовностей для надсилання до терміналу:
bold=$(tput bold)
normal=$(tput sgr0)
тоді ви можете використовувати змінні $bold
та $normal
відформатувати речі:
echo "this is ${bold}bold${normal} but this isn't"
дає
це сміливо, але це не так
tput smul
tput
це чудова команда з великою кількістю команд для багатьох різних завдань.
motd
файлом. Як / де я б визначив $bold
і $normal
змінні у цьому випадку?
Для того, щоб застосувати стиль до рядка, ви можете використовувати команду типу:
echo -e '\033[1mYOUR_STRING\033[0m'
Пояснення:
-e
Опція означає, що уникнуті (зворотні) рядки будуть інтерпретованіМожливі цілі числа:
[0m
пропонує функціонал, і це добре пояснює
\033[0m
3
- курсивом , принаймні в консолі
Я припускаю, що bash працює на сумісному vt100 терміналі, в якому користувач явно не вимикав підтримку форматування.
Спочатку ввімкніть підтримку спеціальних символів echo
, скориставшись -e
опцією. Пізніше використовуйте послідовність виходу ansi ESC[1m
, як-от:
echo -e "\033[1mSome Text"
Більше про послідовності виходу ansi, наприклад, тут: ascii-table.com/ansi-escape-sequences-vt-100.php
echo -e "\033[1mSome Text\033[0m"
інакше наступні рядки вашого терміналу будуть жирним шрифтом
\033
ви можете користуватися \e
таким чиномecho -e "\e[1msome text\e[0m"
Теоретично так:
# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line
# Using tput
tput bold
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL
# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line.
Але на практиці це може бути інтерпретовано як колір високої інтенсивності.
(джерело: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )