À l'aide de bash, comment puis-je faire en sorte que le haut-parleur de l'ordinateur émette un bip?
Quelque chose comme ce echo 'beepsound' > /dev/pcspkr
serait bien.
command-line
Stefan
la source
la source
Réponses:
J'utilise généralement le petit utilitaire
beep
installé sur de nombreux systèmes. Cette commande va essayer différentes approches pour créer un son système.Il y a 3 façons de créer un son à partir de la
beep
page de manuel:La méthode traditionnelle pour produire un bip dans un script shell consiste à écrire un caractère
ASCII BEL
(\007
) sur la sortie standard, au moyen d’une commande shell telle queCela ne fonctionne que si la sortie standard du shell appelant est actuellement dirigée vers un terminal quelconque. sinon, le bip ne produira aucun son et pourrait même causer une corruption indésirable dans le fichier vers lequel la sortie est dirigée.
Il existe d'autres moyens de provoquer un bip sonore. Une méthode légèrement plus fiable consiste à ouvrir
/dev/tty
et à envoyer votre personnage BEL là-bas. Ceci est robuste contre la redirection d'E / S, mais échoue quand même dans le cas où le script shell souhaitant générer un bip n'a pas de terminal de contrôle, par exemple parce qu'il est exécuté à partir d'un gestionnaire de fenêtres X.Une troisième approche consiste à vous connecter à votre écran X et à lui envoyer une commande de sonnerie. Cela ne dépend pas d'un terminal Unix, mais nécessite (bien sûr) un affichage X.
beep
va simplement essayer ces 3 méthodes.la source
beep
commande est la suivante: johnath.com/beep Sous Ubuntu / Debian, vous pouvez l'installer avecapt-get install beep
.pcspkr
module, chargez-lesnd-pcsp
, et vous avez maintenant une carte son alsa qui utilise des astuces classiques pour envoyer le son numérique à votre haut-parleur interne. Les haut-parleurs internes piézoélectriques donnent des résultats médiocres, mais la qualité est tout à fait satisfaisante pour les haut-parleurs internes classiques. De cette façon, vous pouvez être beaucoup plus créatif pour vos bips sonores;)pcspkr
etsnd-pcsp
sont des modules, pas des packages. utilisezmodprobe
/modprobe -r
/lsmod
pour les manipuler. Pour votre information, ils sont dans lelinux-image-something
paquetage, qui est déjà installé, espérons-le (sinon vous n'auriez pas de noyau Linux).modprobe snd-pcsp
!Tout simplement en écho
\a
ou\07
fonctionne pour moi.Cela nécessitera probablement le
pcspkr
chargement du module de noyau. Je n'ai testé cela que sur RHEL, donc YMMV.MISE À JOUR
Comme Warren l'a souligné dans les commentaires, cela peut ne pas fonctionner s'il est connecté à distance via SSH. Une solution rapide consisterait à rediriger la sortie vers l’un des périphériques TTY (idéalement inutilisé). Par exemple:
la source
sudo modprobe pcspkr
c'était suffisant pour activer les bips sonores sous le VT, viaprintf "\a"
oubeep
utilitaire.Ubuntu 16.04.1 LTS
REMARQUE: cette solution émet des bips provenant des haut - parleurs et non de la carte mère .
ALSA est livré avec le test de haut-parleur , un générateur de tonalité de test de haut-parleur en ligne de commande, qui peut être utilisé pour générer un bip:
Voir ce fil arch forum linux .
Cependant, la durée du bip sera arbitraire, mais peut être contrôlée comme suit:
Nous pouvons aller plus loin et émettre un bip avec cette fonction:
qui s'appelle avec des arguments fréquence et durée:
Dans cet esprit, il est possible de créer une musique simple avec
speaker-test
. Voir ce script shell .la source
timeout ${2} speaker-test --frequency ${1} --test sine
speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $!
la même chose. Quoi qu'il en soit, la méthode de @ user569825 est plus agréable.parce que terminfo définit
bel
commela source
Pour utiliser la carte son si
sox
est installé et le haut-parleur du PC sinon:sox
est disponible pour la plupart des distributions.la source
then
bloc à l'intérieurwatch
pour m'avertir lorsqu'une certaine condition était remplie. Me permet même de garder mes écouteurs. C'était très utile pour moi.sudo -u USER play...
play
utilise pulseaudio, en tant qu'utilisateur. Je suppose que cela dépend de la configuration du système.Certaines distributions ont des utilitaires de ligne de commande pour y parvenir. Vous pourriez peut-être nous dire sur quelle distro vous êtes, ou chercher (par exemple
emerge -s beep
dans gentoo).Au-delà des utilitaires "disponibles", vous pouvez également créer un script Perl qui émet le bip, il vous suffit simplement d'inclure:
Si vous finissez par avoir un bip, essayez ce qui suit:
la source
echo -e "\007"
travaillerais- je en bash au lieu deprint "\007
Perl?printf '\007'
au lieu deecho
."Le bip ne fonctionne que si votre PC est équipé d'un" haut-parleur ". De nombreux ordinateurs portables / petits appareils modernes n'en ont pas." - Tredegar .
Essayez de jouer un son à la place:
Travaillé pour moi, quand tout le reste a échoué.
Références
la source
Essayer
L'inconvénient est que cela ne fonctionnera que lorsque le périphérique de sortie est un terminal. Par conséquent, il est possible que cela ne fonctionne pas dans une tâche cron, par exemple. (Mais si vous êtes root, vous pourrez peut-être effectuer une redirection vers
/dev/console
un bip immédiat.)la source
Sous Linux, des outils tels que, par exemple,
beep
peuvent utiliser un ioctl sur le périphérique de la console pour émettre un son donné. Pour être plus précis,beep
utilisera l'KIOCSOUND
ioctl, mais il y a aussi unKDMKTONE
ioctl qui peut être utilisé pour générer du son.Si je comprends bien, le premier émet un son qui dure jusqu’à ce qu’il soit explicitement annulé, tandis que le second crée un bip d’une durée prédéterminée. Voir la
console_ioctl
page de manuel (4) pour plus de détails.Donc, si vous n'êtes pas satisfait de ce qui se
beep
passe, vous pouvez écrire quelques lignes de code pour accéder directement à ces ioctls. En supposant que vous ayez un accès complet à/dev/console
, ce qui pourrait nécessiter des privilèges root.la source
Dans un terminal, appuyez sur Ctrl+ Gpuis surEnter
la source