Renkli kabuk çıktısı için manuel sayfa var mı?


23

Bilirsiniz, özel karakter dizileri tarafından yapılan renklendirilmiş çıktı, örneğin:

echo -e "\e[34m Hello\n \e[0m"

Bu mavi renkli "Merhaba" kelimesini üretecektir. Bunu yapmak için web'de arama yapmak zorunda kaldım ve bu zor, çünkü farklı kaynaklar farklı şeyler söyleyebilir. Bazı kılavuzların olması gerektiğini düşündüm, ama onları bulamadım. Hatta apropos colorya da benzer bir şeyle. Öyleyse, soru şu - güvenilir kılavuzları nerede bulabilirim?


2
ANSI çıkış kodları hakkında belgeler arıyorsunuz. (
Birini aramam

Bu kaçış dizilerini bilmeniz gerekmez. Bazı mermiler (en azından tcsh, zsh, balık), bu dizileri açıkça yazmak zorunda kalmadan, renk çıkışı için yerleşik desteğe sahiptir.
Stéphane Chazelas

Yanıtlar:


27

Bu sayfada listelenecek çok fazla bilgi kaynağı var:

  • Komut ASCII 27 (renderen 33 veya "\ 033") oluşturmak echo -eiçin bir uzantı kullanır \e. Bu kullanımları yazdırmanın taşınabilir yolu printf(POSIX). Standart echo(POSIX) ile karşılaştırın .
  • Örneği olarak yeniden yazılabilir.

    printf "\033[34m Hello\n \033[0m"

  • Renk çıkışları için standart ECMA-48'dir (Kodlu Karakter Kümeleri için Kontrol Fonksiyonları).
  • ECMA-48’de 8.3.117 SGR - SELECT GRAFİK RENDITION, 8 ön plan ve 8 arka plan rengini ayarlamak için kontrol sıralarını listeler.
  • Ayrıca, ISO 8613-6'da [CCITT Tavsiye T.416] belirtildiği şekilde karakter ön plan rengini ayarlamayı amaçlayan, 39/49 "varsayılan ekran rengi (uygulama tanımlı)" ve 38/48 "kodlarını gelecekteki standardizasyon için ayırmıştır; Yani, başka bir kuruluş tarafından bir öneri var ancak (şimdiye kadar, 24 yıl sonra) standardın bir parçası olmadı.
  • yakından okuyarak, standardın birçok yerde belirsiz olduğunu fark ederek farklı yorumlara izin verebilirsiniz. Bu kontrol dizilerinin sözdizimini açıklar ancak davranışlarını tanımlamaz . Bunun için ilgili terminallerin belgelerine gitmelisiniz.
  • xterm belgeleri, http://vt100.net adresinde bulunan DEC belgelerine aşina olduğunu varsayan XTerm Kontrol Dizileri'nde bulunur.
  • diğer terminaller için, el ile yapılan sayfalar kontrolleri numaralandırabilir (konsolda bulunan Linux konsolunda olduğu gibi ).
  • diğer terminaller kendilerini "xterm" olarak belgeler; tartışma için kontrolleri sayarak , xterm SSS versiyonlarının karşılaştırılmasına bakınız . Neyse ki, renk kontrolleri çoğunlukla uyumludur (ancak ncurses SSS bölümüne bakın. Terminalim, renklendirilmemiş alanlar gösteriyor ).
  • Ayrıca bir kabuk betiğinde yetenek tputkullanmanıza izin veren kılavuz sayfalarını da okuyabilirsiniz terminfo. Örneği olarak yeniden yazılabilir

    printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
    
  • Bash Prompt HOWTO ve Advanced Bash-Scripting Guide gibi birkaç kaynak renkten bahseder, ancak bir kural olarak (hatta bunlar bile) boşluklar ve eksiklikler vardır ve ECMA-48 ile ilgili olarak yardımcı olmazlar.

  • Bir web arama kopyasıyla bulacağınız diğer kaynakların birçoğu diğer kaynaklardan (alıntı yapılanlar gibi) vb. ve kural olarak gerçek standarda çok az dikkat eder.

ECMA-48'deki ilgili bölüm 8.3.117 - "SGR - GRAFİK KIRALAMA SEÇ" olarak gözüküyor. "Mavi" kelimesinden yalnızca söz eder ve orada bulunan kodlar en azından XTerm'imde çalışır.
l0b0

evet - bir açıklama ekleyeceğim.
Thomas Dickey

2
Gerçekten harika bir cevap - tüm cevapların sizinki gibi olmasını diliyorum
Sergius

1
xterm ayrıca 256 renkli modu da destekliyor, muhtemelen bu yukarıdaki kılavuzlardan birinde belgeleniyor.
sendmoreinfo

Komut çıktısıyla her türlü renklendirme işlemini yapabilen grc paketi de dahil olmak üzere birçok yararlı bilgi için, bkz. Wynnnetherland.com/journal/… .
Joe,
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.