我的工作环境中运行着多个终端实例,我想要为每个终端设置一个特定的标题,以便清楚地了解特定终端的用途,即 Apache、editing_ini、postgres 等...
当然是从命令行。
答案1
备择方案:
但是,你也可以通过其他方式发出
gnome-terminal --title="SOME TITLE HERE"
这可能不会产生预期的效果,因为很有可能您
.bashrc
覆盖了该行为。让我们来看看最后一种方法,这是我厚颜无耻地从我的 中删掉的
.bashrc
。PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
作为额外的参考,这是我的.bashrc
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
您可能还需要在您的~/.bashrc
case "$TERM" in
xterm*|rxvt*)
# JEFFYEE REMOVED because it makes commands to title() not work
#PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
答案2
如果您想在每次打开终端时根据您所在的主机等设置标题,Ward 的答案很棒。但是,如果您只想快速设置标题,您可以直接运行 echo:
echo -ne "\033]0;SOME TITLE HERE\007"
或者创建一个简单的函数(在你的内部~/.bashrc
),比如说termtitle
termtitle() { printf "\033]0;$*\007"; }
您可以运行它termtitle some title here
。
答案3
啊,这么多答案……
我试过wmctrl
了几乎有效,只是我无法让它改变图标标题,至少不是永久的。
问题是 Ubuntu 中的 Bash 中的 PS1 设置了标题。
默认 PS1 是
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
...在第一个转义序列中设置标题:\e]0;\u@\h: \w\a
因此,有两种解决方案:
解决方案 1:简化 PS1,然后使用 PROMPT_COMMAND
将 PS1 改为更简单的内容:
PS1="\u@\h:\w\$ "
然后使用PROMPT_COMMAND:
PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
解决方案2:直接修改PS1
只需将 PS1 修改为新标题:
PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
转义码注释
请注意(借用这个答案下面 wjandrea 的评论):
\e
或者\033
是转义(ESC)字符,用于启动转义序列。]
启动操作系统命令(OSC)。- 对于 xterm 来说,
0;
表示“设置标题”, \a
或者\007
是终止 OSC 的铃声(BEL)字符。
更多信息:https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences