設定で色を変更できますが、コマンドラインで端末の背景色とテキスト色を変更するにはどうすればよいですか?
dconf
。以前に同様の質問への回答を書いたことがあります:askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
設定で色を変更できますが、コマンドラインで端末の背景色とテキスト色を変更するにはどうすればよいですか?
dconf
。以前に同様の質問への回答を書いたことがあります:askubuntu.com/a/628129/295286
\033[00;34mFOO\033[00m
回答:
特定のXTerm / ANSI互換端末(xterm
やなどgnome-terminal
)では、デフォルトの8/16 色パレットよりも大きなパレットを使用して色を設定できます(たとえば、88色、256色、または16777216色(RGB)パレットを使用) ;両方xterm
でgnome-terminal
、256色と16777216色(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'
して、すべての属性をリセットするために使用できます。
xterm
とgnome-terminal
\ e [38/48; 2; R; G; Bmトゥルーカラーエスケープシーケンスを認識します。ただし、xterm
256色パレットで実際の色を最も近い色に丸めます。gnome-terminal
エスケープシーケンスで指定された正確なトゥルーカラーを表示します。
xterm
)カーソルが非常に右端にある場合(右端の列に視覚的に表示されますが、右端の列に文字が既に印刷されているので論理的にそれを超えています)、最後の文字が削除されます。例えばbugzilla.gnome.org/show_bug.cgi?id=740789またはsavannah.gnu.org/bugs/?36831を参照してください。
このページにある情報(プレビュー列を除く):
シーケンスは、エスケープ文字(しばしば「で表現で構成されている^[
」または」<Esc>
いくつかの他の文字が続く^[FCm
「):」」(ここで、FC
以下の箇条書きで数字の1です)。
ではbash
、Escコードは次のいずれかになります。
\e
\033
(8進数)\x1B
(16進数)注1: " \e[0m
"シーケンスは、すべての属性(フォーマットと色)を削除します。各色付きテキストの最後に追加することをお勧めします。
注2:前景色と背景色は、端末の構成によって異なり、すべての色がサポートされているわけではありません。
0
:すべての修飾子、前景、および背景属性をリセット/削除します。 echo -e "\e[0mNormal Text"
1
:太字/明るい: echo -e "Normal \e[1mBold"
2
:薄暗い: echo -e "Normal \e[2mDim"
4
:下線付き: echo -e "Normal \e[4mUnderlined"
5
:点滅(XTerm以外のほとんどの端末では機能しません): echo -e "Normal \e[5mBlink"
7
:反転/反転: echo -e "Normal \e[7minverted"
8
:非表示(機密情報に便利): echo -e "Normal \e[8mHidden Input"
21
:ボールド/ブライトのリセット/削除: echo -e "Normal \e[1mBold \e[21mNormal"
22
:薄暗いリセット/削除: echo -e "Normal \e[2mDim \e[22mNormal"
24
:下線のリセット/削除: echo -e "Normal \e[4mUnderlined \e[24mNormal"
25
:点滅のリセット/削除: echo -e "Normal \e[5mBlink \e[25mNormal"
27
:反転/反転のリセット/削除: echo -e "Normal \e[7minverted \e[27mNormal"
28
:非表示のリセット/削除: echo -e "Normal \e[8mHidden \e[28mNormal"
39
:デフォルト(通常は緑、白、または明るい灰色): echo -e "Default \e[39mDefault"
30
:ブラック:echo -e "Default \e[30mBlack"
(最高の背景色と組み合わせます: echo -e "Default \e[30;107mBlack on white"
)31
:赤(緑の背景には使用しないでください)32
: 緑33
: 黄34
: 青35
:マゼンタ/パープル36
:シアン37
: ライトグレー90
: 暗灰色91
: ライトレッド92
:ライトグリーン93
:薄黄色94
: ライトブルー95
:ライトマゼンタ/ピンク96
:ライトシアン97
: 白い49
:デフォルトの背景色(通常は黒または青)40
: ブラック41
: 赤42
: 緑43
: 黄44
: 青45
:マゼンタ/パープル46
:シアン47
:ライトグレー(白い前景では使用しないでください)100
:ダークグレー(黒の前景では使用しないでください)101
: ライトレッド102
:ライトグリーン(白い前景では使用しないでください)103
:ライトイエロー(白い前景では使用しないでください)104
:ライトブルー(前景がライトイエローの場合は使用しないでください)105
:ライトマゼンタ/ピンク(明るい前景では使用しないでください)106
:ライトシアン(白い前景では使用しないでください)107
:白(前景が明るい場合は使用しないでください)前景色と背景色の両方を一度に設定するには、ther formを使用しますecho -e "\e[S;FG;BGm"
。例:(echo -e "\e[1;97;41m"
赤い背景に太字の白い前景)
256色のオプションについては、ソースページを参照してください。
偶発的に色を変更する場合:
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
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
うまくいきました。
gconftool-2
、または(Ubuntuの14.04と、おそらくいくつかの次のリリースの場合)dconf
またはgsettings
Ubuntuの変更gnome-terminalのの設定の新しいバージョンに、そして上で即時に有効になり、すべてのタブと同じプロファイルの窓。OPはこの動作を探していなかったと思います。
前景または背景をパレットの特定の色、または一部の端末での直接的なRGB色に切り替えることに関するkosの回答を参照してください。このようなシーケンスの効果は、別の色が選択される(またはデフォルトに戻される)まで続きます。
一部の端末エミュレーターでサポートされている別のアプローチは、OSC 10/11エスケープシーケンスを使用して、端末のデフォルトの前景色と背景色の正確なRGB値を再定義することです。
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アプローチとは異なり、これは現在の端末のみに影響します。