これが私の現在の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を取得するだけです。
さらに、赤い「-」はクリーンな作業ディレクトリとインデックスを示し、赤い「+」はその反対を示します。
それを.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'
Homebrewテーマを使用したMacでは、これは非常にうまく機能します。完全にデバッグされ、非常に高速で、完全に自己完結型です。ボーナス:実際にingitリポジトリであるときに、プロンプトの一部としてgitブランチのみを表示するのに十分なスマート! :)
# 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 "
表示は次のとおりです。 Mac + Homebrew + Color Git Prompt
完全なパスを取得する(または... /を削除する)場合は、-Wを-wに変更します(および... /を削除します)。
適切なパラメーターでtput
を呼び出すだけです。 tput(1)
およびterminfo(5)
のマニュアルページを参照してください。
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\$ '
これは、プロンプトで\$
の代わりに$
を使用します。つまり、rootのときに#
を取得します。
Liquidpromptを見てください:
https://github.com/nojhan/liquidprompt
要件に対して少し重すぎるかもしれませんが、設定することで機能をオフにできます
LP_ENABLE_...=0
上記のページのドキュメントを参照してください。
これが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\$ "
これが私の
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\$ "
Gitのより複雑なステータスについては、 いくつかの大きなスクリプト を使用できます。