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

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

目前发布的答案均不起作用或无法回答问题。

根据我最初的问题,无论设置PS1还是效果都PROMPT_COMMAND没有任何效果。


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

许多帖子都提出了这样的建议:

echo -en "\033]0;New terminal title\a"

但它什么也不做。

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

  • 一旦标题改变,我不希望它在我改变目录等时改变
  • 我不想要相同的所有选项卡上的标题。我只想设置运行命令的选项卡的标题
  • 我想要多个标签,每个标签都有不同的标题

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

PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'

它没有效果。

正确的命令是什么?


仅供参考,的输出uname -a是:

Linux d136172 3.13.0-45-generic #74-Ubuntu SMP 2015 年 1 月 13 日星期二 19:36:28 UTC x86_64 x86_64 x86_64 GNU/Linux

答案1

来自@Maythux,这个可以满足我的需求,忽略终端上的自动提示当前目录。

PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'

操作说明

将“新终端名称”上的字符串更改为$("pwd")

PROMPT_COMMAND='echo -en "\033]0; $("pwd") \a"'

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


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

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

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

答案2

https://askubuntu.com/a/774543/455406,bash 特有的解决方案是创建一个自定义函数(参见例如本指南) 喜欢

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

它允许你调用set-title <name you want to set it to>

答案3

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

PROMPT_COMMAND=
echo -en "\033]0;New terminal title\a"

答案4

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

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”

相关内容