16進カラー値を処理するために端末に色を表示する方法は?テーマ、XResourcesなどに便利です。たとえば、
$ command '#FF0000'
// display a red square
私はmanjaroでurxvt、i3wmを使用します。
ベストアンサー1
代替:
ディスプレイカラー(){ perl -e 'foreach $a(@ARGV){print "\e[48:2::".join(":",unpack("C*",pack("H*",$a))))。 "m \e[49m "};印刷"\n"' "$@" }
使用例:
$show_color "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"' "$@" }
別のオプション:
setterm
私はラップトップを使ってhttps://unix.stackexchange.com/a/491883/5132。 16 進 RGB 表記法を理解し、#
それをインジケータとして使用することもあります。
使用例:
$ setterm -7 - 背景 '#FF0088' ;印刷''; > setterm -7 -背景 '#61E931' ;印刷'' \ > setterm -7 -背景 '#1256E2' ;印刷'' \ > setterm -7 --背景デフォルト printf '\n'
これは、直接色SGR制御順序を理解する端末の他の印刷例と同じである。
以前の選択肢との1つの違いは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
。 スナックガイド。ソフトウェア。