Wie kann ich mit bash den PC-Lautsprecher piepen lassen?
Sowas echo 'beepsound' > /dev/pcspkr
wäre schön.
command-line
Stefan
quelle
quelle
Antworten:
Normalerweise verwende ich das kleine Dienstprogramm,
beep
das auf vielen Systemen installiert ist. Dieser Befehl versucht verschiedene Ansätze, um einen Systemsound zu erzeugen.Es gibt drei Möglichkeiten, einen Sound aus der
beep
Manpage zu erstellen :Die traditionelle Methode zum Erzeugen eines Pieptons in einem Shell-Skript besteht darin, ein
ASCII BEL
(\007
) -Zeichen mithilfe eines Shell-Befehls wie z. B. in die Standardausgabe zu schreibenDies funktioniert nur, wenn die Standardausgabe der aufrufenden Shell derzeit an ein Endgerät geleitet wird. Andernfalls wird durch den Signalton kein Ton ausgegeben, und es kann sogar zu einer unerwünschten Beschädigung der Datei kommen, auf die sich die Ausgabe bezieht.
Es gibt andere Möglichkeiten, ein Piepton zu verursachen. Eine etwas zuverlässigere Methode besteht darin
/dev/tty
, Ihren BEL-Charakter zu öffnen und dorthin zu senden. Dies ist robust gegen E / A-Umleitung, schlägt jedoch immer noch fehl, wenn das Shell-Skript, das einen Signalton erzeugen möchte, kein steuerndes Terminal hat, z. B. weil es von einem X Window Manager ausgeführt wird.Ein dritter Ansatz besteht darin, eine Verbindung zu Ihrem X-Display herzustellen und ihm einen Klingelbefehl zu senden. Dies hängt nicht von einem Unix-Endgerät ab, sondern erfordert (natürlich) eine X-Anzeige.
beep
versuche einfach diese 3 Methoden.quelle
beep
Befehl lautet: johnath.com/beep Unter Ubuntu / Debian können Sie es mit installierenapt-get install beep
.pcspkr
Modul, laden Sie dassnd-pcsp
, und Sie haben jetzt eine Alsa-Soundkarte, die mit altmodischen Tricks Ihren internen Lautsprecher mit digitalem Sound versorgt. Mit piezoelektrischen internen Lautsprechern werden miese Ergebnisse erzielt. Bei klassischen internen Lautsprechern ist die Qualität jedoch recht gut. Auf diese Weise können Sie viel kreativer für Ihrepcspkr
undsnd-pcsp
sind Module, keine Pakete. Verwendungmodprobe
/modprobe -r
/lsmod
sie zu manipulieren. Zu Ihrer Information, sie sind in demlinux-image-something
Paket enthalten, das hoffentlich bereits installiert ist (ansonsten hätten Sie keinen Linux-Kernel).modprobe snd-pcsp
jetzt ein Piepton!Einfach widerhallen
\a
oder\07
funktioniert bei mir.Dies erfordert wahrscheinlich das
pcspkr
Laden des Kernelmoduls. Ich habe das nur auf RHEL getestet, also YMMV.AKTUALISIEREN
Wie Warren in den Kommentaren betonte, funktioniert dies möglicherweise nicht, wenn Sie sich über SSH remote anmelden. Eine schnelle Problemumgehung wäre, die Ausgabe auf eines der TTY-Geräte umzuleiten (im Idealfall eines, das nicht verwendet wird). Z.B:
quelle
sudo modprobe pcspkr
war es genug, um Signaltöne unter dem VT zu aktivieren, entweder überprintf "\a"
oder über dasbeep
Dienstprogramm.Ubuntu 16.04.1 LTS
HINWEIS: Bei dieser Lösung werden Signaltöne über die Lautsprecher ausgegeben , nicht über das Motherboard .
ALSA wird mit Speaker-Test geliefert , einem Befehlszeilen-Testtongenerator, mit dem ein Piepton erzeugt werden kann:
Siehe diesen Arch Linux Forum Thread .
Die Signaltondauer ist jedoch beliebig, kann jedoch wie folgt gesteuert werden:
Wir können noch einen Schritt weiter gehen und mit dieser Funktion einen Piepton ausgeben:
welches mit Häufigkeits- und Dauerargumenten aufgerufen wird:
In diesem Sinne ist es möglich, mit einfache Musik zu erstellen
speaker-test
. Siehe dieses Shell-Skript .quelle
timeout ${2} speaker-test --frequency ${1} --test sine
speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $!
das Gleiche. Wie auch immer, @ user569825s Methode ist besser.weil terminfo definiert
bel
alsquelle
Zur Verwendung der Soundkarte, falls
sox
installiert, und des PC-Lautsprechers, falls nicht:sox
ist für die meisten Distributionen verfügbar.quelle
then
Block innerhalb von verwendetwatch
, um mich zu benachrichtigen, sobald eine bestimmte Bedingung erfüllt wurde. Ich kann sogar meine Kopfhörer anhalten. Das war sehr nützlich für mich.sudo -u USER play...
play
Verwendet auf meinem System pulseaudio als Benutzer. Ich denke, es hängt von der Systemkonfiguration ab.Einige Distributionen verfügen über Befehlszeilenprogramme, um dies zu erreichen. Vielleicht können Sie uns sagen, in welcher Distribution Sie sich befinden oder suchen (z
emerge -s beep
. B. in gentoo).Über die "verfügbaren" Utils hinaus können Sie auch ein Perl-Skript erstellen, das den Piepton ausgibt. Dazu müssen Sie lediglich Folgendes tun:
Wenn Sie dennoch einen Signalton hören, probieren Sie Folgendes aus:
quelle
echo -e "\007"
in Bash stattprint "\007
in Perl funktionieren ?printf '\007'
alsecho
."Der Piepton funktioniert nur, wenn Ihr PC über einen" Lautsprecher "verfügt. Viele moderne Laptops / kleine Geräte haben keinen." - Tredegar .
Versuchen Sie stattdessen einen Sound abzuspielen:
Arbeitete für mich, als alles andere fehlschlug.
Verweise
quelle
Versuchen
Der Nachteil ist, dass dies nur funktioniert, wenn es sich bei dem Ausgabegerät um ein Terminal handelt, sodass es beispielsweise in einem Cron-Job möglicherweise nicht funktioniert. (Wenn Sie jedoch Root sind, können Sie möglicherweise auf umleiten,
/dev/console
um sofort einen Piepton zu erhalten.)quelle
Unter Linux können Tools wie
beep
ioctl auf dem Konsolengerät verwenden, um einen bestimmten Sound auszugeben. Um genauer zu sein,beep
wird dasKIOCSOUND
ioctl verwendet, aber es gibt auch einKDMKTONE
ioctl, mit dem Ton erzeugt werden kann.Soweit ich weiß, startet der erste Ton einen Ton, der so lange anhält, bis er explizit gelöscht wird, während der zweite einen Piepton von vorbestimmter Dauer erzeugt. Siehe die
console_ioctl
(4) man - Seite für weitere Einzelheiten.Wenn Sie also mit den
beep
Vorgängen unzufrieden sind , können Sie einige Codezeilen schreiben, um direkt auf diese Ioctls zuzugreifen. Vorausgesetzt, Sie haben vollen Zugriff auf/dev/console
, wofür möglicherweise Root-Rechte erforderlich sind.quelle
Drücken Sie in einem Terminal Ctrl+ Gund dannEnter
quelle