Как заставить динамик компьютера издавать звуковой сигнал

Чтобы найти каталоги, доступные для записи во всем мире, вы можете использовать

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Для файлов измените тип на f

Для типа символических ссылок на l

Чтобы установить липкий бит:

find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print0| xargs -0 chmod +t
213
29.05.2014, 20:55
11 ответов

Я обычно использую маленькую утилиту beep, установленную на многих системах. Эта команда попробует различные подходы для создания системного звука.

Есть 3 способа создания звука из beep manpage:

  1. Традиционный метод создания звукового сигнала в сценарии оболочки заключается в записи ASCII BEL (\007) символа на стандартный вывод, с помощью команды оболочки, такой как

    echo -ne '\007'
    

    Это работает только в том случае, если стандартный вывод вызывающей оболочки в данный момент направлен на какое-либо терминальное устройство; если это не так, звуковой сигнал не будет звучать и даже может вызвать нежелательные повреждения в файле, на который направлен вывод.

  2. Существуют и другие способы вызвать звуковой сигнал. Несколько более надежный метод - открыть /dev/tty и послать туда символ BEL. Этот способ устойчив к перенаправлению ввода-вывода, но все же не срабатывает в случае, когда сценарий оболочки, желающий вызвать звуковой сигнал, не имеет управляющего терминала, например, потому что он запускается из оконного менеджера X.

  3. Третий подход заключается в том, чтобы подключиться к X-дисплею и послать ему команду звонка. Это не зависит от терминального устройства Unix, но (конечно) требует наличия X-дисплея.

beep просто попробует эти 3 метода.

145
29.04.2021, 01:01

Простое эхо \a или \07 работает для меня.

$ echo -e "\a"

Для этого, вероятно, потребуется загрузить модуль ядра pcspkr. Я тестировал это только на RHEL, так что YMMV.

UPDATE

Как отметил Уоррен в комментариях, это может не работать при удаленном входе через SSH. Быстрым обходным решением будет перенаправление вывода на любое из TTY-устройств (в идеале неиспользуемое). Например:

$ echo -en "\a" > /dev/tty5
84
29.04.2021, 01:01

ПРИМЕЧАНИЕ. Это решение издает звуковые сигналы из динамиков , а не из материнской платы .

ALSA поставляется с динамиком-тестом , генератором тестового сигнала динамика из командной строки, который можно использовать для генерации звукового сигнала:

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

См. эту ветку форума Arch Linux .

Однако продолжительность звукового сигнала будет произвольной, но ее можно контролировать следующим образом:

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

Мы можем сделать еще один шаг и выдать звуковой сигнал с помощью этой функции:

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

, которая вызывается с аргументами частоты и продолжительности:

$ _alarm 400 200

Имея это в виду, можно создавать простую музыку с помощью Speaker-test . См. этот сценарий оболочки .

103
29.04.2021, 01:01
tput bel

потому что terminfo определяет bel как

           Variable                       Cap-               TCap                  Description
            String                        name               Code

   bell                                   bel                bl                audible signal
                                                                               (bell) (P)
38
29.04.2021, 01:01

В некоторых дистрибутивах для этого есть утилиты командной строки. Может быть, вы могли бы сообщить нам, в каком дистрибутиве вы находитесь, или выполнить поиск (например, emerge -s beep в gentoo).

Выходя за рамки «доступных» утилит, вы также можете создать сценарий Perl, который издает звуковой сигнал, все, что вам нужно сделать, это включить:

<SomeCodeBefore>
print "\007";
<SomeCodeAfter>  

Если вы все-таки получите «звуковой сигнал», попробуйте следующее:

#! /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
13
29.04.2021, 01:01

Попробуйте

echo -n Ctrl+V Ctrl+G

Обратной стороной является то, что это будет работать только тогда, когда устройство вывода является терминалом, поэтому оно может не работать, например, внутри задания cron. (Но если вы root, вы можете перенаправить на / dev / console для немедленного звукового сигнала.)

2
29.04.2021, 01:01

В терминале, нажмите Ctrl + G , а затем Введите

1
29.04.2021, 01:01

В Linux такие инструменты, как beep , могут использовать ioctl на консольном устройстве для выдачи заданного звука. Чтобы быть более конкретным, beep будет использовать ioctl KIOCSOUND ioctl, но есть также ioctl KDMKTONE ioctl, который можно использовать для генерации звука.

Насколько я понимаю, первый запускает звук, который длится до тех пор, пока он не будет явно отменен, а второй будет издавать звуковой сигнал заранее определенной продолжительности. См. справочную страницу console_ioctl (4) для получения дополнительной информации.

Итак, если вас не устраивает то, что делает beep , вы можете написать несколько строк кода для прямого доступа к этим ioctl. Предположим, у вас есть полный доступ к / dev / console , для чего вполне могут потребоваться привилегии root.

2
29.04.2021, 01:01

Для использования звуковой карты, если sox установлен, и динамика ПК, если нет:

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

sox доступен для большинства дистрибутивов.

33
29.04.2021, 01:01

" El pitido solo puede funcionar si su PC tiene un "altavoz" tradicional de estilo antiguo , y probablemente la mayoría, si no todas, las computadoras portátiles y los dispositivos pequeños no tienen uno.

Sin embargo, lo que suelen tener en su lugar es un chip de sonido y uno o más altavoces (s )que se pueden usar para producir cualquier sonido que desee.

Por lo tanto, el consejo obsoleto de instalar el comando beepy/o el módulo del kernel pcspkrnunca funcionará silenciosamente cuando no tenga el hardware de altavoz de estilo antiguo.

EN LUGAR:Intenta reproducir un sonido como este cuando quieras un pitido:

paplay /usr/share/sounds/sound-icons/capital

Tenga en cuenta que esto usa el comandopaplay(P ulse A audio Play)que se mezcla mejor con otros sonidos de nivel de usuario (aplicación de usuario )en su sistema, y no el antiguo comandoaplay(A LSA Play)que generalmente solo puede reproducir un sonido al mismo tiempo. Pero tenga en cuenta, sin embargo, que PulseAudio llama a ALSA para reproducir el sonido.

Mi sugerencia anterior de usar playaún podría funcionar, pero ejecutar SoX de donde proviene el juego es excesivo.


Funciona para mí cuando todo lo demás falla. Gracias a:tredegar & hk _centos y otros.

11
29.04.2021, 01:01

Единственное решение, которое сработало для меня на монетном дворе (благодаря @alexander выше)

alias beep='play -q -n synth 0.1 sin 880 >& /dev/null'
1
29.04.2021, 01:01

Теги

Похожие вопросы