方法:Gnomeターミナルで下線、太字、斜体、取り消し線、色、背景、およびサイズ?


58

方法:Gnomeターミナルで下線、太字、斜体、取り消し線、および色?

大胆な

イタリック

̲n̲d̲e̲r̲l̲i̲n̲e̲

s̶t̶r̶i̶k̶e̶̶i̶t̶̶l̶i̶k̶̶e̶̶i̶t̶s̶̶h̶o̶t

background

font <(わからない場合はモノ)

サイズ


1
そして、何を正確に変えたいですか?プロンプト、入力するテキスト、コマンドの出力?
ラドゥラデアヌ14

PS1を実際にエクスポートします。基本的なエコーにも使用したいのですが。
アキバ14

1
「Faint」がサポートされていれば、切り替えます。:(
ユルゲンA.エアハルト

回答:


75

ANSI / VT100端末と端末エミュレータは、白黒のテキストを表示できるだけではありません。エスケープシーケンスのおかげで、色と書式設定されたテキストを表示できます。これらのシーケンスは、エスケープ文字(多くの場合「^ [」または「Esc」で表される)と、それに続く他の文字「Esc [FormatCodem」で構成されます。

Bashでは、次の構文を使用して文字を取得できます。

\e
\033
\x1B

ここに画像の説明を入力してください

コマンド(簡単なコピーアンドペースト用):

echo -e "\e[1mbold\e[0m"
echo -e "\e[3mitalic\e[0m"
echo -e "\e[4munderline\e[0m"
echo -e "\e[9mstrikethrough\e[0m"
echo -e "\e[31mHello World\e[0m"
echo -e "\x1B[31mHello World\e[0m"

ソース(すべてのタイプの前景/背景色コードを含む):http : //misc.flogisoft.com/bash/tip_colors_and_formatting


サイズ、フォント、背景にさらに3つ追加しました。これらは可能ですか?
アキバ14

1
@Akiva背景色は簡単に変更できます(専用セクションを参照)。サイズに関しては、可能だとは思いません。フォントの場合、唯一の設定はグローバルgconf値(/apps/gnome-terminal/profiles/Default/font
Sylvain Pineau 14

1
@dashesy:en.wikipedia.org/wiki/ANSI_escape_codeによると、53が上線を引くはずです。しかし、私の端末では何もしません。
シルヴァンピノー

1
@egmont PS1下のテキストに下線が混じって読みにくくなり、もちろん取り消し線が間違っているように見えたので、実際にgnome-terminalで使用したかったのを覚えています。そこに行があると、上にスクロールするときに前のコマンドを見つけるのに役立ちます(色も同じです)。
dashesy

1
@dashesyありがとう、実際にはかなりクールなユースケースです:) Gnome-terminalの進捗状況はここで追跡されます
エグモント19

26

Sylvainの答えを拡張するために、いくつかのヘルパー関数:

ansi()          { echo -e "\e[${1}m${*:2}\e[0m"; }
bold()          { ansi 1 "$@"; }
italic()        { ansi 3 "$@"; }
underline()     { ansi 4 "$@"; }
strikethrough() { ansi 9 "$@"; }
red()           { ansi 31 "$@"; }

それから

ここに画像の説明を入力してください


20

まだ説明されていないのは、定義済みの色の太字下線などの2つまたは3つのパラメーターの組み合わせです。これは、たとえば次の3方向構文によって実現されます。

~$ printf "\e[3;4;33mthis is a test\n\e[0m"

「これはテストです」が黄色(33m)、斜体(3m)、下線(4m)で印刷されます。毎回繰り返す必要
ないことに注意してください\e[
(Sylvainと同様に)\e[0m毎回設定をリセットすることも追加したことに注意してください。そうしないと、ターミナルで黄色とフォントスタイルがアクティブのままになります。言うまでもなく、スクリプトをリセットするためにこれらに注意する必要があります。スクリプトを使用するユーザーは、スクリプトがターミナルの色とスタイルの設定を永続的に変更する場合、それを嫌うかもしれません。


16

Ubuntu 18.04 LTSでデビューしたGNOMEターミナル3.28(VTE 0.52)は、キティに見られるカーリーや色付きの下線、Konsoleに見られる上線、そして最後に誰もが非常に愛されている、または大いに嫌われている点滅属性を含む、いくつかのスタイルのサポートを追加します。

これらは、VTEが少なくともバージョン0.52であれば、他のVTEベースのターミナルエミュレーター(Tilix、Terminator、Xfce4-terminal、Guakeなど)でも自動的に動作します。

以下は、標準のエスケープシーケンスとGNOMEターミナル(VTE)の追加を示すリストです。すべてのオープニングシーケンスのために、私はまた、一般的なのではなく、唯一のそのプロパティのクロージングシーケンスを示すてることに注意してください\e[mまたは\e[0mそれがすべての特殊モードを無効にします。

echo -e '\e[1mbold\e[22m'
echo -e '\e[2mdim\e[22m'
echo -e '\e[3mitalic\e[23m'
echo -e '\e[4munderline\e[24m'
echo -e '\e[4:1mthis is also underline (new in 0.52)\e[4:0m'
echo -e '\e[21mdouble underline (new in 0.52)\e[24m'
echo -e '\e[4:2mthis is also double underline (new in 0.52)\e[4:0m'
echo -e '\e[4:3mcurly underline (new in 0.52)\e[4:0m'
echo -e '\e[5mblink (new in 0.52)\e[25m'
echo -e '\e[7mreverse\e[27m'
echo -e '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
echo -e '\e[9mstrikethrough\e[29m'
echo -e '\e[53moverline (new in 0.52)\e[55m'

echo -e '\e[31mred\e[39m'
echo -e '\e[91mbright red\e[39m'
echo -e '\e[38:5:42m256-color, de jure standard (ITU-T T.416)\e[39m'
echo -e '\e[38;5;42m256-color, de facto standard (commonly used)\e[39m'
echo -e '\e[38:2::240:143:104mtruecolor, de jure standard (ITU-T T.416) (new in 0.52)\e[39m'
echo -e '\e[38:2:240:143:104mtruecolor, rarely used incorrect format (might be removed at some point)\e[39m'
echo -e '\e[38;2;240;143;104mtruecolor, de facto standard (commonly used)\e[39m'

echo -e '\e[46mcyan background\e[49m'
echo -e '\e[106mbright cyan background\e[49m'
echo -e '\e[48:5:42m256-color background, de jure standard (ITU-T T.416)\e[49m'
echo -e '\e[48;5;42m256-color background, de facto standard (commonly used)\e[49m'
echo -e '\e[48:2::240:143:104mtruecolor background, de jure standard (ITU-T T.416) (new in 0.52)\e[49m'
echo -e '\e[48:2:240:143:104mtruecolor background, rarely used incorrect format (might be removed at some point)\e[49m'
echo -e '\e[48;2;240;143;104mtruecolor background, de facto standard (commonly used)\e[49m'

echo -e '\e[21m\e[58:5:42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[21m\e[58;5;42m256-color underline (new in 0.52)\e[59m\e[24m'
echo -e '\e[4:3m\e[58:2::240:143:104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58:2:240:143:104mtruecolor underline (new in 0.52) (might be removed at some point) (*)\e[59m\e[4:0m'
echo -e '\e[4:3m\e[58;2;240;143;104mtruecolor underline (new in 0.52) (*)\e[59m\e[4:0m'

(*)下線のトゥルーカラー値はわずかに近似されています。

また、スタイルよりも機能的であり、おそらくここで言及する価値があるので、この図にはあまり収まらない少し奇妙なものは、GNOME Terminal 3.26(VTE 0.50)以来利用可能なiTerm2と共同設計されたハイパーリンクサポートです:

echo -e '\e]8;;http://askubuntu.com\e\\hyperlink\e]8;;\e\\'

結果を示すスクリーンショットは次のとおりです。 gnome-terminal 3.28でのレンダリング


2
これらのgnome-terminal / vteバージョンを持っていない私たちにとって、結果のスクリーンショットは素敵でしょう。
マリウスゲドミナス

@MariusGedminas完了。
エグモント

素晴らしい答え!これらすべてを収集するために時間を割いてくれてありがとう!彼らもiTerm2で動作するのだろうか(間もなくそれを自分で確認しようとするだろう...)
filbranden

2

これらのハードコーディングされたシーケンスを次のように置き換えます。

tput smul # set underline
tput rmul # remove underline

tput smso # set bold on
tput rmso # remove bold

tput setaf 1 #red
tput setaf 2 #green
...
tput cup 0 0 # move to pos 0,0

これらのコマンドの詳細については、「man terminfo」および「man tput」を参照してください。

例:

function f_help { c_green=$(tput setaf 2 2>/dev/null) c_reset=$(tput sgr0 2>/dev/null) c_bold=$(tput smso 2>/dev/null) echo "${c_bold}DESCRIPTION${c_reset} : .... ${c_green}My green text${c_reset}My plain text" }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.