-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdot_bash_prompt
More file actions
102 lines (87 loc) · 2.54 KB
/
dot_bash_prompt
File metadata and controls
102 lines (87 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#
# Colorized prompt bash prompt with goodies
# from https://github.com/bitprophet/dotfiles/blob/master/.bash_prompt
#
# Color codes
RED='\[\033[01;31m\]'
GREEN='\[\033[01;32m\]'
YELLOW='\[\033[01;33m\]'
BLUE='\[\033[01;34m\]'
PURPLE='\[\033[01;35m\]'
CYAN='\[\033[01;36m\]'
WHITE='\[\033[01;37m\]'
NIL='\[\033[00m\]'
# Hostname styles
FULL='\H'
SHORT='\h'
# System => color/hostname map:
# UC: username color
# LC: location/cwd color
# HD: hostname display (\h vs \H)
# Defaults:
UC=$GREEN
LC=$BLUE
HD=$SHORT
HOST=`hostname | cut -d '.' -f 1`
DOMAIN=`hostname | cut -d '.' -f 2-`
# Prompt function because PROMPT_COMMAND is awesome
function set_prompt() {
host="${UC}${HD}${NIL}"
# Special vim-tab-like shortpath (~/folder/directory/foo => ~/f/d/foo)
_pwd=`pwd | sed "s#$HOME#~#"`
if [[ $_pwd == "~" ]]; then
_dirname=$_pwd
else
_dirname=`dirname "$_pwd"`
if [[ $_dirname == "/" ]]; then
_dirname=""
fi
_dirname="$_dirname/`basename "$_pwd"`"
fi
path="${LC}${_dirname}${NIL}"
# Virtualenv
_venv=`basename "$VIRTUAL_ENV"`
venv="" # need this to clear it when we leave a venv
if [[ -n $_venv ]]; then
venv=" ${NIL}{${PURPLE}${_venv}${NIL}}"
fi
# Git branch / dirtiness
# Dirtiness cribbed from:
# http://henrik.nyh.se/2008/12/git-dirty-prompt#comment-8325834
if git update-index -q --refresh 2>/dev/null; git diff-index --quiet --cached HEAD --ignore-submodules -- 2>/dev/null && git diff-files --quiet --ignore-submodules 2>/dev/null
then dirty=""
else
dirty="${RED}*${NIL}"
fi
_branch=$(git symbolic-ref HEAD 2>/dev/null)
_branch=${_branch#refs/heads/} # apparently faster than sed
branch="" # need this to clear it when we leave a repo
if [[ -n $_branch ]]; then
branch=" ${NIL}[${PURPLE}${_branch}${dirty}${NIL}]"
fi
# Dollar/pound sign
#end="\n${LC}\$${NIL} "
end="${LC}\$${NIL} "
# Time (useful when catting logs)
time="[${GREEN}$(date +"%R")${NIL}]"
# user
user="${CYAN}${USER}${NIL}"
# include host in terminal title only if not local host
if [[ -n $SSH_CLIENT ]]; then
shorthost="${HOST}:"
else
shorthost=""
fi
# If this is an xterm set the title to host:dir
case "$TERM" in
xterm*|rxvt*)
title="\[\e]0;${shorthost}${_dirname}\a\]"
;;
*)
title=""
;;
esac
# Put it all together
export PS1="${title}\n${time} ${user}@${host}:${path}${branch}${venv} ${end}"
}
export PROMPT_COMMAND=set_prompt