Аналог функции beep в linux
Я хотел бы использовать звуковой сигнал в сценарии оболочки. К сожалению, ни один из методов, которые я нашел через Google, не работает для меня.
и команда beep после того как я установил его через apt.
Что может быть причиной?
Первый забег sudo modprobe pcspkr а потом beep должно сработать.
Причина этого не в том, что по умолчанию Ubuntu больше не загружает драйвер оборудования, который выдает звуковые сигналы.
Если это работает для вас, чтобы разрешить загрузку pcspkr, отредактируйте /etc/modprobe.d/blacklist.conf файл (используя gksudo gedit возможно) и закомментируйте строку с надписью blacklist pcspkr так это выглядит так:
Не будучи поклонником звукового сигнала pcspkr, я использую звуковой сигнал одного из системных звуков с помощью команды paplay установленного сервера pulseaudio.
Сначала найдите понравившийся вам звук (например, вы можете просмотреть / usr / share / sounds для некоторых доступных) и создать ссылку на него.
Тогда имейте это доступным как команда
Теперь просто беги beep всякий раз, когда вам это нужно. Например, чтобы предупредить вас о завершении команды:
Так как это вопрос с очень высоким рейтингом в Google, я добавлю шаги, которые я сделал, чтобы снова включить звуковой сигнал в консоли и X11:
Для консоли Linux ( CTRL + ALT + F1 . F6 ):
Почему это не работает по умолчанию
Как уже ответили, pcspkr Драйвер ядра для ПК Speaker занесен в черный список в Ubuntu.
Временно включить до перезагрузки:
Автоматически включить при загрузке:
Для терминалов X11 (например, по умолчанию gnome-terminal )
Почему это не работает по умолчанию
В X, как и при использовании Unity, KDE, Gnome Shell, звуковые события регистрируются PulseAudio благодаря module-x11-bell , который загружается по умолчанию в /usr/bin/start-pulseaudio-x11 , И образец звука PulseAudio играет на звуковой сигнал, bell.ogg , пусто по умолчанию. Кроме того, громкость звонка может быть отключена.
Чтобы временно включить текущий сеанс,
Есть другие подходящие образцы, которые вы можете попробовать /usr/share/sounds Например, проверьте те на /usr/share/sounds/gnome/default/alerts/
Обратите внимание, что beep Программа на самом деле не нужна. Но если он установлен, он использует динамик ПК. Это был единственный способ включить зуммер под X:
Чтобы автоматически включить при загрузке, просто добавьте вышеупомянутые строки в
/.profile или общесистемный в /etc/profile
Чтобы проверить это:
Чтобы решить эту проблему постоянно:
- Бежать 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 в файл
Самый простой способ активировать это решение - перезагрузить компьютер.
Кроме того, чтобы немедленно реализовать это решение для окна терминала, которое уже открыто, запустите pactl командовать и запустить xset команда в окне терминала в вопросе.
Я сталкивался с этой проблемой раньше. Из того, что я помню, проблема в том, что терминал звонка пытается позвонить во внутренний компьютерный динамик (как в настольном компьютере старой школы), но ноутбуки и некоторые более новые компьютеры пропускают такую вещь.
Единственное решение, которое я нашел в то время, было sudo apt-get install sox а также
" Звуковой сигнал работает только в том случае, если на вашем ПК есть" динамик ". У многих современных ноутбуков / небольших устройств его нет".
Попробуйте сыграть такой звук: play xxxxx.wav Я нашел хороший WAV- файл, который кажется коротким и приятным, но вы также можете выбрать и свой собственный. Работает для меня, когда все остальное не удалось.
Если к компьютеру подключены фактические динамики, и вы не получаете звуковой сигнал, скорее всего, вы используете compiz. Compiz полагается на pulseaudio, который ловит звуковые сигналы и воспроизводит их, в то время как metacity обходит обычные настройки и использует libcanberra для воспроизведения звукового сигнала. Если это работает с metacity, а не compiz, то это ваша проблема, в противном случае htorque дал ответ.
Я наконец нашел решение, которое не требует alsamixer иметь опцию звукового сигнала ПК. Я думаю, что я помню все мои изменения:
раскомментируйте следующее в /etc/pulse/default.pa :
за эту ошибку, запустить pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg
Я добавил эту небольшую функцию в свой.bashrc в качестве замены звукового сигнала:
Он ищет файл в /usr/share/ звуки, начиная с предоставленного аргумента или "колокольчика", и воспроизводит его. beep --list возвращает список файлов в /usr/share/ Sounds.
Альтернативный подход - установите xterm / console на "Visual Bell", чтобы при звуковом сигнале окно просто ненадолго инвертировало свои цвета.
У меня есть функция bash под названием beep, чтобы привлечь мое внимание после завершения команды.
И это используется таким образом
Возможно, уже слишком поздно, НО для парня в будущем, ищущего это:
Сегодня, июнь 2020 года, в Ubuntu 18.04 вся sudo modprobe pcspkr и комментируя из blacklist pcspkr часть /etc/modprobe.d/blacklist.conf file, как описано здесь, не кажется необходимым.
Мой все еще находится в черном списке, но звук моего звонка работает нормально!
Вместо этого просто убедитесь, что звук звонка на терминале включен на вашем gnome-terminal настройки:
Щелкните правой кнопкой мыши на экране в gnome-terminal -> Настройки -> установите флажок "Терминальный звонок" в разделе "Звук", как показано ниже:
Теперь запустите это и услышите глухой звук характерного звука колокольчика:
Это также работает с удаленными сеансами ssh, что очень удобно, например, при сборке на удаленной машине, так что он будет воспроизводить звук звонка, когда сборка будет завершена, чтобы предупредить вас:
Обратите внимание, что также нажатие, Backspace когда нечего удалять, также будет воспроизводить этот звук в gnome-terminal .
Команда beep позволяет использовать утилиту с соответствующим именем для вывода звуковых сигналов посредством встроенного динамика компьютера с возможностью управления темпом, длительностью и количеством тонов. Важно понимать, что вывод звука осуществляется с помощью встроенного динамика, а не звуковой карты, поэтому данная команда может использоваться даже при работе с серверами.
Базовый синтаксис команды выглядит следующим образом:
Значения частоты не ограничиваются целыми числами, что позволяет генерировать звуки, соответствующие нотам.
Нота | Частота |
До | 261.6 |
До диез | 277.2 |
Ре | 293.7 |
Ре диез | 311.1 |
Ми | 329.6 |
Фа | 349.2 |
Фа диез | 370.0 |
Соль | 392.0 |
Соль диез | 415.3 |
Ля | 440.0 |
Ля диез | 466.2 |
Си | 493.9 |
До | 523.2 |
Установка утилиты
В первую очередь вам придется установить рассматриваемую утилиту; проще всего это сделать с помощью терминала путем исполнения соответствующей вашему дистрибутиву команды. Подробнее об установке программного обеспечения рассказано в данном разделе.
Команда для Linux Mint и Ubuntu:
Команда для Fedora Workstation:
Примеры использования
Генерация звукового сигнала со стандартными параметрами
Генерация звукового сигнала с заданными параметрами
В данном случае осуществляется генерация трех коротких звуковых сигналов с частотой 400 Гц, короткой задержкой в 25 мс и длительностью в 100 мс.
Параметр -s используется для вывода звука, а именно, 4 коротких сигналов, при поступлении данных на вход утилиты.
Генерация двух длинных и нескольких коротких звуковых сигналов
Параметр -n позволяет завершить список параметров последовательности сигналов и может использоваться неоднократно.
Опции (ключи)
Этот способ был достоин первой части статьи, но не попал туда из-за забывчивости автора. Несомненно, этот способ знаком всем пользователям *nix, хоть раз работавших с консолью. Простой наглядный пример:
Плюс в том, что ключи короткие и их можно комбинировать. Попытаемся сделать что-нибудь подобное, а за одно изучим еще несколько моментов.
- Команда set -e остановит скрипт, если при его выполнении возникнет ошибка (подробнее о других опциях здесь).
- Основные операции скрипта упакованы в функции. Конечно, глупо помещать в функции по одной команде, но это лишь для примера, в реальности их может быть ну очень много.
- Функция getopts разбирает переданные аргументы. За ней перечисляются допустимые опции. Двоеточие после опции 'w' означает, что c данной опцией идет дополнительный аргумент, который помещается в переменную $OPTARG.
- Опции можно комбинировать, но стоит учитывать то, что они выполняются по порядку. Это значит, что если мы выполним script -rc то сначала файл будет удален, а затем создан. При этом, если файла не существовало, то скрипт завершится с ошибкой, не дойдя до создания файла.
- Также стоит учитывать то, что после ключа 'w' обязательно должен следовать аргумент. Если он будет отсутствовать, то скрипт выполнит опцию '*' (по умолчанию). Интересно, что если запустить script -wr Hallo, то опция 'r' будет воспринята как дополнительный параметр к опции 'w', а 'Hallo' проигнорировано. Правильно будет script -w Hallo -r
Выбор
В предыдущей статье я рассматривал выбор варианта выполнения с помощью case. А сейчас рассмотрим создание меню с помощью конструкции select, которая позволяет создать простые нумерованные меню.
Подробнее описано здесь.
Логирование
Но есть и специальный инструмент ведения логов — logger.
Оповещения на рабочем столе
Немножко развлечемся и поиграемся с нотиферами. Для начала поставим нужный пакет:
Что такое пищалка? Это штука, которая по умолчанию при включении ПК подает звуковой сигнал о том, что всё идёт хорошо или же загрузка ОС невозможна и по сигналу пищалки можно определить причину неисправности. Ну, в общем, все знают что это такое, раз уж смогли выйти в интернет и почитать тут мою писанину.
Для людей, на чьих компьютерах установлен Linux (Ubuntu в частности), доступна в их распоряжение вся аппаратура их "железного друга", даже этот самый "бипер". Так вот, если у вас установлена Ubuntu, предлагаю вам поиграться с пищалкой следующим образом:
Устанавливаем небольшую утилитку beep:
sudo apt install beep (для староверов sudo apt-get install beep) |
Подгружаем необходимый для работы утилитки модуль pcspkr, его в большинстве случаев по умолчанию нет (если будет угодно, это драйвер вашей пищалки):
Пикнуло? Замечательно. Теперь копируем в свой терминал вот такую команду и угадываем мелодию =).
beep -f 196 -l 400 -n -f 262 -l 800 -n -f 196 -l 600 -n -f 220 -l 200 -n -f 247 -l 800 -n -f 165 -l 400 -n -f 165 -l 400 -n -f 220 -l 800 -n -f 196 -l 600 -n -f 175 -l 200 -n -f 196 -l 800 -n -f 131 -l 400 -n -f 131 -l 400 -n -f 147 -l 800 -n -f 147 -l 400 -n -f 165 -l 400 -n -f 175 -l 800 -n -f 175 -l 400 -n -f 196 -l 400 -n -f 220 -l 800 -n -f 247 -l 400 -n -f 262 -l 400 -n -f 294 -l 1200 -n -f 196 -l 400 -n -f 330 -l 800 -n -f 294 -l 600 -n -f 262 -l 200 -n -f 294 -l 800 -n -f 247 -l 400 -n -f 196 -l 400 -n -f 262 -l 800 -n -f 247 -l 600 -n -f 220 -l 200 -n -f 247 -l 800 -n -f 165 -l 400 -n -f 165 -l 400 -n -f 220 -l 800 -n -f 196 -l 400 -n -f 175 -l 400 -n -f 196 -l 800 -n -f 131 -l 400 -n -f 131 -l 400 -n -f 262 -l 800 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 1600 -n -f 330 -l 1600 -n -f 294 -l 400 -n -f 262 -l 400 -n -f 247 -l 400 -n -f 262 -l 400 -n -f 294 -l 1200 -n -f 196 -l 400 -n -f 196 -l 1600 -n -f 262 -l 1600 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 400 -n -f 220 -l 400 -n -f 247 -l 1200 -n -f 165 -l 400 -n -f 165 -l 1600 -n -f 262 -l 800 -n -f 220 -l 600 -n -f 247 -l 200 -n -f 262 -l 800 -n -f 220 -l 600 -n -f 247 -l 200 -n -f 262 -l 800 -n -f 220 -l 400 -n -f 262 -l 400 -n -f 350 -l 1600 -n -f 350 -l 1600 -n -f 330 -l 400 -n -f 294 -l 400 -n -f 262 -l 400 -n -f 294 -l 400 -n -f 330 -l 1200 -n -f 262 -l 400 -n -f 262 -l 1600 -n -f 294 -l 1600 -n -f 262 -l 400 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 247 -l 400 -n -f 262 -l 1200 -n -f 220 -l 400 -n -f 220 -l 1600 -n -f 262 -l 800 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 800 -n -f 131 -l 600 -n -f 131 -l 200 -n -f 196 -l 1600 -n -f 220 -l 800 -n -f 246 -l 800 -n -f 262 -l 3200 |
Чтобы отменить все изменения, которые мы только что внесли, выгружаем модуль pcspkr:
Читайте также: