Como faço meu bip do alto-falante do pc

164

Usando o bash, como posso fazer o bip do alto-falante do pc?

Algo como echo 'beepsound' > /dev/pcspkr seria bom.

    
por Stefan 13.09.2010 / 11:16

10 respostas

112

Eu costumo usar o pequeno utilitário beep instalado em muitos sistemas. Este comando tentará diferentes abordagens para criar um som do sistema.

Existem 3 maneiras de criar um som a partir da% man_de% manpage:

  1. O método tradicional de produzir um sinal sonoro em um script shell é escrever um caractere beep ( ASCII BEL ) na saída padrão, por meio de um comando shell como

    echo -ne '
    echo -ne '%pre%7'
    
    7'

    Isso só funciona se a saída padrão do shell de chamada for direcionada atualmente para um dispositivo terminal de algum tipo; caso contrário, o bipe não produzirá som e poderá até causar danos indesejados em qualquer arquivo para o qual a saída é direcionada.

  2. Existem outras maneiras de causar um sinal sonoro. Um método um pouco mais confiável é abrir /dev/tty7 e enviar seu caractere BEL lá. Isso é robusto contra o redirecionamento de E / S, mas ainda falha no caso em que o script de shell que deseja gerar um sinal sonoro não possui um terminal de controle, por exemplo, porque é executado a partir de um gerenciador de janelas X.

  3. Uma terceira abordagem é conectar-se ao seu monitor X e enviar um comando de sino. Isso não depende de um dispositivo terminal Unix, mas exige (obviamente) um display X.

beep simplesmente tentará esses 3 métodos.

    
por 13.09.2010 / 13:10
71

Simplesmente ecoar \a ou funciona para mim.

$ echo -e "\a"

Isso provavelmente exigirá que o módulo do kernel pcspkr seja carregado. Eu só testei isso no RHEL, então YMMV.

UPDATE

Como Warren apontou nos comentários, isso pode não funcionar quando conectado remotamente via SSH. Uma solução rápida seria redirecionar a saída para qualquer um dos dispositivos TTY (de preferência um que não seja utilizado). Por exemplo:

$ echo -en "\a" > /dev/tty5
    
por 13.09.2010 / 12:40
62

NOTA: Esta solução emite sinais sonoros dos alto-falantes , e não da placa-mãe .

O ALSA vem com o teste de alto-falante , um gerador de tom de teste de alto-falante de linha de comando, que pode ser usado para gerar um sinal sonoro:

$ speaker-test -t sine -f 1000 -l 1

Veja este tópico do fórum do Arch Linux .

No entanto, a duração do sinal sonoro será arbitrária, mas pode ser controlada da seguinte forma:

$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid

Podemos dar um passo além e produzir um sinal sonoro com esta função:

_alarm() {
  ( \speaker-test --frequency $1 --test sine )&
  pid=$!
  \sleep 0.${2}s
  \kill -9 $pid
}

que é chamado com argumentos de frequência e duração:

$ _alarm 400 200

Com isso em mente, é possível criar músicas simples com speaker-test . Veja este script de shell .

    
por 23.10.2014 / 06:13
25
tput bel

porque terminfo define bel como

           Variable                       Cap-               TCap                  Description
            String                        name               Code

   bell                                   bel                bl                audible signal
                                                                               (bell) (P)
    
por 17.06.2014 / 23:25
17

Para usar a placa de som se sox estiver instalado e o alto-falante do PC, se não:

$ play -q -n synth 0.1 sin 880 || echo -e "\a"

sox está disponível para a maioria das distros.

    
por 13.01.2017 / 15:55
13

Algumas distros têm utilitários de linha de comando para isso. Talvez você possa nos dizer em qual distro está ou pesquisar (por exemplo, emerge -s beep no gentoo).

Indo além dos utilitários "disponíveis", você também pode criar um script Perl que emite o bipe. Tudo o que você precisa fazer é incluir:

<SomeCodeBefore>
print "
#! /bin/sh 

beep -f 500 -l 700 
beep -f 480 -l 400 
beep -f 470 -l 250 
beep -f 530 -l 300 -D 100 
beep -f 500 -l 300 -D 100 
beep -f 500 -l 300 
beep -f 400 -l 600 
beep -f 300 -l 500 
beep -f 350 -l 700 
beep -f 250 -l 600
7"; <SomeCodeAfter>

Se você acabar recebendo um sinal sonoro, tente o seguinte:

<SomeCodeBefore>
print "
#! /bin/sh 

beep -f 500 -l 700 
beep -f 480 -l 400 
beep -f 470 -l 250 
beep -f 530 -l 300 -D 100 
beep -f 500 -l 300 -D 100 
beep -f 500 -l 300 
beep -f 400 -l 600 
beep -f 300 -l 500 
beep -f 350 -l 700 
beep -f 250 -l 600
7"; <SomeCodeAfter>
    
por 13.09.2010 / 12:02
2

Tente

echo -n Ctrl+V Ctrl+G

A desvantagem é que isso funcionará somente quando o dispositivo de saída é um terminal, portanto, pode não funcionar dentro de uma tarefa cron, por exemplo. (Mas se você for root, poderá redirecionar para /dev/console para bipes imediatos).

    
por 13.09.2010 / 12:34
2

" Beep só funciona se o seu PC tiver um" altifalante ". Muitos portáteis / pequenos dispositivos modernos não têm um." - tredegar .

Tente reproduzir um som:

$ play xxxxx.wav

Trabalhei para mim quando tudo mais falhou.

Referências

por 05.03.2018 / 23:37
1

No Linux, ferramentas como beep podem usar um ioctl no dispositivo de console para emitir um determinado som. Para ser mais específico, beep usará o KIOCSOUND ioctl, mas também há um KDMKTONE ioctl que pode ser usado para gerar som.

Pelo que entendi, o primeiro inicia um som que dura até ser explicitamente cancelado, enquanto o segundo cria um sinal sonoro de duração pré-determinada. Veja a página do manual console_ioctl (4) para detalhes.

Então, se você está insatisfeito com o que o beep faz, você pode escrever algumas linhas de código para acessar esses ioctls diretamente. Supondo que você tenha acesso total a /dev/console , o que pode exigir privilégios de root.

    
por 12.10.2016 / 11:52
-1

Em um terminal, pressione Ctrl + G e depois Digite

    
por 19.01.2013 / 11:18