Echo
如何通過迴聲獲得相反的背景
如果我使用 mode
0
,我們可以設置字型顏色和背景顏色,shuc 為echo -e "\e[0;31;47m teststring \e[0m"
但我希望使用相反的顏色作為背景顏色(我認為是青色)。所以我想使用模式
7
(模式7
會得到相反的背景)。但它並不總是有效:任何人都可以告訴我如何使用這種模式?
仔細閱讀關於ANSI 轉義碼的維基頁面;你可以使用
\e[46m
等
\e[7m
是大多數終端中反向影片的程式碼(也經常用於突出模式)。這樣做是用前景色替換背景色,用背景色替換前景色,它不是像攝影底片那樣的反向影片。對於照相底片,一些終端支持:
\e[38;2;RED;GREEN;BLUEm # for foreground \e[48;2;RED;GREEN;BLUEm # for background
轉義序列,其中,
RED
是從 0 到 255 的十進制數。這告訴終端在其調色板中選擇最接近該 RGB 規範的顏色。GREEN``BLUE
所以你可以這樣做:
straight_color() { printf '\33[48;2;%s;%s;%sm\33[38;2;%s;%s;%sm' "$@" } negative_color() { for c do set -- "$@" "$((255 - c))" shift done straightcolor "$@" }
然後例如:
straight_color 255 0 0 255 255 255
對於亮紅色背景上的亮白色前景和:
negative_color 255 0 0 255 255 255
對於負片(亮青色上的黑色)。