Bas kabuğunu özelleştirme: Komutu kalın / renklendir


13

Çevrimiçi bir dizi öğretici / gönderi var (örneğin http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) ayarlayarak bash isteminizi özelleştirme hakkında PS1. Yazdığım komutun rengini / kalınlığını özelleştirmenin bir yolu var mı?

Başka bir deyişle, örnek olarak yeşil bir bilgi istemi, kalın mavi bir komut istediğimden ve sonra varsayılan olarak hangi renkte çıktı istediğimi söyleyelim. Aşağıdaki örnekte, " joe>" ayarını nasıl yaparsanız yapın yeşil, mavi, kalın, nasıl gösterileceğini zaten biliyorum PS1. Ama git statusmesela cesur bir gösteri yapmamın bir yolu var mı?

joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...

Eğer gerçekten iyi bir kabuk istiyorsanız, zsh kullanmalısınız, elde etmek istediğiniz şey çok basit olurdupreexec() { printf '\e[0m' }
bollovan

3
@bollovan - 'Gerçekten iyi' biraz öznel, şişkinliği ve POSIX uyumsuzluğu nedeniyle gerçekten tespit edilebilir buluyorum. Sana nasıl uyuyorsa.
Chris Down

@ChrisDown şişmesi teknenizi yüzer - hiç duymadınız, oldukça eğlenceli.
n611x007

Yanıtlar:


13

PS1'den sonra bir renk izi bırakmanız ( >örneğinizde sonra başlatmanız ) ve ardından DEBUGkomutunuz çalıştırılmadan önce rengi temizlemek için bash tuzağını kullanmanız gerekir (ancak kabuğunuza enter tuşuna bastıktan sonra. :

shopt -s extdebug
trap "tput sgr0" DEBUG

yabancılardan kodlardan kaçması için: bu komutun orijinal rengini koruyacak mı (örn. ls --color=alwaysrenkli olacak)?
n611x007

@naxa - Evet, bu açıkça renk kodlarını ayarladığından (yalnızca ilk renkten sonra geçerli olacak varsayılan terminal renginde renklendirilmiş renkler hariç).
Chris Down

Bu hile sekmenin tamamlanmasına müdahale ediyor gibi görünüyor (tuhaf şeyler yazdırıyor ^[(B^[[m). Bununla birlikte, sadece bazı sistemlerde olur: Bunu, her ikisi de Ubuntu 12.04 LTS çalıştıran iki sistemde test ettim ve bunlardan sadece biri müdahale etti.
musiphil

7

Tamlık için, bash'de bir komut istemi rengi ve komut satırı giriş rengi nasıl ayarlanır. Bu çizgileri içine koy .bashrc.

PS1='\[\e[1;34m\]\w\$ \[\e[0;32m\]'
trap 'printf \\e[0m' DEBUG

DEBUG tuzağı, Chris Down tarafından önerildiği gibi , metin niteliklerini sıfırlamak için kullanılır. Hata ayıklama amaçlıdır, ancak kullanıcı tarafından yazılan komutu çalıştırmadan önce kod yürütmek de yararlıdır .

Bilgi istemi ayarında:

  • \[…\] bash'ın herhangi bir ekran gayrimenkulünü kullanmadıklarını söylemek için kaçış dizileri etrafında kullanılır (onlar olmadan, bash istemi yeniden çizmesi gerektiğinde ekran bozulur).
  • \e[…mburada bir sayı veya daha genel olarak noktalı virgülle ayrılmış bir sayı dizisi , aşağıdaki metnin rengini ve diğer niteliklerini etkilemek için terminale gönderilen bir kaçış dizisidir . Örneğin, 1;34kalın mavi ayarlar; 0;32tüm nitelikleri sıfırlar ve ardından rengi yeşile dönüştürür. Zevkinize göre ayarlayın.
  • \w\$geçerli dizini yazdırın ve $veya #. Elbette bunu istediğiniz gibi değiştirebilirsiniz ve isterseniz arasına metin özniteliği değişiklikleri ekleyebilirsiniz.
  • Sonunda metin girişinin rengini ayarlayan bir son özellik değişikliği var.

FYI, bash renk kodları / dizileri buradan görülebilir: misc.flogisoft.com/bash/tip_colors_and_formatting
kaiwan

0

Sadece BASH komutlarını öğreniyorum ve burada versiyonumdaki renk komutlarıyla oynuyorum. Bu çözümü anladım:

Bu komutu kullanarak:

PS1='\[\e[0:36m\]\h>\[\e[0;31m\]'

Deconstruct: PS1 =: PS1 komutunu başlatır

'': komutu tek tırnak içine alın (böylece BASH bunun bir komut olduğunu düşünmez)

\: her bir komut bununla başlar

[]: her komutu içerir

\ e (ayrıca bir ASCII çıkış karakteri olabilir \ 033): bir renk komutu başlatır

Renk komutu uygulandığı şeyden önce gelir.

[\ e [0; 36m]: camgöbeği

\ h: ana bilgisayar adı

'>': ana bilgisayar adından sonra yazdırılır

[\ e [0; 31m]: kırmızı

Görünüşe göre, sondaki kırmızı komut girişi kırmızı yapar. Sadece renkleri beğeninize göre değiştirin ve aradığınız şey budur.

Ayrıca, bu site bana biraz yardımcı oldu:

https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/

Sürümüm: GNU bash, s. 4.2.46

Kendine iyi bak,

gelincik

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.