Bash

程序執行時可以更新終端視窗標題嗎?

  • June 22, 2016

我正在嘗試在終端中為自己設置一個番茄鐘/倒數計時器。

這條關於超級使用者的評論提供了一個方便的小 shell 函式,它將充當倒數計時器,這printf是 STDOUT 的剩餘時間(真棒)。我想如果我能在終端模擬器選項卡的標題中看到實時倒計時會更好,這樣我就可以監控我的剩餘時間而不必在選項卡之間來回切換。

看來環境PROMPT_COMMAND變數可用於更新視窗標題,但由於其內容僅在 Bash 顯示提示之前執行,因此無法在程序執行時實時更新標題(據我所知)。

有什麼辦法可以做到這一點?

(我突然想到,我可以通過在 tmux 中拆分一個新窗格來更輕鬆地解決這個問題,但我在一個小螢幕上,我希望能夠保存我能保存的所有螢幕空間。)

終端程式碼可能是您需要的,請參閱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' "$*"
}

只需將相關的 ANSI 程式碼輸出到 stdout 或 stderr。

以下內容適用於我xterm

for i in {10..1} ; do printf '\e]0;'$i'\a' ; sleep 1 ; done &

一些終端可能還提供 API 以程式方式更改其標題。

引用自:https://unix.stackexchange.com/questions/291333