Как я могу позвонить в звуковой звонок внутри скрипта bash, работающего под экраном GNU?


18

В окне терминала konsole за пределами экрана запускается оболочка bash с TERM, установленным в konsole-256color, если я наберу:

echo -n $ '\ a' или
echo -n $ '\ eg' или
./ringbell, где содержимое ./ringbell

#! / Bin / Баш
echo -n $ '\ eg'; echo -n $ '\ a'

Все они приводят к тому, что настроенный звуковой звонок отключается. Если я вхожу в сеанс экрана (мой .screenrc также устанавливает term для konsole-256color), то только вторая из трех вышеуказанных команд (echo -n $ '\ eg') приводит к тому, что слышен звуковой звонок. Нужно ли изменять скрипт или это проблема с экраном?

У меня есть версия экранного пакета для Ubuntu: 4.1.0 ~ 20120320gitdb59704-9.


1
Также обратитесь к этому вопросу , хотя я действительно предпочитаю ответ Кита.
Франклин Ю

Ответы:


21

По памяти Ctrl-G является символом колокольчика, поэтому я думаю, именно поэтому второй сработал. Но экран может быть требователен к тому, какие символы он принимает, поскольку он принимает Ctrl-A в качестве кода команды.

Попробуй это

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

Я нашел это на rosettacode , надеюсь, это даст вам некоторые варианты


Это не работает ни внутри, ни снаружи экрана. Если я использую infocmp, это показывает, что возможность bel не определена для TERM konsole-256color, так что это имеет смысл. Хотя запись terminfo экрана определяет bel, экран tput -T bel также не работает.
Боб

1
После дальнейших испытаний выясняется, что экран tput -T бел работает. Мой первоначальный тест не удался, потому что у меня был экран на экране, а на внешнем экране не было выключено vbell. Спасибо за совет.
Боб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.