Câu trả lời:
Cách tương thích nhất để thực hiện việc này là sử dụng tput
để khám phá các chuỗi đúng để gửi đến thiết bị đầu cuối:
bold=$(tput bold)
normal=$(tput sgr0)
sau đó bạn có thể sử dụng các biến $bold
và $normal
định dạng mọi thứ:
echo "this is ${bold}bold${normal} but this isn't"
cho
cái này đậm nhưng cái này không
tput smul
tput
là một lệnh tuyệt vời với rất nhiều lệnh cho nhiều nhiệm vụ khác nhau.
motd
tệp. Làm thế nào / nơi tôi sẽ xác định $bold
và $normal
các biến trong trường hợp đó?
Để áp dụng một kiểu trên chuỗi của bạn, bạn có thể sử dụng một lệnh như:
echo -e '\033[1mYOUR_STRING\033[0m'
Giải trình:
-e
Tùy chọn có nghĩa là các chuỗi đã thoát (dấu gạch chéo ngược) sẽ được diễn giảiCác số nguyên có thể là:
[0m
cung cấp và điều này giải thích nó tốt
\033[0m
3
- in nghiêng , ít nhất là trong konsole
Tôi giả sử bash đang chạy trên thiết bị đầu cuối tương thích vt100 trong đó người dùng không tắt hỗ trợ định dạng một cách rõ ràng.
Đầu tiên, bật hỗ trợ cho các ký tự đặc biệt echo
, sử dụng -e
tùy chọn. Sau đó, sử dụng chuỗi thoát ansi ESC[1m
, như:
echo -e "\033[1mSome Text"
Thông tin thêm về trình tự thoát ansi chẳng hạn tại đây: ascii-table.com/ansi-escape- resultences-vt-100.php
echo -e "\033[1mSome Text\033[0m"
nếu không các dòng sau của thiết bị đầu cuối của bạn cũng sẽ được in đậm
\033
bạn có thể sử dụng \e
nhưecho -e "\e[1msome text\e[0m"
Theo lý thuyết như vậy:
# 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.
Nhưng trong thực tế, nó có thể được hiểu là màu "cường độ cao".
(nguồn: http://unstableme.blogspot.com/2008/01/ansi-escape-fterences-for-wr-text.html )