我想使用 set-title 函数https://askubuntu.com/a/774543/435408将终端标题变成一种状态栏。这样我就可以在 GUI 中看到我的服务器是正在运行还是已完成。
set-title Running && doStuff.sh && set-title Complete
使用此代码,您永远不会看到标题更改为“正在运行”,而只会看到“完成”。我相信这是因为只有在所有三个命令运行后,系统读取 PS1 以创建新提示时,标题才会更改。
我通过将其他命令放在后台来立即显示“正在运行”:
doStuff.sh && set-title Complete & set-title Running; fg
但是终端标题从未设置为“完成”,因为该调用是在后台进行的。“fg”没有帮助。
我遇到了类似的问题
set-title Running; echo "doStuff.sh; set-title Complete" | at now + 0 minutes
最后,我尝试打开一个名为“正在运行”的新终端选项卡,如下所述https://askubuntu.com/a/860484/435408,但我无法向 bash 会话传递任何命令以将其标题设置为“完成”。如果我尝试使用 --rcfile 或 -c,该选项卡会立即关闭。
gnome-terminal --tab -e "bash -c 'printf \"\033]0;Running\007\"; sleep 4; exec bash'"
答案1
我得到了我想要的行为:
- 用于
gnome-terminal
创建一个带有“正在运行”标题的窗口 - 执行后通过调用保持窗口打开
exec bash
~/.statusrc
将对“set-title Complete”的调用放入我传递给新 bash 的文件中。
gnome-terminal --maximize --title="Running" -- /usr/bin/bash -c \
". /home/user/.bashrc; doStuff.sh; exec bash --rcfile /home/user/.statusrc"
~/.statusrc 文件如下所示:
#!/usr/bin/bash
. ~/.bashrc
termtitle "Complete"