如何通过添加日期时间来配置 Git bash 提示?

Posted

技术标签:

【中文标题】如何通过添加日期时间来配置 Git bash 提示?【英文标题】:How to configure Git bash prompt by adding datetime? 【发布时间】:2012-10-11 16:48:28 【问题描述】:

我的 msysgit Git bash 命令行提示现在看起来像这样:

GitUserName@WorkStationName WorkSpacePath (BranchName)

我想在那一行前面加上一个时间戳,比如HH:mm (hours:minutes)。

有谁知道我可以轻松做到这一点吗?

【问题讨论】:

【参考方案1】:

seangwright 给出的answer 有效,但它会覆盖您的全局配置。如果您查看\Git\etc\profile.d\git-prompt.sh 内部,您会看到:

if test -f ~/.config/git/git-prompt.sh
then
    . ~/.config/git/git-prompt.sh
else
    PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
    PS1="$PS1"'\n'                 # new line
    # ...

这意味着您可以仅覆盖您的用户帐户的配置,这可能是首选,因为对 Git Bash 的任何更新都不会覆盖该文件。您所要做的就是创建~/.config/git 文件夹(如果它尚不存在),然后将您的配置保存在文件git-prompt.sh(完整路径~/.config/git/git-prompt.sh)中。脱离最新的 Git Bash 配置,它可能看起来像这样:

PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
PS1="$PS1"'\n'                 # new line

# THE FOLLOWING LINE ADDS THE TIMESTAMP
PS1="$PS1"'\[\033[35m\]\D%F %T ' 

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 $

【讨论】:

【参考方案2】:

我发现使用 \Git\etc\profile.d\git-prompt.sh 文件,您可以添加如下所示的行,以便在提示符中添加日期时间

PS1="$PS1"'\[\033[35m\]\D%F %T '(格式细节见here)

我的提示目前看起来像这样

2015-11-08 23:48:08 Sean@pc-01 /c/dev/projects

PS1='\[\033]0;$MSYSTEM:$PWD//[^[:ascii:]]/?\007\]' # set window title
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'\[\033[35m\]\D%F %T '
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 $

注意:使用$(/bin/date) 的答案对我不起作用,因为我认为我无法找到\Git\usr\bin\date.exe

【讨论】:

【参考方案3】:

如果您指的是当前时间/日期,那么this example 可以提供帮助:

 PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

它使用$(/bin/date),是一个多行提示,包含日期/时间、完整路径、用户和主机、活动终端,甚至文件计数和空间使用情况。

它说明了如何将日期集成到自己的 git 提示符中。


OP deblendewimcomments:

我还想知道如何更改它而不立即在提示符中运行它。 将配置文件更改为:

if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 

进入

if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 

【讨论】:

感谢 VonC。该链接绝对帮助了我!我还想知道如何在不立即在提示符中运行它的情况下更改它。将配置文件从:if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 更改为 if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 我在上面评论中所说的代码可以在这里找到:C:\Program Files (x86)\Git\etc\profile(文件被称为配置文件)在第 155 行附近的某处

以上是关于如何通过添加日期时间来配置 Git bash 提示?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Git Bash 添加到 VsCode

Vue CLI 3.X 在windows中使用Git Bash创建项目时,出现交互提示符不工作的问题

npm 通过命令提示符工作,但不是 git bash

如何在 Visual Studio 2019 中使用 git bash 终端配置文件?

git bash配置SSH远程连接阿里云ECS

如何在 Windows 上将 man 和 zip 添加到“git bash”安装中