BASH:如何将终端设置为flash?
Posted
技术标签:
【中文标题】BASH:如何将终端设置为flash?【英文标题】:BASH: how can the terminal be set to flash? 【发布时间】:2015-11-07 16:38:42 【问题描述】:我想让 BASH 终端闪烁。目标是使用标准的 Linux 实用程序让终端在两种颜色之间闪烁,比如白色和黑色。我不介意终端是否充满字符并被清除以执行此操作。大概的样子如下:
【问题讨论】:
如果您不在乎屏幕是否被填充和清除,那么只需执行此操作并适当地切换字体和背景的颜色。你只需要使用正确的转义序列。 arwin.net/tech/bash.php 通常程序使用ncurses-library 实现这种行为并且可以在它们的输出中做到这一点,我不知道是否有一个工具可以在本机中做到这一点。 如果有一个程序每小时执行一次以上,我永远不会使用它。看重眼睛的人也不会。 @msw 是的,但它可能是一个很好的功能来提醒某人。顺便说一句,如果这是你想做的,你可以使用notify-send
,它有点不那么冗长。
@msw 我想知道这个有两个目的。第一个是作为在大量开放终端中清晰突出活动的一种方式。第二种是在计算机显示器上以视觉方式传输二进制数据,以便使用视觉算法进行编码。
【参考方案1】:
您可以使用以下 shell 命令在正常和反向视频之间切换:
printf '\e[?5h' # Turn on reverse video
printf '\e[?5l' # Turn on normal video
【讨论】:
吹毛求疵:这取决于终端仿真。好的,现在几乎每个模拟器都支持这个 ANSI 代码,但是以前有很多其他终端,只要看看 terminfo 数据库......但你是对的,这就是 OP 要求的:-) 是的,我正在研究使用terminfo
或 termcap
的正确方法(我什至不记得哪个是现代数据库和/或哪个已经过时了),但无法不要很快找到它,所以我就离开了这个。 (这些是 ANSI 转义字符,因此大多数常见的终端都应该支持它们。)
terminfo 是 young 的,termcap 是 70 年代的祖父。我记得 TeleVideo 终端不知道 ANSI 序列。 Snff,也许我还能在博物馆里找到一个……
@chepner 非常感谢您的帮助。这些 ANSI 代码正是我所需要的。
@SergeBallesta 感谢您的启发性 cmets。我使用的是 GNOME Terminal 和 xterm,两者都相当标准,可以识别 ANSI 代码。【参考方案2】:
这是我为此目的使用的一个小型 bash 脚本。当您按 ctrl-c 时,它还会重置终端。
#!/usr/bin/env bash
set -e
trap ctrl_c INT
function ctrl_c()
printf '\e[?5l'
while true; do
printf '\e[?5h'
sleep 0.5
printf '\e[?5l'
sleep 0.5
done
【讨论】:
【参考方案3】:您所要求的称为可视铃。它可以在 xterm(Ctrl + 中间按钮菜单)或 putty(Settings/Terminal/Bell)等主要终端仿真器上启用。不幸的是,没有通用的方法来做到这一点。
但一旦完成,echo Ctrl+G
会导致终端闪烁而不是哔哔声。
【讨论】:
可视铃只是闪烁的一种应用;我认为 OP 想知道如何实际告诉终端如何闪烁。 触发铃声,终端可能会或可能不会(取决于设置)使用闪烁显示。但是,无论是否设置了可见铃,会导致闪烁的实际终端命令是什么? @SergeBallesta 感谢您在可视钟上提供的信息。 chepner 提供的解决方案更直接,但您的解决方案以更通用的方式提供信息。【参考方案4】:您可以按如下方式从 Bash 中调用 Python 内联
python -c 'import curses ; w=curses.initscr() ; curses.flash() ; curses.endwin() '
【讨论】:
以上是关于BASH:如何将终端设置为flash?的主要内容,如果未能解决你的问题,请参考以下文章