Nasıl Yapılır: Gnome Terminalinde altı çizili, kalın, italik, üstü çizili, renk, arka plan ve boyut?


58

Nasıl Yapılır: Gnome Terminalinde altı çizili, kalın, italik, üstü çizili ve renk?

cesur

İtalik

altını çizmek

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

Renk

background

font <(söyleyemediyseniz mono)

boyut


1
Ve tam olarak ne değiştirmek istiyorsun? Bilgi istemi, girdiğiniz metin, komutlarınızın çıktısı?
Radu Rădeanu

aslında PS1'i dışa aktar. Yine de temel yankı için de isterdim.
Akiva

1
"Soluk" u destekliyorsa, ben değiştiririm. :(
Jürgen A. Erhard

Yanıtlar:


75

ANSI / VT100 terminalleri ve terminal emülatörleri yalnızca siyah beyaz metin görüntüleyemez; kaçış dizileri sayesinde renkleri ve biçimlendirilmiş metinleri görüntüleyebilirler. Bu diziler Escape karakterinden (genellikle "^ [" veya "Esc" ile temsil edilir) ve ardından diğer bazı karakterlerden oluşur: "Esc [FormatCodem".

Bash'de, karakter aşağıdaki sözdizimleriyle elde edilebilir:

\e
\033
\x1B

görüntü tanımını buraya girin

Komutlar (kolay kopyala-yapıştır için):

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"

Kaynak (tüm ön plan / arka plan renk kodları dahil): http://misc.flogisoft.com/bash/tip_colors_and_formatting


Size, font ve background için üç tane daha ekledim. Bunlar mümkün mü?
Akiva

1
@Akiva Arka plan rengini kolayca değiştirebilirsiniz (özel bölüme bakınız ). Boyut konusunda, bunun mümkün olduğunu sanmıyorum. Yazı tipi için tek ayar global gconf değeridir ( /apps/gnome-terminal/profiles/Default/font)
Sylvain Pineau

1
@dashesy: en.wikipedia.org/wiki/ANSI_escape_code 'e göre 53, üst çizgiyi yapmalıdır. Ama benim terminalimde hiçbir şey yapmaz.
Sylvain Pineau

1
@ egmont Bunu kullanmak istediğimi hatırlıyorum PS1(aslında gnome-terminalinde), çünkü altındaki metinde bir tür harmanlanmanın altını okumayı zorlaştırıyordu ve tabii ki çarpışma sadece yanlış görünüyordu. Orada bir çizgi olması, yukarı kaydırırken önceki komutları tespit etmenize yardımcı olur (renk de öyle).
kederli

1
@ dashesy Teşekkürler, aslında oldukça hoş bir kullanım örneği :) Gnome-terminal ilerlemesi burada izleniyor .
egmont

26

Sylvain'in cevabını genişletmek için bazı yardımcı fonksiyonlar:

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

Sonra

görüntü tanımını buraya girin


20

Henüz kapsanmayan bir şey önceden tanımlanmış bir renkte koyu veya altı çizili gibi iki veya üç parametrenin birleşimidir . Bu, örneğin 3 yollu bir sözdizimi ile gerçekleştirilir:

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

"bu bir testtir" ifadesinin sarı renkte ( 33m), italik ( 3m) ve altı çizili ( 4m) olmasına neden olacaktır . Her seferinde tekrar etmenin gerekli olmadığını
unutmayın . Bunun da (Sylvain'de olduğu gibi) her seferinde ayarları sıfırlamak için bir ekledim , çünkü aksi halde sarı renk ve yazı tipi terminalde aktif kalır! Bunları komut dosyalarında sıfırlamak için kesinlikle dikkat etmeniz gerektiğini söylemeye gerek yok, çünkü komut dosyalarınızı kullanan kullanıcılar, komut dosyası terminaldeki renk + stil ayarlarını kalıcı olarak değiştirdiğinde bunu beğenmeyebilir !\e[
\e[0m


16

Ubuntu 18.04 LTS’de yayınlanan GNOME Terminal 3.28 (VTE 0.52), Kitty’de görüldüğü gibi kıvrık ve renkli alt çizgiler, Konsole’de görüldüğü gibi üstünü çizme ve son olarak herkesin en çok sevilen ya da çok nefret edilen göz atma özniteliğini içeren birkaç stil için destek sağlıyor.

Bunlar ayrıca, VTE'nin en azından 0.52 versiyonunda olduğu göz önüne alındığında, otomatik olarak herhangi bir VTE-bazlı terminal emülatöründe (örneğin, Tilix, Terminator, Xfce4-terminal, Guake, vb.) Çalışır.

İşte standart kaçış dizilerini ve GNOME Terminal'in (VTE) eklerini gösteren bir liste. Her açılış sırası için ben de sadece, oldukça genel daha o mülk kapanış sırasını gösteren ediyorum unutmayın \e[mya \e[0mhepsi özel modları devre dışı bırakır.

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'

(*) Altı çizili çizgiler için gerçek renk değerleri biraz yaklaştırılmıştır.

Ve bu resme tam olarak uymayan biraz garip, çünkü bir stilden çok bir fonksiyonellikten daha fazlası, ama yine de bahsetmeye değer , GNOME Terminal 3.26'dan beri mevcut olan iTerm2 ile birlikte tasarlanan köprü desteği (VTE 0.50). :

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

İşte sonucu gösteren bir ekran görüntüsü: GNOME-Terminal 3.28'de renderleme


2
Sonucun bir ekran görüntüsü bu gnome-terminal / vte versiyonlarına sahip olmayanlar için çok güzel olurdu.
Marius Gedminas

@MariusGedminas Tamamlandı.
egmont

Müthiş cevap! Tüm bunları toplamak için zaman ayırdığınız için teşekkür ederiz! Onlar da iTerm2 üzerinde çalışıp çalışmadıklarını merak ediyorum (kısa süre sonra bunu kontrol etmeye çalışacağım ...)
filbranden

2

Bu kodlanmış dizileri şu şekilde değiştirin:

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

Bu komutların tam açıklamaları için "man terminfo" ve "man tput" bölümüne bakın.

Örnek :

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" }

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.