it-swarm-tr.com

PC hoparlörümün bip sesini nasıl yaparım

Bash kullanarak, pc hoparlör bip sesi nasıl yapabilirim?

Gibi bir şey echo 'beepsound' > /dev/pcspkr güzel olurdu.

185
Stefan

Genellikle birçok sistemde yüklü beep yardımcı programını kullanıyorum. Bu komut, bir sistem sesi oluşturmak için farklı yaklaşımlar deneyecektir.

beep kılavuzundan ses oluşturmanın 3 yolu vardır:

  1. Shell betiğinde bip sesi üretmenin geleneksel yöntemi ASCII BEL (\007) Kabuk komutu gibi standart çıktıya karakter

    echo -ne '\007'
    

    Bu yalnızca, çağrılan Shell'in standart çıkışı şu anda bir tür terminal aygıtına yönlendirilmişse çalışır; değilse, bip sesi duyulmaz ve çıktının yönlendirildiği dosyada istenmeyen bozulmalara neden olabilir.

  2. Bip sesi çıkarmanın başka yolları da vardır. Biraz daha güvenilir bir yöntem /dev/tty ve BEL karakterinizi buraya gönderin. Bu, G/Ç yönlendirmesine karşı sağlamdır, ancak bir bip sesi oluşturmak isteyen Shell betiğinin kontrol terminali yoksa, örneğin bir X pencere yöneticisinden çalıştırıldığı için başarısız olur.

  3. Üçüncü yaklaşım X ekranınıza bağlanıp bir zil komutu göndermektir. Bu bir Unix terminal cihazına bağlı değildir, ancak (elbette) bir X ekran gerektirir.

beep bu 3 yöntemi dener.

133
echox

Basitçe yankılanıyor \a veya \07 benim için çalışıyor.

$ echo -e "\a"

Bu muhtemelen pcspkr çekirdek modülünün yüklenmesini gerektirecektir. Bunu sadece RHEL'de test ettim, bu yüzden YMMV.

GÜNCELLEME

Warren'ın yorumlarda belirttiği gibi, SSH üzerinden uzaktan oturum açıldığında bu çalışmayabilir. Hızlı bir çözüm, çıkışı TTY cihazlarından birine (ideal olarak kullanılmayan bir cihaz) yönlendirmek olacaktır. Örneğin.:

$ echo -en "\a" > /dev/tty5
78
Shawn Chin

NOT: Bu çözüm anakarttan değil hoparlörlerden bip sesi çıkarır.

ALSA, bir bip sesi üretmek için kullanılabilen bir komut satırı hoparlör testi ton üreteci olan speaker-test ile birlikte gelir:

$ speaker-test -t sine -f 1000 -l 1

Bakınız bu Arch Linux forum dizisi .

Ancak, bip sesi süresi keyfi olacaktır, ancak aşağıdaki gibi kontrol edilebilir:

$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid

Bir adım ileri gidebilir ve bu işlevle bir bip sesi çıkarabiliriz:

_alarm() {
  ( \speaker-test --frequency $1 --test sine )&
  pid=$!
  \sleep 0.${2}s
  \kill -9 $pid
}

frekans ve süre değişkenleriyle çağrılır:

$ _alarm 400 200

Bunu göz önünde bulundurarak, speaker-test. Bakınız bu Kabuk betiği .

76
Ryne Everett
tput bel

çünkü terminfobel

           Variable                       Cap-               TCap                  Description
            String                        name               Code

   bell                                   bel                bl                audible signal
                                                                               (bell) (P)
32
Winston Smith

sox yüklüyse ses kartını ve yoksa PC hoparlörü kullanmak için:

$ play -q -n synth 0.1 sin 880 || echo -e "\a"

sox çoğu dağıtım için kullanılabilir.

19
Alexander

Bazı dağıtımların bunu başarmak için komut satırı yardımcı programları vardır. Belki bize hangi dağıtımda olduğunuzu söyleyebilir veya arama yapabilirsiniz (ör. emerge -s beep gentoo'da).

"Kullanılabilir" araçların ötesine geçerek, bip sesi çıkaran bir Perl betiği de yapabilirsiniz, tek yapmanız gereken şunları içerir:

<SomeCodeBefore>
print "\007";
<SomeCodeAfter>  

Sonunda 'bip' sesi alıyorsanız aşağıdakileri deneyin:

#! /bin/sh 

beep -f 500 -l 700 
beep -f 480 -l 400 
beep -f 470 -l 250 
beep -f 530 -l 300 -D 100 
beep -f 500 -l 300 -D 100 
beep -f 500 -l 300 
beep -f 400 -l 600 
beep -f 300 -l 500 
beep -f 350 -l 700 
beep -f 250 -l 600
13
wormintrude

" Bip sesi yalnızca PC'nizde" hoparlör "varsa çalışır. Birçok modern dizüstü bilgisayarda/küçük cihazda bir tane yoksa." - tredegar .

Bunun yerine bir ses çalmayı deneyin:

$ play xxxxx.wav

Her şey başarısız olduğunda benim için çalıştı.

Referanslar

4
Elliptical view

Deneyin

echo -n Ctrl+VCtrl+G

Dezavantajı, bunun yalnızca çıkış cihazı bir terminal olduğunda çalışacağından, örneğin bir cron işi içinde çalışmayabilir. (Ancak root iseniz /dev/console anında bip sesi için.)

2
codehead

Linux'ta beep gibi araçlar, belirli bir ses çıkarmak için konsol aygıtında bir ioctl kullanabilir. Daha spesifik olmak gerekirse, beepKIOCSOUND ioctl kullanır, ancak ses üretmek için kullanılabilecek bir KDMKTONE ioctl de vardır.

Anladığım kadarıyla, birincisi açıkça iptal edilene kadar süren bir ses başlatırken, ikincisi önceden belirlenmiş bir süre için bir bip sesi yaratacaktır. Ayrıntılar için console_ioctl (4) kılavuz sayfası konusuna bakın.

Eğer beep 'nin yaptığı şeyden memnun değilseniz, bu ioctl'lere doğrudan erişmek için birkaç satır kod yazabilirsiniz. /dev/console Uygulamasına tam erişiminiz olduğunu varsayarsak, bu da kök ayrıcalıkları gerektirebilir.

2
MvG

Bir terminalde, Ctrl+G ve sonra Enter

0
Hitesh Chechani