Vraag Piep in shell-script werkt niet?


Ik wil graag een piepgeluid gebruiken in een shellscript. Helaas werken geen van de methoden die ik via Google heb gevonden voor mij.

Ik heb geprobeerd

echo -e '\a'

echo -ne '\007'

en het commando beep nadat ik het had geïnstalleerd via apt.

Wat zou de reden kunnen zijn?


74
2018-01-03 20:37


oorsprong


Zie dit bugrapport: bugs.launchpad.net/ubuntu/+source/unity/+bug/769314 - Flimm
superuser.com/questions/47564/... || unix.stackexchange.com/questions/1974/... || stackoverflow.com/questions/10313939/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


antwoorden:


Eerste loop sudo modprobe pcspkr en dan beep zou moeten werken.

De reden dat dit niet het geval is, is dat Ubuntu standaard de hardware-driver die pieptonen produceert niet meer laadt.

Als dit voor u werkt, dan kunt u het laden van pcspkr permanent wijzigen /etc/modprobe.d/blacklist.conf bestand (met gksudo gedit misschien) en commentaar geven op regel die zegt blacklist pcspkr dus het ziet er zo uit:

# lelijk en hard geluid, op ieders zenuwen werken; dit zou moeten gebeuren door een
# nice pulseaudio bing (Ubuntu: # 77010)
# blacklist pcspkr

80
2018-01-03 20:44



Als ik commentaar geef blacklist pcspkr ik moet doen modprobe -r pcspkr && modprobe pcspkr om het te laten werken. Ook piepen aan het werk is niet hetzelfde als het krijgen van de hoorbare bel aan het werk en zo askubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell moet nog steeds open zijn. - daithib8
Dit werkt niet voor mij in Ubuntu 14. - Cerin


Omdat ik geen fan ben van de pcspkr-piep, gebruik ik een piep van een van de systeemgeluiden met de paplay-opdracht van de geïnstalleerde pulseaudyserver.

Zoek eerst een geluid dat u bevalt (u kunt bijvoorbeeld bladeren / usr / delen / geluiden voor enkele beschikbare) en er een verwijzing naar maken

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

Laat het dan beschikbaar als een commando

alias beep='paplay $BEEP'

Ren gewoon gewoon beep wanneer je het nodig hebt. Bijvoorbeeld om u te waarschuwen wanneer een opdracht is voltooid:

find . | grep treasure ; beep

82
2017-07-27 00:28



Kun je ervoor zorgen dat dit geluid wordt afgespeeld als iemand rent echo -e '\a' - Flimm
Je hebt misschien wat nodig lezen commando in een while-lus of een andere bibliotheek die toetsaanslagen kan monitoren. - yuvilio
Dit is een geweldige oplossing! Nu kan ik het doen run-my-long-test-suite.sh; beep en lees stackoverflow totdat het systeem gereed is. - jamesc
Leuk! ik gebruik export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg en alias beep='paplay $BEEP --volume=32768' nu, dat werkt goed voor mij. (Merk op dat u het volume kunt overschrijven met de beep alias, b.v. beep --volume=15000 speelt op een volume van -12dB.) - leftaroundabout
Het afspelen van deze ogg-bestanden kan latentieorders tot gevolg hebben die groter zijn dan die van de interne pc-luidsprekerpieper. Niet alleen dat de latency zeer variabel lijkt. Ik erken dat de meeste mensen er niets om geven, maar als je realtime of bijna realtime responsiviteit nodig hebt, is de pc-luidspreker waarschijnlijk de beste optie voor hoorbare feedback. - H2ONaCl


Om dit probleem blijvend op te lossen:

  • Rennen gconf-editor en als het desktop | gnome | peripherals | keyboard | bell_mode instelling is aanwezig en verander het van off naar on
  • Rennen dconf-editor en als het org | gnome | settings-daemon | peripherals | keyboard | bell-mode instelling is aanwezig en verander het van off naar on
  • Toevoegen pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg naar het bestand ~/.xprofile (jij hebt nodig gnome-control-center-data voor glass.ogg)
  • Toevoegen [ "$DISPLAY" ] && xset b 100 naar het bestand ~/.bashrc

De eenvoudigste manier om deze oplossing te activeren, is opnieuw opstarten.

Als u deze oplossing onmiddellijk wilt implementeren voor een terminalvenster dat al is geopend, voert u de pactl commando en voer de xset commando in het betreffende terminalvenster.


21
2017-12-12 12:33



Ik zet de pactl upload-sample commando in een shellscript, maar je methode is overzichtelijker. Bedankt! - JoBu1324
Als je de pactl commando binnen ~/.xprofilehet wordt uitgevoerd aan het begin van de GUI-sessie. - jdthood
De dconf-editor versie van de bell-mode omgeving lijkt te zijn org.gnome.settings-daemon.peripherals.keyboard. - lgarzo
@lgarzo: Bedankt voor de tip. Ik zal het antwoord bijwerken. - jdthood
@ Hibou57: zorg ervoor dat je het pakket met glass.ogg geïnstalleerd - Janus Troelsen


Omdat dit een zeer hoge beoordeling is op google, voeg ik de stappen toe die ik deed om de pieptoon opnieuw in te schakelen in console en X11:


Voor de Linux-console (CTRL+ALT+F1...F6):

Waarom het standaard niet werkt

Als al beantwoord, de pcspkr kerneldriver voor de pc Luidspreker staat op de zwarte lijst in Ubuntu.

Tijdelijk inschakelen tot reboot:

sudo modprobe pcspkr

Automatisch inschakelen bij opstarten:

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

