如何在Windows中更改Git终端的标题?

28

我在Windows 10中工作,通常会打开多达5个CMD窗口。 我这样工作是因为我需要使用不同的数据运行相同的应用程序,并保持监视是否抛出任何异常。

我将一个数字设置为窗口的标题(使用“title”命令),而不是默认文本,以便轻松识别我正在使用哪个窗口,并能够使用“Alt + Tab”标识和在它们之间进行切换(以下是我如何使用我的CMD窗口的示例

最近我开始使用Git,我真的很喜欢Windows的Git Bash终端。 我想像使用CMD窗口一样使用Git Bash终端,但我找不到任何更改窗口标题的方法。 我搜索了一下,发现这些说明和其他一些说明(因为我还不能发布超过两个链接),但它似乎只能通过设置不同的默认标题来实现。 我想随时更改窗口标题为任何自定义文本。

这可行吗? Git Bash中是否有类似于“title”的命令可用?


3
在标准Bash中,您可以编写echo -ne "\e]0;YOUR TITLE HERE\a"来设置窗口标题。不确定Git Bash是否相同。 - M.M
7
上面的 Git-Bash 命令设置标题持续 1-2 秒,然后恢复为默认。 - Alexander Pavlov
1
@M.M的建议最近运作得很好。谢谢! - Fabio A. Correa
1
很遗憾,它在2022年无法工作。 - Volker
@Volker 如果您想尝试一下,接受的答案可能适用于您。现在它仍然对我有效。它比单个代码行更繁琐,但可以使用。 - Isidro Serrano Pineda
@Volker,我刚刚接受了一个更简单的答案,如果你想检查一下。 - Isidro Serrano Pineda
9个回答

19
一个简单的选项是 echo -ne "\e]0;YOUR TITLE HERE\a"

3
功能:设置 Git Bash 窗口的标题。代码:title() { echo -ne "\e]0;$1\a"; }翻译:该函数用于设置 Git Bash 窗口的标题。具体代码为 title() { echo -ne "\e]0;$1\a"; } - Jon
@Robyte,我不同意你的看法。我已经使用这个命令很多年了。我建议你查看一下你的bash初始化文件中PS1环境变量的定义。 - Fabio A. Correa

16
这个帖子已经几个月了。但我认为提供一种替代方案会有帮助。 你可以将以下行添加到用户配置文件夹中的.bashrc文件中。
export TITLEPREFIX="Git Bash"

您可以选择在标题前使用Git bash。这是针对用户的更改。因此,如果一台机器被多个具有自己登录的用户使用,则每个人都可以自定义自己的标题。


现在,如果将参数传递给git-bash.exe,该怎么使它工作呢?例如:git-bash.exe -c "export TITLEPREFIX=\"Test\" && sleep 5" 不能工作。 - Mike Lowery

11
你在这个链接中是正确的:此链接
如果你稍微修改一下git-prompt.sh脚本(对于我来说,它位于c:\Program Files (x86)\Git\etc\profile.d\git-prompt.sh),你就可以将标题设置成任何你想要的东西。
注意:你需要以管理员身份运行VS Code、Notepad++或类似的软件才能写入这个目录。
首先,保存git-prompt.sh的备份(例如git-prompt.backup.sh),然后按以下方式修改git-prompt.sh的开头。
if test -z "$GITTITLEPREFIX" # if not empty
then
    GITTITLEPREFIX="Git-Bash => " # prefix that will have current pwd appended after it
fi

if test -f ~/.config/git/git-prompt.sh
then
    . ~/.config/git/git-prompt.sh
else
    if test -n "$GITTITLE"
    then   ##### Set window title directly to GITTITLE if not empty
        PS1='\[\033]0;$GITTITLE\007\]' 
    else   ##### Set window title to GITTITLE PREFIX plus the PWD
        PS1='\[\033]0;$GITTITLEPREFIX${PWD//]^[:ascii:]]/?}\007\]' 
    fi
fi
###### Leave the rest of the file the same
    PS1="$PS1"'\n'
    PS1="$PS1"'\[\033[32m\]'
###### Etc.

此命令首先会检查变量 GITTITLEPREFIX 是否为空,若不为空则将其设置为 "Git-Bash => ",与链接文章中类似。之后当前路径将被添加到该变量后面,因此如果您想要的效果是 "1 : $PWD",那么可以像这样将 GITTITLEPREFIX 设置为 "1 : ":

GITTITLEPREFIX="1 : "

否则,您可以将GITTITLE设置为任何非空值,那么整个标题将被设置为GITTITLE的内容(不附加PWD),因此如果您只想使用“1”,请使用此选项:

否则,您可以将GITTITLE设置为任何非空值,那么整个标题将被设置为GITTITLE的内容(不附加PWD),因此如果您只想使用“1”,请使用此选项:

GITTITLE="1"

然后运行这个脚本。使用我的路径,我是这样做的:

. "/c/Program Files (x86)/Git/etc/profile.d/git-prompt.sh"

标题应该更改。当然,您可以为此创建别名或在路径中创建单独的脚本,以便运行它更加简单,并且标题可以作为参数。我会将其留给读者来练习...


对我来说可以用,虽然不是我预期的“title”命令,但正好符合我的需求。就像你所说的,我会尝试使用脚本中的不同选项。非常感谢! - Isidro Serrano Pineda
这里发现了一个错误 - 第一个 if..fi 结构应该检查是否为空(或在 else 而不是 then 上运行默认赋值)。我通过将 -n 修改为 -z 来修复了这个问题,以用于 test 标志。 - LightCC
嗯..这就是为什么第一次没有起作用的原因。最后,根据您的指示,我对脚本进行了自己的修改,将标题作为参数传递。正如我所说,谢谢! - Isidro Serrano Pineda
@IsidroSerranoPineda,您可以将最终脚本发布为另一个答案,这可以帮助其他正在寻找相同内容的人。 - LightCC
非常感谢您的回答,@LightCC。我并不是要贬低您的声誉,只是我找到了一个更简单的答案,我认为它值得被标记为答案。 - Isidro Serrano Pineda

3

我知道这已经过时了,但如果能帮到某个人,你可以通过更改TITLEPREFIX环境变量来简单设置标题前缀:

TITLEPREFIX=您的标题前缀


运行良好。 - stack0114106

3
在Git控制台中,JSON设置的编写方式为:
"name": "Git Bash",
"tabTitle": "Git Bash",
"suppressApplicationTitle": true

2

您可以使用

export MYTITLE=abcd; export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\\\007)/\1$MYTITLE\2/")

