代替:

代替:

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スナックガイド。ソフトウェア。

おすすめ記事