Git 현재 분기 및 색상이있는 PS1 라인
내 현재 PS1은 다음과 같습니다.
export PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
현재 분기를 다른 색상으로 표시하려면 어떻게해야합니까?
다음과 같이 원하는 부분을 색상으로 감쌀 수 있습니다.
\e[0;32m
-색상 설정 (이 경우 녹색)
\e[m
-색상을 기본값으로 다시 설정
예를 들어, 다음은 현재 경로의 마지막 토큰 인 녹색과 $
기본 색상으로 프롬프트를 설정합니다 .
export PS1='\e[0;32m\w\e[m $'
다른 색상도 사용할 수 있습니다. 포괄적 인 대안 목록을 보려면 색상 화 아래에 있는 이 기사를 참조하십시오 .
다음은 부분별로입니다 (Ruby 제외).
function color_my_prompt {
local __user_and_host="\[\033[01;32m\]\u@\h"
local __cur_location="\[\033[01;34m\]\w"
local __git_branch_color="\[\033[31m\]"
#local __git_branch="\`ruby -e \"print (%x{git branch 2> /dev/null}.grep(/^\*/).first || '').gsub(/^\* (.+)$/, '(\1) ')\"\`"
local __git_branch='`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\ /`'
local __prompt_tail="\[\033[35m\]$"
local __last_color="\[\033[00m\]"
export PS1="$__user_and_host $__cur_location $__git_branch_color$__git_branch$__prompt_tail$__last_color "
}
color_my_prompt
다음과 같이 보입니다 (내 자신의 터미널 팔레트 포함).
내 PS1 라인은 다음과 같습니다.
\n\[\e[1;37m\]|-- \[\e[1;32m\]\u\[\e[0;39m\]@\[\e[1;36m\]\h\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]--|\[\e[0;39m\]\n$
function pc {
[ -d .git ] && git name-rev --name-only @
}
PS1='\e];\s\a\n\e[33m\w \e[36m$(pc)\e[m\n$ '
이것은 내 PS1 솔루션입니다.
Novel 테마가있는 Mac에서 멋지게 보입니다. 미안하지만 들여 쓰기가 약간 엉망이되었습니다. 당신이 그것을 좋아할 때까지 해킹하십시오.
function we_are_in_git_work_tree {
git rev-parse --is-inside-work-tree &> /dev/null
}
function parse_git_branch {
if we_are_in_git_work_tree
then
local BR=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD 2> /dev/null)
if [ "$BR" == HEAD ]
then
local NM=$(git name-rev --name-only HEAD 2> /dev/null)
if [ "$NM" != undefined ]
then echo -n "@$NM"
else git rev-parse --short HEAD 2> /dev/null
fi
else
echo -n $BR
fi
fi
}
function parse_git_status {
if we_are_in_git_work_tree
then
local ST=$(git status --short 2> /dev/null)
if [ -n "$ST" ]
then echo -n " + "
else echo -n " - "
fi
fi
}
function pwd_depth_limit_2 {
if [ "$PWD" = "$HOME" ]
then echo -n "~"
else pwd | sed -e "s|.*/\(.*/.*\)|\1|"
fi
}
COLBROWN="\[\033[1;33m\]"
COLRED="\[\033[1;31m\]"
COLCLEAR="\[\033[0m\]"
# Export all these for subshells
export -f parse_git_branch parse_git_status we_are_in_git_work_tree pwd_depth_limit_2
export PS1="$COLRED<$COLBROWN \$(pwd_depth_limit_2)$COLRED\$(parse_git_status)$COLBROWN\$(parse_git_branch) $COLRED>$COLCLEAR "
export TERM="xterm-color"
지점에서 체크 아웃 한 경우 지점 이름을 얻습니다.
방금 초기화 된 Git 프로젝트에있는 경우 '@'만 표시됩니다.
머리가없는 경우에는 이름 앞에 '@'가있는 일부 분기 또는 태그와 관련된 멋진 사람 이름을 얻게됩니다.
헤드리스이고 일부 브랜치 또는 태그의 조상이 아니라면 짧은 SHA1을 얻습니다.
또한 빨간색 '-'는 깨끗한 작업 디렉토리 및 색인을 의미하고 빨간색 '+'는 그 반대를 의미합니다.
내 강력한 멀티 라인 Linux 프롬프트!
.bashrc 또는 더 나은 위치에 넣으십시오. / etc / bash-prompt에 저장하고 .bashrc에서 소스를 얻으십시오.
tput을 사용하는 것이 색상을 수행하는 올바른 방법입니다.
#!/bin/bash
set_prompt()
{
local last_cmd=$?
local txtreset='$(tput sgr0)'
local txtbold='$(tput bold)'
local txtblack='$(tput setaf 0)'
local txtred='$(tput setaf 1)'
local txtgreen='$(tput setaf 2)'
local txtyellow='$(tput setaf 3)'
local txtblue='$(tput setaf 4)'
local txtpurple='$(tput setaf 5)'
local txtcyan='$(tput setaf 6)'
local txtwhite='$(tput setaf 7)'
# unicode "✗"
local fancyx='\342\234\227'
# unicode "✓"
local checkmark='\342\234\223'
# Line 1: Full date + full time (24h)
# Line 2: current path
PS1="\[$txtbold\]\[$txtwhite\]\n\D{%A %d %B %Y %H:%M:%S}\n\[$txtgreen\]\w\n"
# User color: red for root, yellow for others
if [[ $EUID == 0 ]]; then
PS1+="\[$txtred\]"
else
PS1+="\[$txtyellow\]"
fi
# Line 3: user@host
PS1+="\u\[$txtwhite\]@\h\n"
# Line 4: a red "✗" or a green "✓" and the error number
if [[ $last_cmd == 0 ]]; then
PS1+="\[$txtgreen\]$checkmark \[$txtwhite\](0)"
else
PS1+="\[$txtred\]$fancyx \[$txtwhite\]($last_cmd)"
fi
# Line 4: green git branch
PS1+="\[$txtgreen\]$(__git_ps1 ' (%s)')\[$txtwhite\]"
# Line 4: good old prompt, $ for user, # for root
PS1+=" \\$ "
}
PROMPT_COMMAND='set_prompt'
For my Mac with the Homebrew theme, this works really well. Fully debugged and very fast, and completely self-contained. BONUS: Smart enough to ONLY show a git branch as part of the prompt when you're actually in a git repo! :)
# Color prompt for git
reset=$(tput sgr0)
boldgreen=$(tput setaf 2)$(tput bold)
cyan=$(tput sgr0)$(tput setaf 6)
boldred=$(tput setaf 1)$(tput bold)
boldwhite=$(tput setaf 7)$(tput bold)
boldyellow=$(tput setaf 3)$(tput bold)
PARENCLR=$'\001\e[0;36m\002'
BRANCHCLR=$'\001\e[1;33m\002'
alias branchname="git branch 2>/dev/null | sed -ne 's/^* \(.*\)/ ${PARENCLR}(${BRANCHCLR}\1${PARENCLR}\)/p'"
GIT_STATUS='$(branchname)'
PROMPT_CHAR="\$"
PS1="\[$boldgreen\]\u\[$cyan\]::\[$boldred\]\h \[$cyan\]{\[$boldwhite\].../\W\[$cyan\]}\[$reset\]$GIT_STATUS\[$reset\]$PROMPT_CHAR "
Here's what it looks like: Mac + Homebrew + Color Git Prompt
If you want to have the full path (or remove the .../), then just change the -W to -w (and remove the .../).
Just invoke tput
with the appropriate parameters. See the tput(1)
and terminfo(5)
man pages.
Take a look at liquidprompt:
https://github.com/nojhan/liquidprompt
Maybe a bit too heavy for your requirements, but you can switch features off by setting
LP_ENABLE_...=0
See the documentation on above page.
git
구문 분석 기능 을 추가하고 약간 다른 간격을 사용 하는 @cmcginty 프롬프트의 수정 된 버전 :
# So I know where I am in repos:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
# Modified from:
# https://stackoverflow.com/a/4138531/2662028
export PS1='\n\[\e[1;37m\]|-- \[\e[1;32m\]\u\[\e[0;39m\]@\[\e[1;36m\]\h\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(parse_git_branch " (%s)")\[\e[0;39m\] \[\e[1;37m\]--|\[\e[0;39m\]\n\$ '
이것은 또한 \$
대신 프롬프트에서 사용하므로 루트 일 때 $
얻을 #
수 있습니다.
여기 내 꺼야
export PS1="\n\[\033[1;30m\][$$:$PPID - \j:\!\[\033[1;30m\]]\[\033[0;36m\] \T \
\[\033[1;30m\][\[\033[1;34m\]\u@\H\[\033[1;30m\]:\[\033[0;37m\]${SSH_TTY:-o} \
\[\033[0;32m\]+${SHLVL}\[\033[1;30m\]] \[\033[1;37m\]\w\[\033[0;37m\]\[\033[1;34m\]\$(__git_ps1 \" (%s)\") \[\033[0;37m\] \n\$ "
다음은 Windows / Cygwin / Bash 솔루션입니다.
~/.bashrc
파일에 다음을 추가 하십시오.
xxx는 로컬 Git 저장소의 위치입니다.
GetBranch()
{
cat /cygdrive/c/xxx/.git/HEAD | sed 's+^ref: refs/heads/++'
}
export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[36m\]\$(GetBranch) \[\e[33m\]\w \[\e[0m\] \n\$ "
Git의 더 복잡한 상태를 위해 더 큰 스크립트를 사용할 수 있습니다 .
참조 URL : https://stackoverflow.com/questions/4133904/ps1-line-with-git-current-branch-and-colors
'development' 카테고리의 다른 글
Android 자동 가로 스크롤 TextView (0) | 2020.12.31 |
---|---|
모델을 만들려고 할 때 'rails generate'명령이 중단됨 (0) | 2020.12.31 |
"잘못된 토큰"오류를 제공하는 Asp.NET Identity 2 (0) | 2020.12.31 |
안드로이드의 편집 텍스트에서 신용 카드 포맷 (0) | 2020.12.31 |
Html.TextBoxFor를 사용할 때 텍스트 상자를 읽기 전용으로 설정할 수 있습니까? (0) | 2020.12.31 |