Tốt hơn là sử dụng tput
sẽ xử lý các ký tự thoát tùy thuộc vào khả năng đầu ra / đầu cuối. (Nếu một thiết bị đầu cuối không thể giải thích \e[*
mã màu, thì nó sẽ bị "ô nhiễm", khiến đầu ra khó đọc hơn (Hoặc đôi khi, nếu bạn grep
xuất ra như vậy, bạn sẽ thấy những mã đó \e[*
trong kết quả)
Xem hướng dẫntput
này cho .
Bạn có thể viết :
blue=$( tput setaf 4 ) ;
normal=$( tput sgr0 ) ;
echo "hello ${blue}blue world${normal}" ;
Dưới đây là hướng dẫn để in Đồng hồ màu trong thiết bị đầu cuối.
Ngoài ra, lưu ý rằng tput
vẫn có thể in ký tự thoát khi chuyển hướng STDOUT sang tệp:
$ myColoredScript.sh > output.log ;
# Problem: output.log will contain things like "^[(B^[[m"
Để ngăn chặn điều này xảy ra, hãy thiết lập các tput
biến của bạn như được đề xuất trong giải pháp này .