Echo

如何通過迴聲獲得相反的背景

  • July 3, 2017

如果我使用 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

對於負片(亮青色上的黑色)。

引用自:https://unix.stackexchange.com/questions/374887