Звуковой сигнал в сценарии оболочки не работает?

Я бы хотел использовать звуковой сигнал в сценарии оболочки. К сожалению, ни один из методов, которые я нашел через Google, не работает для меня.

Я пытался

echo -e '\a'echo -ne '\007'

и команда beep после того, как я установил его через apt.

В чем может быть причина?

Не будучи поклонником звукового сигнала pcspkr, я использую звуковой сигнал от одного из системных звуков с установленной командой papplay сервера pulseaudio.

Сначала найдите звук, который вам нравится (например, вы можете просмотреть / usr / share /sounds для некоторых доступных звуков), и создайте ссылку на него

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg

Затем сделайте его доступным в качестве команды

alias beep='paplay $BEEP'

А теперь просто беги beep всякий раз, когда вам это нужно. Например, чтобы предупредить вас о завершении выполнения команды:

find . | grep treasure ; beep

Первый запуск sudo modprobe pcspkr и затем beep должно сработать.

Причина, по которой этого не происходит, заключается в том, что по умолчанию Ubuntu больше не загружает драйвер оборудования, который выдает звуковые сигналы.

Если это работает для вас, то, чтобы включить загрузку pcspkr навсегда, отредактируйте /etc/modprobe.d/blacklist.conf файл (используя gksudo gedit возможно) и прокомментируйте строку, в которой говорится blacklist pcspkr итак, это выглядит следующим образом:

# отвратительный и громкий шум, действующий всем на нервы; это должно быть сделано с помощью # nice pulseaudio bing (Ubuntu: #77010)# blacklist pcspkr

Поскольку это вопрос с очень высоким рейтингом в Google, я добавлю шаги, которые я сделал, чтобы повторно включить звуковой сигнал как в консоли, так и в X11:


Для консоли Linux (CTRL+ALT+F1...F6):

Почему он не работает по умолчанию

Как уже ответил, в pcspkr драйвер ядра для PC Speaker занесен в черный список Ubuntu.

Временно включить до перезагрузки:

sudo modprobe pcspkr

Автоматическое включение при загрузке:

sudo nano /etc/modprobe.d/blacklist.conf

