Echo shell komutunun bu kullanımı ne işe yarar?


0

echo -n $'\e]0;Hello World\a'Üzerinde çalıştığım kod tabanının bir parçası olan bir kabuk komut dosyasında buldum . Bu tam olarak ne yapar? Kesinlikle görünür bir şey yankılanmıyor.

Not, Ubuntu 12.04.5 kullanıyorum.


Daha önce verilen cevaplara ek olarak, bu komut tarafından kullanılan sözdiziminin de taşınabilir olmadığını, bu yüzden eşdeğer ancak POSIX uyumlu olduğunu tavsiye ederim printf "\033]0;Hello World\07".
jlliagre

Yanıtlar:


2

Daha fazla bilgi için * nix Echo burada


1
Bu doğru değil; \e[0;normal metin modunu \e]0;ayarlar , ancak pencere başlığını ayarlar. ANSI Kontrol Dizisi İntrodüseri (CSI \e[) ve İşletim Sistemi Komutu (OSC \e]) arasındaki fark önemlidir, ancak kaçırılması kolaydır.
Gordon Davisson

@ GordonDavisson İyi göz, düzeltildi. :)
Ƭᴇcʜιᴇ007

1
Cevabınız hala biraz yanlıştır. Sonu \abu özel durumda zili çalmaz, ancak pencerenin başlığına bir son sınırlayıcı olarak kaçış dizisinin bir parçasıdır.
jlliagre

3

XTerm'de (veya onu taklit eden herhangi bir şey), pencerenin başlığını "Merhaba Dünya" olarak ayarlar. \e]"işletim sistemi komutu" (OSC) için ASNI çıkış kodu; bu, esas olarak, ne anlama geldiğini tanımlamak için işletim sistemine bağlı olduğu anlamına gelir; XTerm'de, <OSC>0;text<bel>pencere başlığını ayarlamak için kullanılır.

Bkz wikipedia ve Edward Moy en XTerm dizisi listesi ( "İşletim Sistemi Kontrolleri" bölümü için arama).


0

\e]0;geçerli bir ANSI kodu değil, "normal ekran" alması gerekiyor \e[0m. Ƭᴇcʜιᴇ007'nin bağlantısı altındaki metinde belirtildiği gibi, bir kaçını aynı sırada birleştirebilirsiniz:

$ echo -en "\ e [0; 31; 7m TEST \ e [0m"  
 TEST $ _

Bu TESTters kırmızı olacaktır
Kaçış dizisi ayrıştırma için -e gerektiğine dikkat edin. -n yapar yankı yok sonunda (CR +) LF baskı.

Daha da iyisi, tputkomut kullanılarak terminfo kodları kullanmak - man 5 terminfoteknik ama muhtemelen oldukça tamamlandı. Neden tput? Terminaller her zaman ANSI olmadığından terminfo, mümkün olduğu kadar çok terminale tek bir arayüz sağlayarak "düzeltmeye" çalışır.

... öyleyse echo "$(tput sgr0)"- aynı echo -e "\e[0m"- bir ANSI terminaliniz varsa.

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.