2009-07-17 6 views
34

J'ai des scripts longs avec des interruptions nécessitant une entrée/interaction pour continuer mais quand je passe à une autre fenêtre, j'aimerais être averti (par le son) qu'une tâche est terminée et attend maintenant la saisie. Je préférerais être en mesure de lire un clip audio (* .mp3, * .ogg, etc.) mais je ne ferais pas attention si la seule solution est de faire du bruit de bips du haut-parleur PC.Dans un script/une commande bash, comment puis-je faire un bip de PC ou lire un fichier son?

Des idées? Je suis ouvert à tous les utilitaires CLI que je peux installer pour jouer des sons que je peux exécuter à mon tour si nécessaire.

FYI: Mon système exécute WinXP Pro.

MISE À JOUR: Doh! Mon Windows> Panneau de configuration> Sons> Bip par défaut: a été défini sur (aucun). Grrr ...

Problème résolu.

Répondre

31

Essayez ceci:

echo^G

(^ G est obtenu par ctrl + G).

Remarque: vous ne pouvez pas copier et coller ce code dans un fichier batch, cela ne fonctionnera pas. Pour obtenir un caractère^G dans un fichier, tapez dans une fenêtre cmd:

echo^G> beep.txt

(encore une fois,^G est obtenu par ctrl + G).

Ensuite, vous aurez un fichier nommé beep.txt, ouvrez-le avec le bloc-notes, il y aura un caractère carré. C'est notre^G une fois qu'il est enregistré dans un fichier.

Vous pouvez ensuite le copier et le coller dans un fichier batch pour faire un son (n'oubliez pas de mettre "echo" devant lui).

+0

Nous parlons d'un fichier .bat ou .cmd, non? Vous avez dit que vous utilisez Windows XP, mais vous parlez d'un script "bash", qui est un interpréteur de commandes Linux. – FWH

+0

Il pourrait être tout ce que je suppose ... un * .sh, un alias, * .bat ou * .cmd. Je dois préciser que je suis en train de lancer un alias ... qui fait écho à un tas d'appels pour exécuter des scripts * .sh. Donc, je pourrais mettre le "son" peu n'importe où là-dedans. – scunliffe

+23

Dans la plupart des shells (mais pas de commande/cmd), vous avez besoin de Ctrl-V Ctrl-G pour taper^G. – ephemient

76

Cela fera un bip à l'intérieur bash

echo -en "\007" 
+11

Alternatives plus simples: 'echo -ne '\ a'' et' printf' \ a''. Notez également que dans certaines distributions Linux (par exemple, Ubuntu), le son de la sonnerie peut être supprimé - voir http://askubuntu.com/questions/19906/beep-in-shell-script-not-working – mklement0

+2

Dans Cygwin, vous devez Activer le bip sonore dans les opérations de terminal. – pbies

+0

Dans mon serveur clearOS j'utilise echo -en "\ a">/dev/console dans un script bash – Arun

5

copy con beep.bat [Entrée]

@echo off [Entrée]

écho [Ctrl + G] [ Entrée]

[Ctrl + Z] [Entrée]

beep.bat [Entrée]

+0

FYI: Notepad.exe n'a pas aimé le ctrl-g, donc quand j'ai modifié ce fichier avec le bloc-notes et enregistré, il ne plus bip. Très probablement un problème ASCII vs Unicode. J'ai ensuite utilisé Notepad ++ pour éditer le fichier créé en tapant les commandes ci-dessus, et cela a bien fonctionné. –

5

En définissant cette variable comme suit

PROMPT_COMMAND="echo -en '\a'"

bash émet un bip à chaque fois qu'il affiche l'invite.Lorsque vous n'avez plus besoin,

unset PROMPT_COMMAND

2

spd-say

pré-installé sur Ubuntu 14.04:

sleep 2; spd-say 'get back to work' 

Boucle infinie avec -w si vous avez besoin de motivation supplémentaire:

sleep 2; while true; do spd-say -w 'get back to work'; done 

Appartient à l'emballage speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest pour les personnes aveugles je suppose?

même sur Ubuntu Demandez: https://askubuntu.com/questions/277215/make-a-sound-once-process-is-complete

+0

Je suppose que vous faites référence ici à la plate-forme Ubuntu, que les liens et le numéro de version semblent corroborer. Le PO ne mentionnait à l'origine aucune plate-forme spécifique, mais maintenant la question dit Windows XP (sic). Ces choses diffèrent entre les systèmes; sur macOS, le synthétiseur vocal en ligne de commande 'say' est installé par défaut; Sur de nombreux autres systèmes, vous devrez probablement trouver un paquet avec un nom différent. J'entends 'espeak' est très populaire sur Linux. – tripleee

2

Pour le son du système de ligne de commande Windows, vous pouvez exécuter:

rundll32 user32.dll,MessageBeep 

Il devrait fonctionner sur toutes les versions de Windows.

+0

également cette 'rundll32.exe cmdext.dll, MessageBeepStub' – npocmaka

Questions connexes