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 要求的:-) 是的,我正在研究使用 terminfotermcap 的正确方法(我什至不记得哪个是现代数据库和/或哪个已经过时了),但无法不要很快找到它,所以我就离开了这个。 (这些是 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?的主要内容,如果未能解决你的问题,请参考以下文章

在VSCODE中将git bash设置为默认终端[重复]

Git Bash 未在 VSCode 中显示为终端选项

通过 Windows 终端中的脚本设置 git bash 配色方案

oh-my-zsh终端用户名设置(PS1)

将终端标题设置为用户名

你如何为 Git-Bash 设置 16 种终端颜色?