如何仅使用命令行更改当前终端选项卡的标题

Boh*_*ian 61 command-line

当前发布的答案均无法解决/回答问题。

根据我原来的问题,既没有设置PS1PROMPT_COMMAND没有任何影响。


仅在命令提示符下使用命令,如何更改当前终端选项卡的标题?

很多帖子都这么建议:

echo -en "\033]0;New terminal title\a"
Run Code Online (Sandbox Code Playgroud)

但它什么也不做。

当前的答案都不起作用(有些不回答问题),所以为了清楚起见:

  • 更改标题后,如果我更改目录等,我不希望它更改
  • 我不想在所有选项卡上使用相同的标题。我只想为我运行命令的选项卡设置标题
  • 我想要多个标签,每个标签都有不同的标题

此外,该PROMPT_COMMAND变量未在我的终端会话中设置。如果我设置它:

PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
Run Code Online (Sandbox Code Playgroud)

它没有效果。

什么是正确的命令?


仅供参考,输出uname -a为:

Linux d136172 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

小智 34

来自@Maythux,这个适用于我需要忽略终端上的自动提示当前目录。

PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
Run Code Online (Sandbox Code Playgroud)

操作说明

使用以下命令更改“新终端名称”上的字符串$("pwd")

PROMPT_COMMAND='echo -en "\033]0; $("pwd") \a"'
Run Code Online (Sandbox Code Playgroud)

即使您添加新选项卡,这也会自动更改标题。


我使用下面看起来更好的设置,您也可以玩bash编程并设置自己的。

PROMPT_COMMAND='echo -en "\033]0;$(whoami)@$(hostname)|$(pwd|cut -d "/" -f 4-100)\a"'
Run Code Online (Sandbox Code Playgroud)

将此设置添加到您的~/.bashrc.


Wil*_*llC 21

https://askubuntu.com/a/774543/455406,一个特定于 bash 的解决方案是创建一个自定义函数(参见例如这个 how-to),如

# function to set terminal title  
function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}
Run Code Online (Sandbox Code Playgroud)

这允许你打电话 set-title <name you want to set it to>

  • 适用于 Ubuntu 18.04,谢谢。(将脚本添加到 .bashrc 后重新启动终端) (2认同)

mur*_*uru 11

PS1设置标题时,任何尝试使用命令设置标题或PROMPT_COMMAND将失败,因为在所有这些尝试之后都会打印提示。出于这个原因,我更喜欢在测试标题 ( PS1=$; unset PROMPT_COMMAND)时保留一个简单的提示。


Joh*_*024 9

很可能PROMPT_COMMAND已设置并且每次显示提示时都会覆盖您选择的标题。尝试取消设置,然后发出标题命令:

PROMPT_COMMAND=
echo -en "\033]0;New terminal title\a"
Run Code Online (Sandbox Code Playgroud)


小智 5

这个线程可能有点旧,但这里有一个对我有用的解决方案:

https://blog.programster.org/ubuntu-16-04-set-terminal-title

只需编辑您的 $HOME/.bashrc 文件并添加以下函数:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}

现在,每当您想设置终端的标题时,只需输入如下内容:
set-title "my awesome terminal title"