Gnu ekranı altında çalışan bir bash betiğinin içindeki sesli zili nasıl çalabilirim?


19

TERM konsole-256color olarak ayarlanmış bir bash kabuğu çalıştıran ekranın dışındaki bir konsol terminal penceresine şunu yazarsam:

echo -n $ '\ a' veya
echo -n $ '\ eg' veya
./ringbell ./ringbell içeriği

#! / Bin / bash
echo -n $ '\ eg'; echo -n $ '\ a'

Hepsi yapılandırılmış ses zilinin çalmasına neden olur. Bir ekran oturumu girersem (.screenrc, aynı zamanda terimi konsole-256color olarak ayarlar) yukarıdaki 3 komuttan sadece ikincisi (echo -n $ '\ eg') ses zilinin duyulmasına neden olur. Komut dosyasını değiştirmem gerekiyor mu veya bu ekranla ilgili bir sorun mu?

Sahip olduğum ekran paketinin ubuntu sürümü 4.1.0 ~ 20120320gitdb59704-9.


1
Ayrıca bakınız bu soruya aslında Keith cevabı tercih rağmen.
Franklin Yu

Yanıtlar:


25

Bellekten, Ctrl-G çan karakteri, bu yüzden ikincisinin bu yüzden çalıştığını düşünüyorum. Ancak ekran, Ctrl-A'yı komut kodu olarak kabul ettiği için hangi karakterleri kabul ettiği konusunda seçici olabilir.

Bunu dene

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

Bunu rosettacode üzerinde buldum , umarım size bazı seçenekler sunar


Bu ekranın içinde veya dışında çalışmaz. Eğer infocmp kullanırsam, bel yeteneğinin TERM konsole-256color için tanımlanmadığını gösterir, bu da mantıklıdır. Ekran terminfo girişi bel tanımlamasına rağmen bir tput -T ekran bel de çalışmaz.
Bob

1
Daha fazla testten sonra tput -T ekran bel sonuçta çalışır görünüyor. Bir ekranın içinde bir ekran çalıştırdığım ve dış ekranda vbell olmadığı için ilk testim başarısız oldu. Bahşiş için teşekkürler.
Bob

0

En iyi çözüm: printf '\a'

Çünkü printfçoğu kabuğa yerleşik olarak iyi çalışır ve ayrıca printfLinux / Mac sistemleri ile kurulu eşdeğer bir yürütülebilir sürüm de vardır .

Diğer seçenekler: Yüklü lanetler varsa, şunları da kullanabilirsiniz: tput bel Son bash sürümünü kullanıyorsanız, şunları kullanabilirsiniz:echo -n '\a'

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.