В окне терминала 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-9
Ubuntu.
решение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'