它查找标题的正则表达式,并用$MYTITLE替换它。 我可能错了,但我认为标题是在$PS1中的0;\007之间的某些内容。这对我有用。 或者您可以将下一个函数添加到您的.bashrc(或.bash_profile)中。
ttt() {
        # change title in gitbash
        export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\\\007)/\1$1\2/")
}

然后随时使用ttt "新标题"


2
我通过对脚本进行微小修改解决了我的问题。首先,为了传递我想要的窗口名称,我添加了变量name=$1并将其设置在标题变量中:
name=$1
PS1='\[\033]0;$name\007\]' # set window title

第二种方法,如此处所建议,我注释了下面的行:

#PS1="$PS1"'\[\033[35m\]'       # change to purple
#PS1="$PS1"'$MSYSTEM '          # show MSYSTEM

最终代码如下:

if test -f /etc/profile.d/git-sdk.sh
then
    TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
    TITLEPREFIX=$MSYSTEM
fi
name=$1
PS1='\[\033]0;$name\007\]' # set window title
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
#PS1="$PS1"'\[\033[35m\]'       # change to purple
#PS1="$PS1"'$MSYSTEM '          # show MSYSTEM
PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
PS1="$PS1"'\w'                 # current working directory
if test -z "$WINELOADERNOEXEC"
then
    GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
    COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
    COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
    COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
    if test -f "$COMPLETION_PATH/git-prompt.sh"
    then
        . "$COMPLETION_PATH/git-completion.bash"
        . "$COMPLETION_PATH/git-prompt.sh"
        PS1="$PS1"'\[\033[36m\]'  # change color to cyan
        PS1="$PS1"'`__git_ps1`'   # bash function
    fi
fi
PS1="$PS1"'\[\033[0m\]'        # change color
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'$ '                 # prompt: always $
MSYS2_PS1="$PS1"               # for detection by MSYS2 SDK's bash.basrc

我暂时将脚本复制并粘贴到C:,以便每次需要更改标题时都可以轻松执行它,根据我的路径,如下所示:$ . /c/changename.sh

我仍在学习脚本编写,以便能够设置别名。正如@LightCC所说,“我将把它留给读者作为练习...”


1
这个帖子虽然有点旧,但如果还有人在寻找解决方案,
1. 终端 > 设置 > 标签标题 > 2. 将其更改为您喜欢的任何内容,然后向下滚动。 3. 高级 > 抑制标题更改 > 打开 > 保存
希望对您有所帮助!

这是用于什么应用程序?我的显示是“mintty 3.6.4”,窗口栏右键菜单中只有“选项”(还有一个有趣的选项:复制标题)。据我所知,它不支持标签页,并且在选项中也没有标题选项。 - undefined
这是专门针对Windows终端的链接:https://learn.microsoft.com/zh-cn/windows/terminal/ - undefined

1
这里有一个简单的方法可以将标题文本更改为任何你想要的内容。 在你的系统上的某个地方,比如C:\bin中创建一个名为title.sh的脚本,其内容如下:
#!/bin/sh
export TITLEPREFIX="$*"

将以下内容添加到您家目录下的.bashrc文件中。
alias title='. /c/bin/title.sh'

现在打开一个Git Bash窗口。 你现在可以输入:
title my title

你的标题将以你提供给标题别名的标题开头。


哇,如此简单,却如此有用。非常感谢你! - Isidro Serrano Pineda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接