Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Cách thay đổi màu đầu ra của Echo trong Linux

Giới thiệu

Sản phẩm echo lệnh xuất một chuỗi nhất định cho ống đầu ra tiêu chuẩn, thường trỏ đến thiết bị đầu cuối. Mặc dù đường ống đầu ra tiêu chuẩn có thể trỏ đến các giao diện khác - echo lệnh thường được sử dụng để in và hiển thị thông báo trong thiết bị đầu cuối. Theo mặc định, văn bản của văn bản được hiển thị sẽ thừa hưởng màu của văn bản khác trong thiết bị đầu cuối (có thể tùy chỉnh trong và của chính nó). Tuy nhiên - có một số cách bạn có thể thay đổi màu đầu ra của echo - cho cả các chuỗi riêng lẻ và cho toàn bộ thư.

Trong hướng dẫn ngắn này, chúng ta sẽ xem xét cách bạn có thể thay đổi màu đầu ra của echo trong các hệ thống dựa trên Linux, sử dụng mã thoát ANSI, tput và cách bạn có thể làm cho quá trình này ít dài dòng hơn trong các tập lệnh Bash.

Thay đổi màu đầu ra với mã thoát ANSI

Cách dễ nhất để thay đổi màu là thông qua các chuỗi / mã thoát ANSI. Tất cả các mã thoát ANSI bắt đầu bằng Escape , có thể được biểu diễn ở nhiều định dạng khác nhau - 27 trong số thập phân, x1B trong hệ thập lục phân, làm phím điều khiển ^[, hoặc là 33 ở định dạng bát phân. Các trình tự sau đó được theo sau bởi lệnh:

33[command

Nơi mở ngoặc (Trình giới thiệu trình tự điều khiển) là tùy chọn, nhưng giúp tách lệnh khỏi ký tự thoát. Khi bạn đặt một mã màu như lệnh, nó thay đổi màu của văn bản đang đến:

33[0;34

0;34 là mã cho màu xanh lam, chẳng hạn. Chỉ với điều này, bạn có thể thay đổi màu của văn bản trong echo với:

33[0;34Text

Ở đâu Text sẽ có màu xanh lam. Ngoài ra, hãy xem xét một tập lệnh bash đơn giản để in “Chào mừng đến với Pháp” trong màu cờ Pháp:

#!/bin/bash  
BLUE='33[0;34m'
WHITE= '33[0;37m' 
RED= '33[0;31m'   
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"

Tùy chọn -e cờ của echo lệnh cho phép bạn sử dụng các ký tự đặc biệt như n (dòng mới) và t (tab) bên trong chuỗi đầu vào.

Khi bạn chạy tập lệnh:

$ ./colors.sh

Nó dẫn đến:

Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Mã ANSI không giới hạn ở màu sắc - nhưng cũng có thể được áp dụng cho kiểu dáng. Các mã 0..9 đại diện cho các kiểu văn bản, trong khi các mã 30...37 đại diện cho màu sắc:

Màu Mã số Kiểu văn bản Mã số
Đen 30 Văn bản đơn giản 0
đỏ 31 Chữ in đậm 1
màu xanh lá 32 Văn bản cường độ thấp 2
Nâu / cam 33 Gạch chân văn bản 4
Màu xanh da trời 34 Văn bản nhấp nháy 5
Màu tím 35 Văn bản ẩn 8
Cyan 36 Văn bản gạch ngang 9
Xám nhạt 37

Hãy tạo một tập lệnh bash để khám phá một số tùy chọn sau:

#!/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"

Chạy tập lệnh này dẫn đến:

Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Tương tự, bạn có thể thay đổi màu nền của các văn bản này bằng cách sử dụng mã 40..47:

màu sắc Mã số
Đen 40
đỏ 41
màu xanh lá 42
Nâu / cam 43
Màu xanh da trời 44
Màu tím 45
Cyan 46
Xám nhạt 47

Việc thay đổi nền của một chuỗi đã cho sẽ tuân theo quy tắc tương tự như khi thay đổi màu phông chữ - bản thân mã sẽ thay đổi hành vi:

#!/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"

Lưu ý: Theo quy tắc chung - bạn có thể dịch màu phông chữ sang màu nền bằng cách thêm 10. 30 là màu phông chữ đen, 40 là màu nền đen.

Thay đổi màu đầu ra với tput

Một giải pháp thay thế cho mã ANSI đang sử dụng tput chỉ huy:

$ tput setaf color_code

setf cho phép 8 màu, trong khi setaf cho phép 256 màu, do đó, tùy thuộc vào lệnh bạn đang sử dụng, bạn có thể đi giữa 0..70..255 như các mã màu. Cả hai lệnh dành riêng 0..7 với các mã màu giống nhau, trong khi với setaf, 8..15 là những màu có cường độ cao và 16..231 là các màu khác nhau của 8 màu đầu tiên, và 232..255 là các màu thang độ xám:

Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.
Tín dụng: Wikipedia

Ngoài ra, thẻ cào tput cũng cho phép bạn thay đổi màu nền, thêm đậm, giảm cường độ, v.v. bằng các lệnh khác:

Kiểu văn bản Lệnh
Màu nền setaf
Màu nền thiết lập
Không có phong cách sgv0
Chữ in đậm đậm
Văn bản cường độ thấp Sun.
Gạch chân văn bản ủ rũ
Văn bản nhấp nháy nháy mắt
Đảo ngược văn bản vòng quay

Hãy tạo một tập lệnh khác sử dụng tput để thay đổi màu đầu ra 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!"

Tập lệnh này sẽ in đầu ra sau trong thiết bị đầu cuối:

Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Lệnh tput cung cấp một cách dễ dàng để in bất kỳ màu nào thông qua một mã màu đơn giản. Bây giờ, hãy tạo một tập lệnh có thể in mọi mã màu có sẵn cho lệnh 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

Nó sẽ in từ 0 đến 255 màu và mã của chúng:

Cách thay đổi màu đầu ra của tiếng vang trong Linux PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Kết luận

Trong hướng dẫn ngắn này - chúng tôi đã xem xét cách bạn có thể thay đổi màu của echođầu ra của Linux - sử dụng ANSI Escape Sequences và tput chỉ huy.

Chúng tôi cũng đã khám phá cách bạn có thể làm cho quá trình ít dài dòng hơn bằng cách sử dụng các biến Bash, tinh chỉnh màu nền và văn bản kiểu.

Dấu thời gian:

Thêm từ xếp chồng lên nhau