Как сделать аппаратный звуковой сигнал в Mac OS X 10.6

174

Я просто хочу, чтобы Mac OS X 10.6 издавала аппаратный звуковой сигнал, как в open suse и других дистрибутивах. Я попробовал следующие подходы

Терминал -> beep = -bash: beep: команда не найдена

Терминал -> сказать гудок = голос произносит гудок (не аппаратный гудок, но потрясающий;))

AppleScript -> Beep = Macintosh (я хочу аппаратный сигнал!)

Кто-нибудь знает, как сделать аппаратный звуковой сигнал в bin / bash или applecript?

elhombre
источник
3
@elhombre, что заставляет тебя думать, что Mac OS X может даже делать такие вещи?
Карл Норум
19
Попробуй: скажи «гудок», если ничего не найдешь, как можно ближе.
Патрик Бьёрклунд,
30
@ Патрик - +1, хорошо. printf "\a"дает сигнал ОС, если это помогает.
Карл Норум,
9
@Carsten: Mac - это компьютер. ПК = Персональный компьютер. Это просто не IBM (-совместимый) ПК.
Пол Р
2
MAC на базе Intel - это IBM-совместимый ПК
Натан Гарабедиан,

Ответы:

24

В macOS нет "аппаратного звукового сигнала".

Функциональность, о которой вы думаете, является артефактом очень старого (до 1990-х годов) IBM PC-совместимого оборудования. До того, как у большинства компьютеров были звуковые карты, у большинства машин был небольшой динамик или пьезо-зуммер, подключенный к одному из каналов чипа таймера. Это может быть использовано для генерации простых тонов или звуковых сигналов. Даже после того, как на многих компьютерах были встроены звуковые карты, в течение довольно длительного времени компьютеры оставались обычными для направления этого выхода на отдельный внутренний динамик. В последнее время многие компьютеры, особенно ноутбуки, интегрировали эту функцию в встроенную звуковую карту.

(Если вам интересны технические подробности работы интерфейса динамика ПК, здесь есть более подробная информация .)

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

сумеречный
источник
4
Спустя 7 лет поиски подошли к концу ^^ Спасибо, собака в интернете. Но мне все еще нравятся все творческие способы, которыми люди отвечают на вопрос, так что продолжайте в том же духе!
elhombre
Это интересная мелочь, но она на самом деле не отвечает на вопрос ...
Ян Данн,
3
@IanDunn Конечно, это так - внимательно прочитайте первый и последний абзацы. Вопрос в том, чтобы спросить что-то, чего не существует.
сумерки -неактив-
1
Ах, вы правы, я недостаточно внимательно прочитал вопрос и комментарии ОП и подумал, что им просто нужен сам звук, независимо от того, был ли он программным или аппаратным. Виноват.
Ян Данн
1
Звонок терминала предшествует ПК 90-х годов почти на 100 лет: en.wikipedia.org/wiki/Bell_character
kwerle
271

tput bel работает в большинстве оболочек.

В OS X эта (и любая другая команда, которая заставляет звонок отключиться) также дает вам значок, если команда выполняется, когда Терминал не был на переднем плане:

