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
background
font
<(söyleyemediyseniz mono)
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
background
font
<(söyleyemediyseniz mono)
Yanıtlar:
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
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
/apps/gnome-terminal/profiles/Default/font
)
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).
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
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
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[m
ya \e[0m
hepsi ö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\\'
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"
}