博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bash]在ps1上显示当前git branch的name
阅读量:4229 次
发布时间:2019-05-26

本文共 3551 字,大约阅读时间需要 11 分钟。

想要实现的样子:

在这里插入图片描述

#!/bin/bash## DESCRIPTION:##   Set the bash prompt according to:#    * the active virtualenv#    * the branch/status of the current git repository#    * the return value of the previous command## USAGE:##   1. Save this file as ~/.bash_prompt#   2. Add the following line to the end of your ~/.bashrc or ~/.bash_profile:#        . ~/.bash_prompt## LINEAGE:##   Based on work by woods##   https://gist.github.com/31967# Set the full bash prompt.function set_bash_prompt () {    local LAST_CMD_EXIT_CODE=$?    # The various escape codes that we can use to color our prompt.    local         RED="\[\033[0;31m\]"    local      YELLOW="\[\033[1;33m\]"    local       GREEN="\[\033[0;32m\]"    local        BLUE="\[\033[1;34m\]"    local   LIGHT_RED="\[\033[1;31m\]"    local LIGHT_GREEN="\[\033[1;32m\]"    local       WHITE="\[\033[1;37m\]"    local  LIGHT_GRAY="\[\033[0;37m\]"    local          NC="\[\e[0m\]"    # Detect whether the current directory is a git repository.    function is_git_repository {        git branch > /dev/null 2>&1    }    # Determine the branch/state information for this git repository.    function set_git_branch {        local state remote branch branch_pattern # keep local        if ! is_git_repository ; then            BRANCH=""            return 1        fi        # Capture the output of the "git status" command.        git_status="$(git status 2> /dev/null)"        # Set color based on clean/staged/dirty.        if [[ ${git_status} =~ "working directory clean" ]]; then            state="${GREEN}"        elif [[ ${git_status} =~ "Changes to be committed" ]]; then            state="${YELLOW}"        else            state="${LIGHT_RED}"        fi        # Set arrow icon based on status against remote.        remote_pattern="# Your branch is (ahead|behind)+ "        if [[ ${git_status} =~ ${remote_pattern} ]]; then            if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then                remote="↑"            else                remote="↓"            fi        else            remote=""        fi        diverge_pattern="# Your branch and (.*) have diverged"        if [[ ${git_status} =~ ${diverge_pattern} ]]; then            remote="↕"        fi      # Get the name of the branch.        branch_pattern="^(# )?On branch ([^${IFS}]*)"        if [[ ${git_status} =~ ${branch_pattern} ]]; then            branch=${BASH_REMATCH[2]}        fi      # Set the final branch string.      BRANCH="${state}(${branch})${remote}${NC} "    }    # Return the prompt symbol to use, colorized based on the return value of the    # previous command.    function set_prompt_symbol () {        if test $LAST_CMD_EXIT_CODE -eq 0 ; then            PROMPT_SYMBOL="\$"        else            PROMPT_SYMBOL="${LIGHT_RED}\$${NC}"        fi    }    # Determine active Python virtualenv details.    function set_virtualenv () {      if test -z "$VIRTUAL_ENV" ; then          PYTHON_VIRTUALENV=""      else          PYTHON_VIRTUALENV="${BLUE}[`basename \"$VIRTUAL_ENV\"`]${NC} "      fi    }    # keep variables local to not pollute global namespace.  bash is a rash    local PYTHON_VIRTUALENV BRANCH PROMPT_SYMBOL    set_prompt_symbol $?    # Set PROMPT_SYMBOL first so we don't lose the return value of the last command.    set_virtualenv    set_git_branch    # prompt on same line as info    # add \u@\h for the hostname    PS1="${GREEN}\u@\h${NC} ${PYTHON_VIRTUALENV}${BRANCH}${YELLOW}\w${NC} ${PROMPT_SYMBOL} "}# Tell bash to execute this function just before displaying its prompt.PROMPT_COMMAND=set_bash_prompt

使用:

. xxx

转载地址:http://qccqi.baihongyu.com/

你可能感兴趣的文章
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
DB2快速创建测试库
查看>>
SD卡驱动分析--基于高通平台
查看>>
[图文] Seata AT 模式分布式事务源码分析
查看>>
pm 源码分析
查看>>
kmsg_dump
查看>>
Getting a Result from an Activity
查看>>
Java多态性理解
查看>>
git学习网站
查看>>
JavaScript 学习网站
查看>>
cocos2dx java调用c++ -- 字符串传递
查看>>
CCScaleTo与CCScaleBy比较
查看>>
cocos2dx CCObject引用计数,内存释放分析(1)
查看>>
cocos2dx2.X 编译时,传递编译选项
查看>>