70 lines
1.8 KiB
Plaintext
70 lines
1.8 KiB
Plaintext
|
#!/bin/bash
|
|||
|
# shebang for syntax highlightin purposes
|
|||
|
|
|||
|
export TIME_TOGGLE=0
|
|||
|
trap '[[ $BASH_COMMAND != "$PROMPT_COMMAND" ]] && export LAST_EPOCH="$EPOCHSECONDS" && export INC_TIME=1' DEBUG
|
|||
|
|
|||
|
export TIME_TOGGLE=0
|
|||
|
|
|||
|
__get_cmd_time() {
|
|||
|
if [ $COMMAND_TIME -ge 3600 ]; then
|
|||
|
TZ=UTC printf 'took %(%Hh%Mm%Ss)T ' $COMMAND_TIME
|
|||
|
elif [ $COMMAND_TIME -ge 60 ]; then
|
|||
|
TZ=UTC printf 'took %(%Mm%Ss)T ' $COMMAND_TIME
|
|||
|
elif [ $COMMAND_TIME -ge 1 ]; then
|
|||
|
TZ=UTC printf 'took %(%Ss)T ' $COMMAND_TIME
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
__sig() {
|
|||
|
case $1 in
|
|||
|
126) printf ACCES ;;
|
|||
|
127) printf NOENT ;;
|
|||
|
129) printf HUP ;;
|
|||
|
130) printf INT ;;
|
|||
|
131) printf QUIT ;;
|
|||
|
132) printf ILL ;;
|
|||
|
133) printf TRAP ;;
|
|||
|
134) printf ABRT ;;
|
|||
|
135) printf BUS ;;
|
|||
|
136) printf FPE ;;
|
|||
|
137) printf KILL ;;
|
|||
|
138) printf USR1 ;;
|
|||
|
139) printf SEGV ;;
|
|||
|
140) printf USR2 ;;
|
|||
|
141) printf PIPE ;;
|
|||
|
142) printf ALRM ;;
|
|||
|
143) printf TERM ;;
|
|||
|
144) printf STKFLT ;;
|
|||
|
145) printf CHLD ;;
|
|||
|
146) printf CONT ;;
|
|||
|
147) printf STOP ;;
|
|||
|
148) printf TSTP ;;
|
|||
|
149) printf TTIN ;;
|
|||
|
150) printf TTOU ;;
|
|||
|
151) printf URG ;;
|
|||
|
152) printf XCPU ;;
|
|||
|
153) printf XFSZ ;;
|
|||
|
154) printf VTALRM ;;
|
|||
|
155) printf PROF ;;
|
|||
|
156) printf WINCH ;;
|
|||
|
157) printf IO ;;
|
|||
|
158) printf PWR ;;
|
|||
|
159) printf SYS ;;
|
|||
|
16[3-9]|1[7-8][0-9]|19[0-2]) printf RT$(($1-128)) ;;
|
|||
|
*) printf $1 ;;
|
|||
|
esac
|
|||
|
}
|
|||
|
|
|||
|
__prompt() {
|
|||
|
PEC=$?
|
|||
|
if [ $INC_TIME -ne 0 ]; then
|
|||
|
export PROMPT_EPOCH="$EPOCHSECONDS"
|
|||
|
export INC_TIME=0
|
|||
|
fi
|
|||
|
export COMMAND_TIME="$((PROMPT_EPOCH-LAST_EPOCH))"
|
|||
|
export PS1="$([ $PEC -ne 0 ] && printf "\[[34m\][\[[31m\]$(__sig $PEC)\[[34m\]] ")\[[1m[34m\][\[[3\$([ $(id -u) -eq 0 ] && printf 1 || printf 3)m\]\u\[[35m\]@\[[36m\]\h\[[35m\]:\[[32m\]\w\[[34m\]] \[[33m\]$(__get_cmd_time)\[[38;2;\$RANDOM;\$RANDOM;\${RANDOM}m\]\\$ \[[0m\]"
|
|||
|
}
|
|||
|
|
|||
|
export PROMPT_COMMAND=__prompt
|