Last active
August 29, 2015 14:05
-
-
Save meoow/4cb500228c8467de39a5 to your computer and use it in GitHub Desktop.
Custom PS1 prompt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if ((psi==1));then | |
PS1='$( | |
exitstatus=$? | |
if ((exitstatus==0));then | |
exitstatus='' | |
fi | |
predots="" | |
postdots="" | |
extrachars=6 | |
if [[ "$PWD" =~ ^$HOME ]];then | |
pwd=${PWD/$HOME/\~} | |
else | |
pwd=$PWD | |
fi | |
if [[ -z $COLUMNS ]];then | |
if type -P tput >/dev/null;then | |
COLUMNS=$(tput cols) | |
else | |
COLUMNS=80 | |
fi | |
fi | |
(( PATHLEN=COLUMNS-${#USER}-extrachars-${#exitstatus} )) | |
if (( PATHLEN>=1 )) && (( ${#pwd}>PATHLEN ));then | |
DIR=${pwd/*\/} | |
if (( ${#DIR}>PATHLEN ));then | |
postdots=... | |
pwd="${DIR:0:$(( PATHLEN-3 ))}" | |
else | |
predots=... | |
pwd="${pwd:$(( ${#pwd}-PATHLEN+3 ))}" | |
fi | |
fi | |
if ((EUID>0));then | |
promptchar=$ | |
else | |
promptchar=# | |
fi | |
printf '\''\[\e[1;31m\]%s\[\e[0m\]'\'' $exitstatus | |
printf '\''\[\e[0m\][ \[\e[1m\]%s\[\e[0m\]: '\'' "$USER" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$predots" | |
printf %s "$pwd" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$postdots" | |
printf '\'' ]\n\[\e[1m\]%s\[\e[0m\] '\'' $promptchar | |
)' | |
elif ((psi==2));then | |
# style: | |
# meow: .../meoow/nodefinder/example1 $ | |
# meow: aaaaaaaaaaaaaaaaaaaaaaaaaa... $ | |
PS1='$( | |
exitstatus=$? | |
if ((exitstatus==0));then | |
exitstatus='' | |
fi | |
predots="" | |
postdots="" | |
extrachars=7 | |
if [[ "$PWD" =~ ^$HOME ]];then | |
pwd=${PWD/$HOME/\~} | |
else | |
pwd=$PWD | |
fi | |
if [[ -z $COLUMNS ]];then | |
if type -P tput >/dev/null;then | |
COLUMNS=$(tput cols) | |
else | |
COLUMNS=80 | |
fi | |
fi | |
(( PATHLEN=COLUMNS/2-${#USER}-extrachars-${#exitstatus} )) | |
if (( PATHLEN>=1 )) && (( ${#pwd}>PATHLEN ));then | |
DIR=${pwd/*\/} | |
if (( ${#DIR}>PATHLEN ));then | |
postdots=... | |
pwd="${DIR:0:$(( PATHLEN-3 ))}" | |
else | |
predots=... | |
pwd="${pwd:$(( ${#pwd}-PATHLEN+3 ))}" | |
fi | |
fi | |
if ((EUID>0));then | |
promptchar=$ | |
else | |
promptchar=# | |
fi | |
printf '\''\[\e[1;31m\]%s\[\e[0m\]'\'' $exitstatus | |
printf '\''\[\e[0m\] \[\e[1m\]%s\[\e[0m\]: '\'' "$USER" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$predots" | |
printf %s "$pwd" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$postdots" | |
printf '\'' \[\e[1m\]%s\[\e[0m\] '\'' $promptchar | |
)' | |
elif ((psi==3));then | |
# style: | |
# [ meow@mmm-air: ...huber__/go/src/github.com/meoow/nodefinder/example1 ] | |
# $ | |
# [ meow@mmm-air: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... ] | |
# $ | |
PS1='$( | |
exitstatus=$? | |
if ((exitstatus==0));then | |
exitstatus='' | |
fi | |
predots="" | |
postdots="" | |
extrachars=7 | |
if [[ "$PWD" =~ ^$HOME ]];then | |
pwd=${PWD/$HOME/\~} | |
else | |
pwd=$PWD | |
fi | |
if [[ -z $COLUMNS ]];then | |
if type -P tput >/dev/null;then | |
COLUMNS=$(tput cols) | |
else | |
COLUMNS=80 | |
fi | |
fi | |
(( PATHLEN=COLUMNS-${#USER}-${#HOSTNAME}-extrachars-${#exitstatus} )) | |
if (( PATHLEN>=1 )) && (( ${#pwd}>PATHLEN ));then | |
DIR=${pwd/*\/} | |
if (( ${#DIR}>PATHLEN ));then | |
postdots=... | |
pwd="${DIR:0:$(( PATHLEN-3 ))}" | |
else | |
predots=... | |
pwd="${pwd:$(( ${#pwd}-PATHLEN+3 ))}" | |
fi | |
fi | |
if ((EUID>0));then | |
promptchar=$ | |
else | |
promptchar=# | |
fi | |
printf '\''\[\e[1;31m\]%s\[\e[0m\]'\'' $exitstatus | |
printf '\''\[\e[0m\][ \[\e[1m\]%s\[\e[0m\]@%s: '\'' "$USER" "$HOSTNAME" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$predots" | |
printf %s "$pwd" | |
printf '\''\[\e[0;31m\]%s\[\e[0m\]'\'' "$postdots" | |
printf '\'' ]\n\[\e[1m\]%s\[\e[0m\] '\'' $promptchar | |
)' | |
elif ((psi==4));then | |
PS1='$( | |
exitstatus=$? | |
if ((exitstatus==0));then | |
exitstatus='' | |
fi | |
extrachars=6 | |
if [[ "$PWD" =~ ^$HOME ]];then | |
pwd=${PWD/$HOME/\~} | |
else | |
pwd=$PWD | |
fi | |
if [[ -z $COLUMNS ]];then | |
if type -P tput >/dev/null;then | |
COLUMNS=$(tput cols) | |
else | |
COLUMNS=80 | |
fi | |
fi | |
(( PATHLEN=COLUMNS-${#USER}-extrachars-${#exitstatus} )) | |
pwdlen=${#pwd} | |
if (( pwdlen>PATHLEN ));then | |
newdirlist=() | |
IFS=/ pwdlist=($pwd) | |
for (( i=0; i<${#pwdlist[@]}; i++ ));do | |
p=${pwdlist[i]} | |
plen=${#p} | |
if (( pwdlen<=PATHLEN )) || (( plen<2 ));then | |
newdirlist+=(0 "$p") | |
else | |
if (( (pwdlen-PATHLEN)>plen ));then | |
(( pwdlen-=(${#p}-1 ))) | |
newdirlist+=(31 ${p:0:1}) | |
else | |
(( endlen=plen-(pwdlen-PATHLEN) )) | |
p=${p:0:$endlen} | |
newdirlist+=(31 "$p") | |
(( pwdlen=PATHLEN )) | |
fi | |
fi | |
done | |
else | |
newdirlist=(0 "$pwd") | |
fi | |
if ((EUID>0));then | |
promptchar=$ | |
else | |
promptchar=# | |
fi | |
printf '\''\[\e[1;31m\]%s\[\e[0m\]'\'' $exitstatus | |
printf '\''\[\e[0m\][ \[\e[1m\]%s\[\e[0m\]: '\'' "$USER" | |
printf '\''\[\e[%dm\]%s\[\e[0m\]/'\'' "${newdirlist[@]}" | |
printf '\''\b ]\n\[\e[1m\]%s\[\e[0m\] '\'' $promptchar | |
)' | |
elif ((psi==5));then | |
PS1='$( | |
exitstatus=$? | |
if ((exitstatus==0));then | |
exitstatus='' | |
fi | |
extrachars=7 | |
if [[ "$PWD" =~ ^$HOME ]];then | |
pwd=${PWD/$HOME/\~} | |
else | |
pwd=$PWD | |
fi | |
if [[ -z $COLUMNS ]];then | |
if type -P tput >/dev/null;then | |
COLUMNS=$(tput cols) | |
else | |
COLUMNS=80 | |
fi | |
fi | |
(( PATHLEN=COLUMNS/2-${#USER}-extrachars-${#exitstatus} )) | |
pwdlen=${#pwd} | |
newdirlist=() | |
if (( pwdlen>PATHLEN ));then | |
IFS=/ pwdlist=($pwd) | |
for (( i=0; i<${#pwdlist[@]}; i++ ));do | |
p=${pwdlist[i]} | |
plen=${#p} | |
if (( pwdlen<=PATHLEN )) || (( plen<2 ));then | |
newdirlist+=(0 "$p") | |
else | |
if ((( pwdlen-PATHLEN)>plen ));then | |
(( pwdlen-=(${#p}-1) )) | |
newdirlist+=(31 ${p:0:1}) | |
else | |
(( endlen=plen-(pwdlen-PATHLEN) )) | |
p=${p:0:$endlen} | |
newdirlist+=(31 "$p") | |
(( pwdlen=PATHLEN )) | |
fi | |
fi | |
done | |
else | |
newdirlist=(0 "$pwd") | |
fi | |
if ((EUID>0));then | |
promptchar=$ | |
else | |
promptchar=# | |
fi | |
printf '\''\[\e[1;31m\]%s\[\e[0m\]'\'' $exitstatus | |
printf '\''\[\e[0m\] \[\e[1m\]%s\[\e[0m\]: '\'' "$USER" | |
printf '\''\[\e[%dm\]%s\[\e[0m\]/'\'' "${newdirlist[@]}" | |
printf '\''\b \[\e[1m\]%s\[\e[0m\] '\'' $promptchar | |
)' | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment