我正在尝试在终端中为自己设置一个小番茄/倒计时器。
这条评论on Superuser 提供了一个方便的小 shell 函数,可以充当倒计时器,这printf
是 STDOUT 的剩余时间(太棒了)。我在想,如果我能在终端模拟器选项卡的标题中看到实时倒计时,那就更好了,这样我就可以监控剩余时间,而不必在选项卡之间来回切换。
它出现环境PROMPT_COMMAND
变量可用于更新窗口标题,但由于其内容已执行仅在 Bash 显示提示之前,它无法在进程运行时实时更新标题(据我所知)。
有什么办法可以做到这一点吗?
(我突然想到,我可以通过在 tmux 中拆分一个新窗格来更轻松地解决这个问题,但我使用的是小屏幕,并且我希望能够节省所有屏幕空间。)
答案1
终端代码可能是您所需要的,请参阅http://wiki.bash-hackers.org/scripting/terminalcodes和https://en.wikipedia.org/wiki/ANSI_escape_code欲了解详细信息(或http://invisible-island.net/xterm/ctlseqs/ctlseqs.html有关 xterm 的代码的相当技术性的描述)。
下面是如何设置标题的示例:
set_title() {
printf '\033]0;%s\007' "$*"
}
答案2
只需将相关的 ANSI 代码输出到 stdout 或 stderr 即可。
以下内容对我有用xterm
:
for i in {10..1} ; do printf '\e]0;'$i'\a' ; sleep 1 ; done &
某些终端还可能提供 API 来以编程方式更改其标题。