Beep in shell script non funziona?

74

Mi piacerebbe usare un segnale acustico in uno script di shell. Sfortunatamente nessuno dei metodi che ho trovato tramite Google funziona per me.

Ho provato

echo -e '\a'

echo -ne '
echo -e '\a'

echo -ne '%pre%7'
7'

e il comando beep dopo averlo installato tramite apt.

Quale potrebbe essere la ragione?

    
posta NES 03.01.2011 - 21:37

9 risposte

82

Prima corsa sudo modprobe pcspkr e poi beep dovrebbe funzionare.

Il motivo per cui questo non è dovuto al fatto che di default Ubuntu non carica più il driver hardware che produce i beep.

Se questo funziona per te allora abilitare il caricamento di pcspkr modificare in modo permanente il file /etc/modprobe.d/blacklist.conf (usando gksudo gedit forse) e commentare la riga che dice blacklist pcspkr in modo che assomigli a questa:

# ugly and loud noise, getting on everyone's nerves; this should be done by a
# nice pulseaudio bing (Ubuntu: #77010)
# blacklist pcspkr
    
risposta data 8128 03.01.2011 - 21:44
83

Non essendo un fan del bip pcspkr, utilizzo un segnale acustico da uno dei suoni di sistema con il comando paplay del server pulseaudio installato.

Prima trova un suono che ti piace (puoi sfogliare / usr / share / sounds per alcuni disponibili per esempio) e creare un riferimento ad esso

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg

Quindi rendilo disponibile come comando

alias beep='paplay $BEEP'

Ora esegui beep ogni volta che ne hai bisogno. Ad esempio, per avvisarti quando un comando è finito:

find . | grep treasure ; beep
    
risposta data yuvilio 27.07.2012 - 02:28
21

Per risolvere questo problema in modo persistente:

  • Esegui gconf-editor e se è presente l'impostazione desktop | gnome | peripherals | keyboard | bell_mode , modifica da off a on
  • Esegui dconf-editor e se è presente l'impostazione org | gnome | settings-daemon | peripherals | keyboard | bell-mode , modifica da off a on
  • Aggiungi pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg al file ~/.xprofile (hai bisogno di gnome-control-center-data per glass.ogg )
  • Aggiungi [ "$DISPLAY" ] && xset b 100 al file ~/.bashrc

Il modo più semplice per attivare questa soluzione è riavviare.

Inoltre, per implementare immediatamente questa soluzione per una finestra di terminale che è già aperta, eseguire il comando pactl ed eseguire il comando xset nella finestra del terminale in questione.

    
risposta data jdthood 12.12.2012 - 13:33
19

Poiché questa è una domanda con un punteggio molto alto su google, aggiungerò i passaggi che ho seguito per riattivare il segnale acustico su console e X11:

Per la console Linux ( CTRL + ALT + F1 ... F6 ):

Perché non funziona di default

Poiché ha già risposto , il driver del kernel pcspkr per il PC Speaker è nella lista nera di Ubuntu.

Abilita temporaneamente fino al riavvio:

sudo modprobe pcspkr

Abilita automaticamente all'avvio:

sudo nano /etc/modprobe.d/blacklist.conf

(elimina o commenta pcspkr riga anteponendolo a # )

Per i terminali X11 (come il predefinito gnome-terminal )

Perché non funziona di default

Sotto X, come quando usi Unity, KDE, Gnome Shell, gli eventi beep vengono catturati da PulseAudio grazie a module-x11-bell , che viene caricata di default a /usr/bin/start-pulseaudio-x11 . E il campione sonoro PulseAudio suona su beep, bell.ogg , è vuoto per impostazione predefinita. Inoltre, il volume della suoneria potrebbe essere disattivato.

Per abilitare temporaneamente la sessione corrente,

xset b 100  # perhaps not needed, on my system it was 40 by default
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

Ci sono altri campioni adatti che puoi provare a /usr/share/sounds , per esempio controlla quelli a /usr/share/sounds/gnome/default/alerts/

Si noti che il programma beep non è realmente necessario. Ma se installato, utilizza l'altoparlante del PC. Era l'unico modo per trovare il buzzer sotto X:

sudo apt-get install beep

Per abilitare automaticamente all'avvio, aggiungi le linee sopra nel ~/.profile , o a livello di sistema in /etc/profile

Per testarlo:

printf '\a'

Beep!

beep

Buzz!

    
risposta data MestreLion 19.02.2015 - 12:36
13

Ho riscontrato questo problema prima. Da quello che ricordo, il problema è che la campana del terminale tenta di suonare un altoparlante interno del computer (come in un vecchio desktop), ma a laptop e alcuni computer più recenti manca una cosa del genere.

L'unica soluzione che ho trovato al momento era sudo apt-get install sox e

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

per es.

 play -n synth 0.1 sine 880 vol 0.5
    
risposta data YodaDaCoda 12.12.2012 - 00:04
2

Se hai altoparlanti reali collegati al computer e non stai ricevendo un segnale acustico è probabile perché stai usando compiz. Compiz si basa su pulseaudio che cattura i segnali acustici e li suona mentre la metacità ignora la normale configurazione e usa libcanberra per riprodurre un segnale acustico. Se funziona con metacity e non compiz, questo è il tuo problema, altrimenti il risultato della risposta è corretto.

    
risposta data Travis Watkins 03.01.2011 - 21:56
2

Per quanto posso dire, questo è un bug: System beep rotto in Karmic nonostante eroico sforzi per risolverlo .

    
risposta data htorque 03.01.2011 - 21:43
2

Ho finalmente trovato una soluzione, che non richiede alsamixer per avere un'opzione Beep PC. Penso di ricordare tutti i miei cambiamenti:

decommenta quanto segue in /etc/pulse/default.pa :

load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg
load-module module-x11-bell sample=bell-windowing-system

per questo bug , esegui pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

    
risposta data JoBu1324 12.12.2012 - 00:09
1

" Beep funziona solo se il tuo PC ha un 'altoparlante'. molti portatili / piccoli dispositivi moderni non ne hanno uno".

Prova a riprodurre un suono come questo: play xxxxx.wav Ho trovato un bel wav file che sembra essere breve e dolce, ma puoi scegliere anche tu. Funziona per me quando tutto il resto fallisce.

Grazie a: tredegar & amp; hk_centos

    
risposta data Eliptical view 06.03.2018 - 00:00

Leggi altre domande sui tag