From 1c2ddd8c5b49bc44d273bceb678a670176092f7b Mon Sep 17 00:00:00 2001 From: Hactarus Date: Sun, 18 Dec 2016 12:51:16 +0100 Subject: [PATCH] Add PS1 setup --- .bash_aliases | 3 + .bash_ps | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++ .bashrc | 9 ++- 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 .bash_ps diff --git a/.bash_aliases b/.bash_aliases index 53a52ea..868b7e8 100644 --- a/.bash_aliases +++ b/.bash_aliases @@ -7,7 +7,10 @@ if [ -x /usr/bin/dircolors ]; then alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi +alias ls='ls --color=auto' alias ll='ls -lah' alias la='ls -A' alias flip="shuf -i 0-1 -n 1 | sed -e 's/1/Pile/' -e 's/0/Face/'" alias dl="wget -r -k -T 5 -t 2 -U 'Mozilla/5.0 (X11; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0' " +alias paste="pastebin -m -n Hactar" +alias pass="tr -dc A-Za-z0-9_ < /dev/urandom | head -c 20 | xargs" diff --git a/.bash_ps b/.bash_ps new file mode 100644 index 0000000..fbe9a35 --- /dev/null +++ b/.bash_ps @@ -0,0 +1,174 @@ +# Normal Colors +Black='\e[0;30m' # Black +Red='\e[0;31m' # Red +Green='\e[0;32m' # Green +Yellow='\e[0;33m' # Yellow +Blue='\e[0;34m' # Blue +Purple='\e[0;35m' # Purple +Cyan='\e[0;36m' # Cyan +White='\e[0;37m' # White + +# Bold +BBlack='\e[1;30m' # Black +BRed='\e[1;31m' # Red +BGreen='\e[1;32m' # Green +BYellow='\e[1;33m' # Yellow +BBlue='\e[1;34m' # Blue +BPurple='\e[1;35m' # Purple +BCyan='\e[1;36m' # Cyan +BWhite='\e[1;37m' # White + +# Background +On_Black='\e[40m' # Black +On_Red='\e[41m' # Red +On_Green='\e[42m' # Green +On_Yellow='\e[43m' # Yellow +On_Blue='\e[44m' # Blue +On_Purple='\e[45m' # Purple +On_Cyan='\e[46m' # Cyan +On_White='\e[47m' # White + +NC="\e[m" # Color Reset +#------------------------------------------------------------- +# Shell Prompt - for many examples, see: +# http://www.debian-administration.org/articles/205 +# http://www.askapache.com/linux/bash-power-prompt.html +# http://tldp.org/HOWTO/Bash-Prompt-HOWTO +# https://github.com/nojhan/liquidprompt +#------------------------------------------------------------- +# Current Format: [TIME USER@HOST PWD] > +# TIME: +# Green == machine load is low +# Orange == machine load is medium +# Red == machine load is high +# ALERT == machine load is very high +# USER: +# Cyan == normal user +# Orange == SU to user +# Red == root +# HOST: +# Cyan == local session +# Green == secured remote connection (via ssh) +# Red == unsecured remote connection +# PWD: +# Green == more than 10% free disk space +# Orange == less than 10% free disk space +# ALERT == less than 5% free disk space +# Red == current user does not have write privileges +# Cyan == current filesystem is size zero (like /proc) +# >: +# White == no background or suspended jobs in this shell +# Cyan == at least one background job in this shell +# Orange == at least one suspended job in this shell +# +# Command is added to the history file each time you hit enter, +# so it's available to all shells (using 'history -a'). + + +# Test connection type: +if [ -n "${SSH_CONNECTION}" ]; then + CNX="\e[3"$(hostname | md5sum | cut -c 1)"m" + #CNX="\e["$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')"m" + #CNX=${Green} # Connected on remote machine, via ssh (good). +elif [[ "${DISPLAY%%:0*}" != "" ]]; then + CNX=${ALERT} # Connected on remote machine, not via ssh (bad). +else + CNX=${BCyan} # Connected on local machine. +fi + +# Test user type: +if [[ ${USER} == "root" ]]; then + SU=${Red} # User is root. +elif [[ ${USER} != $(logname) ]]; then + SU=${BRed} # User is not login user. +else + SU=${BCyan} # User is normal (well ... most of us are). +fi + + + +NCPU=$(grep -c 'processor' /proc/cpuinfo) # Number of CPUs +SLOAD=$(( 100*${NCPU} )) # Small load +MLOAD=$(( 200*${NCPU} )) # Medium load +XLOAD=$(( 400*${NCPU} )) # Xlarge load + + +# Returns system load as percentage, i.e., '40' rather than '0.40)'. +function load() +{ + local SYSLOAD=$(cut -d " " -f1 /proc/loadavg | tr -d '.') + # System load of the current host. + echo $((10#$SYSLOAD)) # Convert to decimal. +} + +# Returns a color indicating system load. +function load_color() +{ + local SYSLOAD=$(load) + if [ ${SYSLOAD} -gt ${XLOAD} ]; then + echo -en ${ALERT} + elif [ ${SYSLOAD} -gt ${MLOAD} ]; then + echo -en ${Red} + elif [ ${SYSLOAD} -gt ${SLOAD} ]; then + echo -en ${BRed} + else + echo -en ${Green} + fi +} + +# Returns a color according to free disk space in $PWD. +function disk_color() +{ + if [ ! -w "${PWD}" ] ; then + echo -en ${Red} + # No 'write' privilege in the current directory. + elif [ -s "${PWD}" ] ; then + local used=$(command df -P "$PWD" | + awk 'END {print $5} {sub(/%/,"")}') + if [ ${used} -gt 95 ]; then + echo -en ${ALERT} # Disk almost full (>95%). + elif [ ${used} -gt 90 ]; then + echo -en ${BRed} # Free disk space almost gone. + else + echo -en ${Green} # Free disk space is ok. + fi + else + echo -en ${Cyan} + # Current directory is size '0' (like /proc, /sys etc). + fi +} + +# Returns a color according to running/suspended jobs. +function job_color() +{ + if [ $(jobs -s | wc -l) -gt "0" ]; then + echo -en ${BRed} + elif [ $(jobs -r | wc -l) -gt "0" ] ; then + echo -en ${BCyan} + fi +} + +# Adds some text in the terminal frame (if applicable). + + +# Now we construct the prompt. +PROMPT_COMMAND="history -a" +case ${TERM} in + *term | rxvt | linux) + PS1="\[\$(load_color)\][\A\[${NC}\] " + # Time of day (with load info): + PS1="\[\$(load_color)\][\A\[${NC}\] " + # User@Host (with connection type info): + PS1=${PS1}"\[${SU}\]\u\[${NC}\]@\[${CNX}\]\h\[${NC}\] " + # PWD (with 'disk space' info): + PS1=${PS1}"\[\$(disk_color)\]\W]\[${NC}\] " + # Prompt (with 'job' info): + PS1=${PS1}"\[\$(job_color)\]>\[${NC}\] " + # Set title of current xterm: + PS1=${PS1}"\[\e]0;[\u@\h] \w\a\]" + ;; + *) + PS1="(\A \u@\h \W) > " # --> PS1="(\A \u@\h \w) > " + # --> Shows full pathname of current dir. + ;; +esac diff --git a/.bashrc b/.bashrc index 0e35b91..2e12e1d 100644 --- a/.bashrc +++ b/.bashrc @@ -1,10 +1,17 @@ +[ -z "$PS1" ] && return + export PATH=$PATH:~/bin export VISUAL=/bin/nano export EDITOR=/bin/nano +export CLASSPATH=$CLASSPATH:/opt:/opt/autoser +export VDPAU_TRACE=1 + if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi - +if [ -f ~/.bash_ps ]; then + . ~/.bash_ps +fi