Command-Line
在終端中給出十六進制值時是否有顯示顏色的命令?
如何在終端中顯示顏色以處理十六進制顏色值?它可用於主題化、XResources 等。例如:
$ command '#FF0000' // display a red square
我在 manjaro 中使用 urxvt、i3wm。
替代:
顯示顏色(){ perl -e 'foreach $a(@ARGV){print "\e[48:2::".join(":",unpack("C*",pack("H*",$a))). "m \e[49m "};列印 "\n"' "$@" }
範例用法:
$ show_colour "FF0088" "61E931" "1256E2"
這將列印具有給定 RGB 背景顏色的空間。請注意,您不得
#
在 RGB 程式碼中使用。如果存在,我將剝離它作為讀者的練習。☺這不會改變終端仿真器的調色板。
警告:您的終端仿真器必須使用正確的 ITU T.416 格式理解*直接顏色SGR 控制序列。*有幾個。更多地了解某些長期存在的錯誤公式中的這些控制序列。你會發現 rxvt-unicode 根本不理解它們。用一種常見的錯誤表述代替這種模棱兩可的形式:
顯示顏色(){ perl -e 'foreach $a(@ARGV){print "\e[48;2;".join(";",unpack("C*",pack("H*",$a)))." m \e[49m "};列印 "\n"' "$@" }
另一種選擇:
使用我在https://unix.stackexchange.com/a/491883/5132
setterm
中提到的攜帶式。它理解十六進制 RGB 符號,甚至用作它的指示符。#
範例用法:
$ setterm -7 --background '#FF0088' ; 列印''; \ > setterm -7 --background '#61E931' ; 列印''; \ > setterm -7 --background '#1256E2' ; 列印''; \ > setterm -7 --background 預設;列印'\ n'
這與理解直接彩色 SGR 控制序列的終端上的其他範例相同。
與前述替代方案的一個不同之處在於它
setterm
也適用於其他終端。對於不理解直接彩色 SGR 控制序列的終端類型,它具有備份功能。在僅了解索引顏色(即僅 256 種顏色)的終端類型上或僅了解 16 種 AIXTerm 顏色的終端上,它會嘗試選擇最接近所需 RGB 顏色的終端:% TERM=rxvt-256color setterm -7 --background "#FF0088" |hexdump -C 00000000 1b 5b 34 38 3b 35 3b 31 39 38 6d |.[48;5;198m| 0000000b % TERM=ansi COLORTERM=16color setterm -7 --background "#FF0088" |hexdump -C 00000000 1b 5b 31 30 35 6d |.[105m| 00000006 % TERM=ansi setterm -7 --background "#FF0088" |hexdump -C 00000000 1b 5b 34 35 6d |.[45m| 00000005 %
進一步閱讀
- 喬納森·德博因·波拉德 (2018)。
setterm
. 小吃指南。軟體。