このコマンドtput
には色setf
とを設定する2つのオプションがありますが、setaf
どちらも私のコンピュータでうまく機能しているようです。
$ tput setf 2 && echo 'Hello world!'
$ tput setaf 2 && echo 'Hello world!'
setb
そして似たような二重性を持っているようですsetab
。
これら2つのオプションの違いは何ですか?
ベストアンサー1
setf
8つの色に制限されています。setaf
最大256色を設定できます。
(以下のすべての情報は私の端末なのでurxvtにのみ適用されますが、情報は他の端末と似ています(同じではありません)。)
setf
どちらもsetaf
異なるエスケープコードを提供します。以下で確認できます。
# tput setf 2 | xxd
0000000: 1b5b 3332 6d .[32m
# tput setaf 2 | xxd
0000000: 1b5b 3338 3b35 3b32 6d .[38;5;2m
私のurxvt(7)
マニュアルページから:
"ESC [ Pm m"
Character Attributes (SGR)
...
Pm = 30 / 40 fg/bg Black
Pm = 31 / 41 fg/bg Red
Pm = 32 / 42 fg/bg Green
Pm = 33 / 43 fg/bg Yellow
Pm = 34 / 44 fg/bg Blue
Pm = 35 / 45 fg/bg Magenta
Pm = 36 / 46 fg/bg Cyan
Pm = 37 / 47 fg/bg White
Pm = 38;5 / 48;5 set fg/bg to colour #m (ISO 8613-6)
したがって、上記の出力で使用すると、色が緑色に設定されていることがxxd
わかります。一方、ISO 8613-6(緑色)で定義されたカラーコードを表します。 ISO 8613-6では、色0x00-0x07は標準色と同じで、0x08 - 0x0fは標準の「太い」色です。 0x10-0xffに達すると新しい色が得られます。tput setf 2
Pm = 32
tput setaf 2
Pm = 38;5
で盗まれたウィキペディア:
0x00-0x07: standard colors (as in ESC [ 30..37 m)
0x08-0x0f: high intensity colors (as in ESC [ 90..97 m)
0x10-0xe7: 6*6*6=216 colors: 16 + 36*r + 6*g + b (0≤r,g,b≤5)
0xe8-0xff: grayscale from black to white in 24 steps