設定で色を変更できますが、コマンドラインで端末の背景色とテキスト色を変更するにはどうすればよいですか?
特定のXTerm/ANSI互換端末(xterm
やgnome-terminal
など)では、デフォルトの8/16色パレットよりも大きいパレットを使用して色を設定できます(たとえば、88色、256 -colorsまたは16777216-colors(RGB)パレット; xterm
とgnome-terminal
は、256色と16777216-colors(RGB)パレットの両方をサポートします。シェルがこれをオーバーライドする可能性があることに注意してください(これは、たとえばzsh
の場合です)。
256色パレットをサポートするXTerm/ANSI互換端末で、256色パレットの色とANSIカラーコードをリストするスクリプトを次に示します。
#!/bin/bash
for((i=16; i<256; i++)); do
printf "\e[48;5;${i}m%03d" $i;
printf '\e[0m';
[ ! $((($i - 15) % 6)) -eq 0 ] && printf ' ' || printf '\n'
done
色を前景に適用するか、背景に適用するかに応じて、次のコマンドで<fg_bg>
または38
(それぞれ)の48
値を使用します。
printf '\e[<fg_bg>;5;<ANSI_color_code>m'
たとえば、前景色(<fg_bg>
= 38
)を赤(<ANSI_color_code>
= 196
)に設定し、背景色(<fg_bg>
= 48
)黒へ(<ANSI_color_code>
= 0
):
printf '\e[38;5;196m Foreground color: red\n'
printf '\e[48;5;0m Background color: black\n'
背景色を行全体に適用し、前景色をカーソルに適用するには、printf '\e[K'
を使用してプロンプトを再描画する必要があります。
互換性のある端末では、ANSIカラーコードの代わりにRGB値を使用しても同じことが実現できます。色を前景に適用するか背景に適用するかに応じて、次のコマンドで<fg_bg>
または38
の48
値を使用します(それぞれ)。
printf '\e[<fg_bg>;2;<R>;<G>;<B>m'
たとえば、前景色(<fg_bg>
= 38
)を赤(<R>
= 255
、<G>
= 0
、<B>
= 0
)と背景色(<fg_bg>
= 48
)を黒(<R>
= 0
、<G>
= 0
、<B>
= 0
):
printf '\e[38;2;255;0;0m Foreground color: red\n'
printf '\e[48;2;0;0;0m Background color: black\n'
繰り返しますが、背景色を行全体に適用し、前景色をカーソルに適用するには、printf '\e[K'
を使用してプロンプトを再描画する必要があります。
どちらの方法でも、printf '\e[0m'
を使用してすべての属性をリセットできます。
偶発的に色を変更することを意図している場合:
setterm コマンドを使用できます。
setterm -term linux -back <background_colour> -fore <text_color> -clear
色から選択できます(前面と背景の両方):
black|blue|green|cyan|red|Magenta|yellow|white|default
その他のオプション:
setterm -help
14.04では、dconf
を使用して色または端末を設定するオプションが見つかりませんでした。ただし、gconftool
を使用できます
最初にプロファイル名を取得する必要があります。
gconftool-2 --get /apps/gnome-terminal/global/profile_list
次に、プロファイルのテキストの色を設定するには:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/foreground_color" --type string "#FFFFFF"
たとえば、テキストの色を白に設定するには
背景色と同じ:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string "#000000"
たとえば、背景色を黒に設定するには
または、色の名前を設定するには、settermコマンドと同じパレットから、単にwhite
またはgreen
を使用できます。例:
gconftool-2 --set "/apps/gnome-terminal/profiles/<profile_name>/background_color" --type string black
カラー出力の取得に使用されるさまざまなカラーコードは、 カラーの背景 の取得にも使用できます。
40 black
41 red
42 green
43 yellow
44 blue
45 Magenta
46 cyan
47 white
したがって、次のコマンドは背景を赤に変えます。
$ echo -e '\e[0;41m'
シェル、ターミナルエミュレータなどによっては、-e
が不要な場合があります。
前景または背景をパレットの特定の色、または一部の端末での直接のRGB色に切り替えることに関するkosの回答を参照してください。このようなシーケンスの効果は、別の色が選択される(またはデフォルトに戻される)まで続きます。
一部の端末エミュレーターでサポートされている別のアプローチは、redefine端末の正確なRGB値デフォルト OSC 10/11エスケープシーケンスを使用した前景色と背景色です。
echo -ne '\e]10;#123456\e\\' # set default foreground to #123456
echo -ne '\e]11;#abcdef\e\\' # set default background to #abcdef
これははるかに長く続く可能性が高く(別のOSC 10/11で上書きされるか、OSC 110/111でリセットされるまで)、dconfアプローチとは異なり、現在の端末のみに影響します。