如何在 Bash 中设置窗口标题?我知道在 Windows Batch 中它是 TITLE。
答案1
这是一个很好的函数可以实现这个功能:
# Allow the user to set the title.
function title {
PROMPT_COMMAND="echo -ne \"\033]0;$1 (on $HOSTNAME)\007\""
}
将其放入您的 ~/.bashrc 中,然后输入“title whatever”来设置标题。如果您想删除主机名,请删除“(on $HOSTNAME)”。
编辑:当然,在尝试之前请确保. ~/.bashrc
(又名)。source ~/.bashrc
答案2
我已经在 中定义了这个 VT100 转义序列.bashrc
。
PS1_SET_TITLE='\[\e]0;\u@\h:\w\a\]'
PS1="${PS1_SET_TITLE}" my other prompt components
export PS1
对于我的主目录,它显示alex@host:~
,当我更改目录时,它们会在窗口标题中更新。
适用于 CYGWIN 和 PuTTY 终端会话。我通常不运行 X,但当我运行它时,它与 XTerm 配合得很好。
阅读PROMPTING
bash 手册页中有关 PS 命令可用开关的部分,例如\u \h \w
。
答案3
下面是一些设置窗口标题的代码狂欢- 一个改进的版本,它不会删除
以前的提示字符串(并且对它的更改是暂时的),另一个答案(下面引用):
function title {
export WTITLE=$1
}
PS1_old="$(echo $PS1 | sed -En 's/(.+)\\e](.+)/\1\\\\e]\2/g; s/(.+ )(.+)/\1\\n\2/p')";
_PS1='\[\e]0;$WTITLE: \w\a\]';_PS1+="$PS1_old ";export PS1=$_PS1;
# A command to use in bash (shell) scripts, replaces
# the above function that is for a "~/.bashrc" file:
export WTITLE="[for example \u@\h, insert title here]"
如果您使用“mintty”(自 2011 年底以来 Cygwin 的默认终端),
请在中添加以下内容.bashrc
:function title { export WINDOWTITLE=$1 } export PS1='\[\e]0;$WINDOWTITLE:\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]~\w\[\e[0m\]\n\$'
然后重新打开终端并输入“title ThisIsMyTitle”
-引自这个答案。
答案4
如果您使用“mintty”(自 2011 年底以来 Cygwin 的默认终端),请在中添加以下内容.bashrc
:
function title {
export WINDOWTITLE=$1
}
export PS1='\[\e]0;$WINDOWTITLE:\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]~\w\[\e[0m\]\n\$'
然后重新打开终端并输入“title ThisIsMyTitle”