Як я можу задзвонити звуковий дзвінок у скрипті bash, який працює під екраном gnu?


19

У вікні термінала konsole за межами екрана працює оболонка bash з TERM, встановлена ​​на konsole-256color, якщо я вводя

echo -n $ '\ a' або
echo -n $ '\ напр.' або
./ringbell, де вміст ./ringbell є

#! / бін / баш
echo -n $ '\ напр.; echo -n $' \ a '

Всі вони призводять до відключення налаштованого звукового дзвоника. Якщо я входжу на екранне сеанс (мій .screenrc також встановлює термін konsole-256color), лише друга з перерахованих вище 3 команд (echo -n $ '\ напр.) Призводить до того, що звуковий дзвінок буде чути. Чи потрібно змінювати сценарій чи це проблема з екраном?

Версія ubuntu екранного пакета, який я маю, становить 4.1.0 ~ 20120320gitdb59704-9.


1
Також зверніться до цього питання , хоча я справді віддаю перевагу відповіді Кіта.
Франклін Ю

Відповіді:


25

З пам’яті Ctrl-G - це символ дзвоника, тому я думаю, що саме тому другий спрацював. Але екран може бути прискіпливим до того, які символи він приймає, оскільки Ctrl-A приймає як командний код.

Спробуйте це

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

Я знайшов це на розеткакоді , сподіваємось, він дасть вам кілька варіантів


Це не працює ні зовні, ні зовні. Якщо я використовую infocmp, це показує мені, що можливість TER не визначена для TERM konsole-256color, тому це має сенс. Незважаючи на те, що запис терміна на екрані визначає bel a, tput -T екран bel також не працює.
Боб

1
Після більшого тестування з'являється, що екран tput -T екрана все-таки працює. Мій початковий тест не вдався, оскільки я працював на екрані, а зовнішній екран не відключався. Дякую за пораду.
Боб

0

Найкраще рішення: printf '\a'

Це тому, що printfвбудована в більшість оболонок працює добре, а також існує еквівалентна виконувана версія, printfвстановлена ​​в системах Linux / Mac.

Інші варіанти: Якщо у вас встановлені прокляття, ви також можете використовувати: tput bel Якщо ви використовуєте останню версію bash, тоді ви можете використовувати:echo -n '\a'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.