将终端窗口标题设置为当前 UTC 时间

将终端窗口标题设置为当前 UTC 时间

我想知道是否有办法将终端窗口标题栏设置为当前 UTC 时间,可能没有秒数(闪烁太多)。我做了很多云工作,希望尽量减少对减法数学的思考:)

我发现的大多数东西都是针对当前路径的,我只是不确定当标题栏在终端中发生变化时如何更新它。

答案1

我还没有测试过这个,但是 bash 有 $PROMPT_COMMAND,应该在显示提示之前执行。

如果你把

PROMPT_COMMAND="echo -ne '\e]0;$(date)\a'"

在您的 .bashrc 中,日期将被设置为标题,并且在每次显示提示时更新。

答案2

据我所知,无论终端内发生什么,您都希望标题始终定期更新;也就是说,即使没有活动(例如,显示提示符而您没有输入任何内容),或者正在运行一个长时间的进程。我说得对吗?

可以通过发出称为 OSC 0 的特定转义序列来更新标题,例如

echo -ne '\e]0;newtitle\e\\'

如果您没有看到此命令更改标题,那是因为后续提示再次覆盖了它。您需要从提示中删除标题的设置。作为概念验证,您可以尝试这样做以确保它确实设置了标题:

echo -ne '\e]0;newtitle\e\\'; sleep 5

您可以编写一个脚本,以类似的方式发出并定期更新标题,并在后台运行该脚本。

但是,这种方法存在一个固有问题。如果您在终端中运行另一个应用程序,该应用程序也可能会打印转义序列。尤其是在中间有其他层的情况下,例如 ssh,给定应用程序在两个连续步骤中打印转义序列的可能性很小(例如,将前景切换为红色的转义序列是“\e[31m”,它可能在一个步骤中打印为字符“\e[3”,随后不久打印为“1m”)。您的后台脚本可能会介入并在中间打印其内容,这可能会严重破坏显示(没有双关语的意思)。

没有简单的方法可以防止这种情况发生。也许可以配置 tmux 或类似的层来更新标题以包含时间。我不知道 tmux 是否支持这一点,但它拥有必要的知识来确保消除这种微小的显示损坏可能性。好吧,它已经默认显示时间了(不过不是在标题中,而是在实际画布上)。

我建议你在桌面上的某个地方运行一个图形时钟小程序或应用程序,独立于终端仿真器。这样,同一条信息(时间)就不会显示在多个位置,而只会显示在一处。此外,你还可以保存终端的标题(可用空间),以获取特定于该特定终端的一些实际更有意义的信息。

相关内容