Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ANSI CODES - SEPARATE MULTIPLE VALUES WITH ;
- #
- # 0 reset 4 underline
- # 1 bold 7 inverse
- #
- # FG BG COLOR FG BG COLOR
- # 30 40 black 34 44 blue
- # 31 41 red 35 45 magenta
- # 32 42 green 36 46 cyan
- # 33 43 yellow 37 47 white
- if [[ ! "${prompt_colors[@]}" ]]; then
- prompt_colors=(
- "1;31" # information color
- "1;30" # bracket color
- "31" # error color
- )
- if [[ "$SSH_TTY" ]]; then
- # connected via ssh
- prompt_colors[1]="1;33"
- elif [[ "$USER" == "root" ]]; then
- # logged in as root
- prompt_colors[1]="1;44"
- fi
- fi
- # Inside a prompt function, run this alias to setup local $c0-$c9 color vars.
- alias prompt_getcolors='prompt_colors[9]=; local i; for i in ${!prompt_colors[@]}; do local c$i="\[\e[0;${prompt_colors[$i]}m\]"; done'
- # Git status.
- function prompt_git() {
- prompt_getcolors
- local status output flags
- status="$(git status 2>/dev/null)"
- [[ $? != 0 ]] && return;
- output="$(echo "$status" | awk '/# Initial commit/ {print "(init)"}')"
- [[ "$output" ]] || output="$(echo "$status" | awk '/# On branch/ {print $4}')"
- [[ "$output" ]] || output="$(git branch | perl -ne '/^\* (.*)/ && print $1')"
- flags="$(
- echo "$status" | awk 'BEGIN {r=""} \
- /^# Changes to be committed:$/ {r=r "+"}\
- /^# Changes not staged for commit:$/ {r=r "!"}\
- /^# Untracked files:$/ {r=r "?"}\
- END {print r}'
- )"
- if [[ "$flags" ]]; then
- output="$output$c1:$c0$flags"
- fi
- echo "$c1-$c0$output$c1$c9"
- }
- # Maintain a per-execution call stack.
- prompt_stack=()
- trap 'prompt_stack=("${prompt_stack[@]}" "$BASH_COMMAND")' DEBUG
- function prompt_command() {
- local exit_code=$?
- # If the first command in the stack is prompt_command, no command was run.
- # Set exit_code to 0 and reset the stack.
- [[ "${prompt_stack[0]}" == "prompt_command" ]] && exit_code=0
- prompt_stack=()
- # Manually load z here, after $? is checked, to keep $? from being clobbered.
- [[ "$(type -t _z)" ]] && _z --add "$(pwd -P 2>/dev/null)" 2>/dev/null
- # While the simple_prompt environment var is set, disable the awesome prompt.
- [[ "$simple_prompt" ]] && PS1='\n$ ' && return
- prompt_getcolors
- PS1="\n"
- # misc: [cmd#]
- #PS1="$PS1$c1[$c0#\#$c1]$c9"
- # name: user@host:path
- PS1="$PS1\[\033[0;36m\]\u$c1@\[\033[0;36m\]\h$c1:\[\033[0;37m\]\w$c9"
- # git: [branch:flags]
- PS1="$PS1$(prompt_git)"
- PS1="$PS1 $c0\$\[\033[0;37m\] "
- }
- PROMPT_COMMAND="prompt_command"
Advertisement
Add Comment
Please, Sign In to add comment