Línea PS1 con twig y colors actuales git

Aquí está mi PS1 actual

export PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' 

¿Cómo puedo mostrar la twig actual en un color diferente?

Puede envolver la parte que desea en color con lo siguiente:

\e[0;32m – establece el color (en este caso, a verde)

\e[m – restablece el color al valor pnetworkingeterminado

Por ejemplo, esto establece el post al último token de la ruta actual, en verde, seguido de $ en el color pnetworkingeterminado:

 export PS1='\e[0;32m\w\e[m $' 

Otros colors están disponibles también. Eche un vistazo a este artículo bajo coloración para get una list completa de alternativas.

Aquí está, parte por parte (y no 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 

Se ve así (con mi propia paleta de terminales):

indicador de color

Además, mira esto y este artículo

Aquí está mi línea de 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$ 

texto alternativo

 function pc { [ -d .git ] && git name-rev --name-only @ } PS1='\e];\s\a\n\e[33m\w \e[36m$(pc)\e[m\n$ ' 

ps1

Fuente

Esta es mi solución PS1

Se ve muy bien en un mac con el tema Novela. Lo siento, pero mi sangría fue mordida un poco. Hack hasta que te guste.

 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" 

Si está desprotegido en una sucursal, obtiene el nombre de la sucursal.

Si estás en un proyecto de git recién iniciado, simplemente obtienes '@'

Si no tiene cabeza, obtiene un buen nombre humano relativo a una twig o label, con una '@' precediendo al nombre.

Si no tienes cabeza y no eres antecesor de alguna twig o label, obtienes el SHA1 corto.

Además, un '-' rojo significa un directory e índice de trabajo limpio, y un '+' rojo significa lo contrario.

_do

¡Mi súper poderoso sistema de líneas múltiples de Linux!

Ponlo en tu .bashrc o mejor: guárdalo en / etc / bash-prompt y obténgalo de tu .bashrc.
Se supone que usar tput es la forma correcta de hacer los colors.

 #!/bin/bash set_prompt() { local last_cmd=$? local txtreset='$(tput sgr0)' local txtbold='$(tput bold)' local txtblack='$(tput setaf 0)' local txtnetworking='$(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: networking for root, yellow for others if [[ $EUID == 0 ]]; then PS1+="\[$txtnetworking\]" else PS1+="\[$txtyellow\]" fi # Line 3: user@host PS1+="\u\[$txtwhite\]@\h\n" # Line 4: a networking "✗" or a green "✓" and the error number if [[ $last_cmd == 0 ]]; then PS1+="\[$txtgreen\]$checkmark \[$txtwhite\](0)" else PS1+="\[$txtnetworking\]$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' 

Solo invoque tput con los parameters apropiados. Consulte las tput(1) y terminfo(5) .

Eche un vistazo a liquidprompt:

https://github.com/nojhan/liquidprompt

Tal vez un poco demasiado pesado para sus requisitos, pero puede cambiar las características configurando

LP_ENABLE_...=0

Vea la documentation en la página de arriba.

Aquí hay una solución de windows / cygwin / bash.
Agregue lo siguiente a su file ~ / .bashrc.
xxx es la location de su repository local de 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\$ " 

Aquí está el mío

 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\$ " 

para un estado más complicado de git, puedes usar un script más grande

Para mi Mac con el tema Homebrew, esto funciona realmente bien. Completamente depurado y muy rápido, y completamente autónomo

 # Color prompt for git reset=$(tput sgr0) boldgreen=$(tput setaf 2)$(tput bold) cyan=$(tput sgr0)$(tput setaf 6) boldnetworking=$(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\]::\[$boldnetworking\]\h \[$cyan\]{\[$boldwhite\].../\W\[$cyan\]}\[$reset\]$GIT_STATUS\[$reset\]$PROMPT_CHAR " 

Esto es lo que parece: Mac + Homebrew + Color Git Prompt

Si desea tener la ruta completa (o eliminar la … /), simplemente cambie la -W a -w (y elimine la … /).