broofa
источник
35
Потрясающий побочный эффект (по крайней мере, в терминале Lion) от того, что в вашем терминале гаснет звонок, когда он находится в фоновом режиме, заключается в том, что значок на документе прыгает, и вы получаете красный индикатор, говорящий, что что-то было завершено. Попробуйте это: «sleep 5; tput bel», запустите эту команду и затем нажмите на выход из терминала, когда прозвенит звонок, вы получите предупреждение. Как раз то, что я искал!
BadPirate
Пользователи Iterm: он издает звуковой сигнал, но не создает значок оповещения :(
Эрик Ху,
4
@EricHu -iTerm2 теперь поддерживает это - github.com/gnachman/iTerm2/commit/…
broofa
1
tputэто большая команда с большим количеством опций . Эта команда работает и в Linux.
Дрю Ноакс
7
echo -e "\a"также работает на OS X и, вероятно, более переносимо
wap26
139

Печать \aне всегда работает для меня (MBA, 10.7.4). Я использую это вместо:

say "beep"
Андрей
источник
единственный способ работал для меня (OSX 10.8). Ни echo -e "\ a", ни printf "\ a" не сработали.
Валерий Ван
13
Ничего себе - вы можете поместить туда что угодно, например: сказать "сборка завершена"
Пит
1
Лучшее его использование я вижу в Little Snitch - когда я запускаю полноэкранное приложение и не вижу регулярных всплывающих предупреждений LS, это sayя их (только в полноэкранном режиме), то есть какое приложение было заблокировано при попытке подключиться к какому-либо узлу. Действительно мило. Некоторое время назад мне нужно было отслеживать изменения на веб-сайте в течение дня, поэтому вместо того, чтобы сидеть перед своим экраном, я sayдавал мне знать, что происходит (очевидно, только значимый текст - это были объявления о продаже).
Андрей
@RandyHoward Это действительно забавно, спасибо! Вот список других вариантов, если кому-то интересно: pastebin.com/raw.php?i=czJ8MVW3
Андрей
7
Ха - ха. Вы можете заставить людей задаться вопросом, слышат ли они что-то, поставив два голоса друг на друга: беги say "Pay attention to me" &и say -v Whisper "I own you" &последовательно.
Мэтт
100

Действительно, следующее эффективно и несколько мелодично:

say -v Bells "dong dong dong"

[Обновление] К сожалению, Bells больше не входит в последнюю версию OS X. Попробуйте:

say -v Victoria Do your homework!

Используйте следующее, чтобы исследовать голоса:

say -v \?
k00ka
источник
7
Скажи -v Дэниел Гарри
Поттер
1
Или просто: say -v Bells "beep".
kenorb
1
На моих современных макосах нет голоса Билса.
Мартин
Да, Колокола, кажется, были удалены. Используйте say -v '?'для отображения всех голосов. Используйте, say -v '?' | egrep `echo $LANG | sed "s/\..*//"`чтобы составить список голосов для вашего текущего языка.
k00ka
56

пиши echo ^Gв баш. создать ^Gпрессу, ctrl+vа затем ctrl+g.

coffeejunk
источник
20
/usr/bin/printf "\a"а osascript -e "beep 1"также работают достаточно хорошо
Эйб
Кто-нибудь может объяснить, что echo ^Gделает (то есть, что говорит эта команда в терминах непрофессионала)? Это специальный символ, который звуковой сигнал для OSX? Есть ли другие связанные специальные символы? @mxhaack @ wongo888
Эрик Джонс
2
@EricJones ^G- это «управляющий символ», т. Е. Непечатный символ, который / использовался, чтобы вызвать определенный эффект, например, вызвать звонок / гудок. Посмотрите на эту статью в Википедии
coffeejunk
30

Это зациклит все голоса (работает на Yosemite):

say -v '?' | awk '{print $1}' | while read voice; do printf "using $voice...\n"; say -v $voice "hello, this is me using the $voice voice"; sleep 1; done
Джейсон Райан Тейлор
источник
1
Смешное, такое сокровище! : D
Idleherb
27

В терминале введите:

эхо -е "\ а"

Параметр -e указывает эхо обрабатывать экранированные символы. Поскольку \ n является символом новой строки, \ a является символом колокольчика (так же, как Ctrl + G).

Зафод
источник
Одним из преимуществ этого подхода является то, что он работает и в Linux (и других?). Как уже упоминалось в другом месте, вы также можете попробоватьprintf "\a"
Rinogo
1
Для тех, кто любит колокольчик, но ленится о цитатах, echo -e \\aработает тоже.
SeldomNeedy
26

Воспроизвести произвольный звуковой сигнал с afplay

Я удивлен, что никто не упомянул afplay : это программа командной строки, которая воспроизводит произвольные звуковые файлы. Это было со времен оригинальных выпусков OS X (и NeXTSTEP, если ваша память такая длинная).

Например, вы можете запустить это из командной строки или поместить в скрипт:

$ afplay /System/Library/Sounds/Ping.aiff

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

(Дополнительные баллы, если вы можете найти запись звонка Teletype Model 33!)

fearless_fool
источник
Колокольчик машинки может быть достаточно близко.
Андрей Макуха
13

Под терминалами OS X выполните команду: osascript -e 'beep'

Использование технологии OSA (Open Script Architecture) для указания AppleScript выполнить команду beep.

Альберт
источник
10
printf "\a"

Если вы посмотрите на man printfэто, вы получите список экранированных символов, в том числе \a:

\a      Write a <bell> character.
Алекс Коплан
источник
7

printf "\a" также работает в терминале и будет воспроизводить установленный звуковой сигнал.

Oantby
источник
7

Если вам что-то нужно, это звучит как «важно»

ты можешь использовать

tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s && tput bel && sleep 0.33s

:)

Nedudi
источник
1

в MacOS X для получения звука должна быть активирована опция «звуковое предупреждение» (терминал / настройки).

MaxF
источник
1
На самом деле это называется «Звуковой звонок». Это в Настройках / Дополнительно.
Денис Малиновский
1

Это работает для меня (Mac OS 10.14.6)

echo "\x07"  
morgancodes
источник
0

Если у вас установлен XCODE, вы можете сделать звуковой сигнал / звонок. Я не думал, что смогу заставить printf "\a"персонажа работать в C.

Есть один способ заставить тональный сигнал работать во время работы программы, запустить XCODE, раскрывающееся меню под XCODE, Preferences, Behaviors, поставить галочку в первом поле PLAY SOUND, выбрать из списка или добавить звук.

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

Стюарт Скотт
источник
1
«Поведения» XCode выполняются только тогда, когда в XCode происходят соответствующие события. Они не применяются в других местах системы.
сумерки -неактивно-
0

osascript -e 'tell application "System Events" пискать

Ной
источник