(удалить или прокомментировать pcspkr строку, добавив к ней #)


Для терминалов X11 (например, по умолчанию gnome-terminal)

Почему он не работает по умолчанию

В X, как и при использовании Unity, KDE, Gnome Shell, события звукового сигнала фиксируются PulseAudio благодаря module-x11-bell, который загружается по умолчанию в /usr/bin/start-pulseaudio-x11. И звуковой образец PulseAudio воспроизводится при звуковом сигнале, bell.ogg, по умолчанию является пустым. Кроме того, громкость звонка может быть приглушена.

Чтобы временно включить для текущего сеанса,

xset b 100  # perhaps not needed, on my system it was 40 by defaultpactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

Есть и другие подходящие образцы, которые вы можете попробовать на /usr/share/sounds, например , проверьте те, которые находятся на /usr/share/sounds/gnome/default/alerts/

Обратите внимание, что beep программа на самом деле не нужна. Но если он установлен, он использует динамик ПК. Это был единственный способ, который я смог найти, чтобы включить зуммер под X:

sudo apt-get install beep

Чтобы автоматически включить при загрузке, просто добавьте приведенные выше строки в свой ~/.profile, или общесистемный на /etc/profile


Чтобы проверить это:

printf '\a'

Сигнал!

beep

Базз!

Я уже сталкивался с этой проблемой раньше. Из того, что я помню, проблема заключается в том, что звонок терминала пытается вызвать внутренний динамик компьютера (как на настольных компьютерах старой школы), но в ноутбуках и некоторых новых компьютерах такая вещь отсутствует.

Единственное решение, которое я нашел в то время, состояло в том, чтобы

sudo apt-get install sox

и

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

напр.

 play -n synth 0.1 sine 880 vol 0.5

Чтобы постоянно устранять эту проблему:

  • Бежать gconf-editor и если в desktop | gnome | peripherals | keyboard | bell_mode настройка присутствует, затем измените ее с off к on
  • Бежать dconf-editor и если в org | gnome | settings-daemon | peripherals | keyboard | bell-mode настройка присутствует, затем измените ее с off к on
  • Добавь pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.ogg к файлу ~/.xprofile (вам нужно gnome-control-center-data для glass.ogg)
  • Добавь [ "$DISPLAY" ] && xset b 100 к файлу ~/.bashrc

Самый простой способ активировать это решение - перезагрузиться.

Кроме того, чтобы немедленно реализовать это решение для уже открытого окна терминала, запустите pactl команду и запустите xset команда в соответствующем окне терминала.

"Звуковой сигнал может работать только в том случае, если на вашем компьютере установлен традиционный "динамик" старого образца, и, вероятно, у большинства, если не у всех ноутбуков и небольших устройств его нет.

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

Таким образом, устаревшие рекомендации по установке beep команда и/или модуль ядра pcspkr никогда не будет работать бесшумно, если у вас нет оборудования для колонок старого образца.

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

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

Обратите внимание, что при этом используется paplay (Pульсе Aдоля Играть) команда, которая лучше сочетается с другими звуками пользовательского уровня (пользовательское приложение) в вашей системе, а не с более старыми aplay (ALSA Играть) команда, которая обычно может воспроизводить только один звук одновременно. Но обратите внимание, однако, что PulseAudio вызывает ALSA для фактического воспроизведения звука.

Мое предыдущее предложение использовать play возможно, это все еще сработает, но "раннинг Сокс", от которого идет игра, - это перебор.


Работает на меня, когда все остальное терпит неудачу. Благодаря: тредегар &amp; hk_centos и другие.

Я, наконец, нашел решение, которое не требует alsamixer чтобы иметь опцию звукового сигнала ПК. Мне кажется, я помню все свои перемены:

раскомментируйте следующее в /etc/pulse/default.pa:

load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.oggload-module module-x11-bell sample=bell-windowing-system

по эта ошибка, беги pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

Насколько я могу судить, это ошибка: Системный звуковой сигнал сломан в кармическом, несмотря на героические усилия по его исправлению.

Если у вас есть настоящие динамики, подключенные к компьютеру, и вы не получаете звуковой сигнал, это, скорее всего, потому, что вы используете compiz. Compiz полагается на то, что pulseaudio улавливает звуковые сигналы и воспроизводит их, в то время как metacity обходит обычную настройку и использует libcanberra для воспроизведения звукового сигнала. Если он работает с metacity, а не с compiz, это ваша проблема, в противном случае ответ, который дал htorque, является правильным.

Альтернативный подход - установите в вашем xterm / console значение "Визуальный звонок", чтобы при звуковом сигнале окно просто на короткое время меняло свои цвета.

У меня есть функция bash, называемая beep, чтобы привлечь мое внимание после завершения команды.

beep ()  { while true; do  echo -en '\a'; sleep 1; done }

И он используется таким образом

longrun-command ; beep

Смотрите это сообщение об ошибке: https://bugs .launchpad.net/ubuntu /+исходный код/unity/+ошибка/769314

linux - Remotely make the computer beep on built-in speaker - Super User || command line - How do I make my pc speaker beep - Unix & Linux Stack Exchange || linux - How to emit a "beep" on my computer while running a script on a remote machine? - Stack Overflow

Для приятного звука PulseAudio Bell в Xubuntu

Смотрите: https://askubuntu.com/questions/1310345/how-to-fix-gnome-terminal-bell-in-xubuntu-20-04

Если ваш терминал - “терминатор”, смотрите мои вопросы и ответы здесь для получения ответа: command line - `terminator` terminal won't play bell sound - Ask Ubuntu .