Как можно включить звуковой звонок в скрипте bash, запущенном под управлением gnu screen?

Как можно включить звуковой звонок в скрипте bash, запущенном под управлением gnu screen?

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

echo -n $'\a'

или

echo -n $'\eg'

или

./ringbell.sh

где содержимое ringbell.shесть

#!/bin/bash
echo -n $'\eg'
echo -n $'\a'

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

Я использую screen 4.1.0~20120320gitdb59704-9Ubuntu.

решение1

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

Попробуй это

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

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

решение2

Лучшее решение:printf '\a'

Это связано с тем, что printfвстроенная в большинство оболочек версия работает хорошо, а также существует эквивалентная исполняемая версия, printfустанавливаемая вместе с системами Linux/Mac.

Другие варианты: Если у вас установлен curses, то вы также можете использовать: tput bel Если вы используете последнюю версию bash, то вы можете использовать:echo -e '\a'

Связанный контент