(verwijderen of reageren pcspkr regel door deze aan te passen #)


Voor X11-terminals (zoals de standaard gnome-terminal)

Waarom het standaard niet werkt

Onder X, zoals bij gebruik van Unity, KDE, Gnome Shell, worden de piepgebeurtenissen vastgelegd door PulseAudio dankzij module-x11-bell, die standaard wordt geladen op /usr/bin/start-pulseaudio-x11. En het geluidsvoorbeeld PulseAudio speelt op pieptoon, bell.ogg, is standaard leeg. Bovendien kan het belvolume zijn gedempt.

Om tijdelijk in te schakelen voor de huidige sessie,

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

Er zijn andere geschikte voorbeelden die u kunt uitproberen /usr/share/sounds, controleer bijvoorbeeld degene bij /usr/share/sounds/gnome/default/alerts/

Merk op dat de beep programma is niet echt nodig. Maar indien geïnstalleerd, wordt de pc-luidspreker gebruikt. Het was de enige manier die ik kon vinden om de zoemer onder X in te schakelen:

sudo apt-get install beep

Om automatisch bij het opstarten in te schakelen, voegt u gewoon de bovenstaande regels toe in uw ~/.profile, of het hele systeem op /etc/profile


Om het te testen:

printf '\a'

Beep!

beep

Buzz!


17
2018-02-19 11:36



Om automatisch een pieptoon van een pc-luidspreker in te schakelen, moet je dat eigenlijk doen commentaar zei regel binnen /etc/modprobe.d/blacklist.conf niet uncomment het (u wilt blacklisting uitschakelen, niet andersom). - o'rety
@ o'rety: bedankt, ik heb het bewerkt! :) - MestreLion
beide oplossingen werken op Ubuntu 16.04 Opmerking: pcspkr en bell.ogg zijn onafhankelijke benaderingen. beep probeert te piepen met behulp van verschillende benaderingen, bijvoorbeeld ioctl(console_fd, KIOCSOUND, period) gebruik pcspkr (het geluid komt van pc-luidspreker op het moederbord) terwijl printf '\a' -gebaseerde methode werkt mogelijk zonder dat alleen bell.ogg (het geluid komt van gewone luidsprekers). De tweede methode werkt mogelijk niet totdat de pulseaudio-service is gestart en / of xset b on wordt uitgevoerd - jfs
De pactl upload-sample ... was goud voor mij. Wat is de manier om het laden van de monsters permanent opnieuw te configureren? - ulidtko
@ulidtko: voeg gewoon die regels in je toe ~/.profile, of het hele systeem op /etc/profile - MestreLion


Ik ben dit probleem eerder tegengekomen. Van wat ik me herinner, is het probleem dat de terminalbel een interne computerluidspreker probeert te laten rinkelen (zoals op een old-school desktop), maar laptops en sommige nieuwere computers missen zoiets.

De enige oplossing die ik destijds vond was om sudo apt-get install sox en

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

bijv.

 play -n synth 0.1 sine 880 vol 0.5

11
2017-12-11 23:04



probeer mijn oplossing - ik zou graag willen weten of het voor u werkt! - JoBu1324
u kunt hiervoor ook een luidsprekertest gebruiken - Janus Troelsen
Je kunt ook een mooie gitaarplukkentoon hebben: play -q -n synth 2 pluck C5. C5 is de notitie. - Pablo Bianchi


Als u echte luidsprekers op de computer hebt aangesloten en u krijgt geen piep, komt dit waarschijnlijk omdat u compiz gebruikt. Compiz gaat ervan uit dat pulseaudio de piepjes opvangt en deze speelt terwijl metacity om de gebruikelijke instellingen gaat en libcanberra gebruikt om een ​​piepgeluid af te spelen. Als het werkt met metacity en niet compiz is dat uw probleem, anders is het antwoord dat htorque gaf correct.


2
2018-01-03 20:56





Voor zover ik kan zien, is dit een bug: Systeempieper in Karmic verbroken, ondanks heroïsche pogingen om het te repareren.


2
2018-01-03 20:43



"Niet standaard ingeschakeld" betekent niet kapot en er is geen "heroïsche inspanning" vereist: gewoon modprobe pcsprk (in console) of pactl upload-sample ... in X11 en de vervelende piep is terug :) - MestreLion


Ik heb eindelijk een oplossing gevonden die niet vereist is alsamixer om een ​​pc-piepoptie te hebben. Ik denk dat ik al mijn veranderingen onthoud:

uncomment het volgende 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 deze bug, rennen pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg


2
2017-12-11 23:09



Probeerde dit, pactl gaf me Connection failure: Connection refused pa_context_connect() failed: Connection refused. - YodaDaCoda
Kan zijn deze draad zal helpen - als je ooit pulseaudio als root hebt uitgevoerd. - JoBu1324
Ik heb eigenlijk een ander probleem. Pulseaudio-worpen Failed to open module "module-esound-protocol-unix": file not found. Waarschijnlijk niet de moeite waard om hier te bespreken sinds ik 13.04 gebruik, hoewel ik graag uw oplossing zou willen verifiëren. - YodaDaCoda
Leuke, net iets andere lijnen voor 15.04. - VRR


"Piep werkt alleen als uw pc een 'luidspreker' heeft. Veel moderne laptops / kleine apparaten hebben er geen ".

Probeer een geluid als dit te spelen: play xxxxx.wav   Ik vond een leuke wav bestand dat lijkt kort en zoet, maar u kunt uw eigen ook kiezen. Werkt voor mij als al het andere is mislukt.


Dankzij: tredegar & hk_centos


1
2018-03-05 23:00