在屏幕外的 konsole 终端窗口中运行 bash shell,并将 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
),则只有上述 3 个命令中的第二个(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'
这是因为大多数 shell 中内置的运行良好,并且还安装了 Linux/Mac 系统中printf
等效的可执行版本。printf
其他选项:如果您安装了 curses,那么您也可以使用:tput bel
如果您使用最新版本的 bash,那么您可以使用:echo -e '\a'