You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
5.0 KiB
169 lines
5.0 KiB
#!/bin/bash
|
|
|
|
# glob filenames case-insensitively
|
|
shopt -s nocaseglob
|
|
|
|
# append history to history file, don't overwrite.
|
|
shopt -s histappend
|
|
|
|
# fix line wrap issues
|
|
shopt -s checkwinsize
|
|
|
|
# If not running interactively, don't do anything
|
|
case $- in
|
|
*i*) ;;
|
|
*) return;;
|
|
esac
|
|
|
|
# blatantly steal micah's ls aliases because they make SO MUCH SENSE omg.
|
|
alias lsa='ls -a'
|
|
alias lsl='ls -a -l'
|
|
alias lsli='lsl -i' # lsl+inodes
|
|
alias l1='ls -1'
|
|
alias llm='lsl -r -t' # lsl+ sort by modified time (lastest at bottom)
|
|
|
|
# blatantly steal micah's colorized man pages
|
|
# See: http://boredzo.org/blog/archives/2016-08-15/colorized-man-pages-understood-and-customized
|
|
# see: https://github.com/mrled/dhd/blob/800544cae0cc2f4e2b85b5dafae59babf75677fe/hbase/.bashrc
|
|
man() {
|
|
env \
|
|
LESS_TERMCAP_md=$'\e[1;36m' \
|
|
LESS_TERMCAP_me=$'\e[0m' \
|
|
LESS_TERMCAP_se=$'\e[0m' \
|
|
LESS_TERMCAP_so=$'\e[1;40;92m' \
|
|
LESS_TERMCAP_ue=$'\e[0m' \
|
|
LESS_TERMCAP_us=$'\e[1;32m' \
|
|
man "$@"
|
|
}
|
|
|
|
# history control variables
|
|
export HISTCONTROL=ignoreboth
|
|
export HISTSIZE="INFINITE"
|
|
export HISTFILESIZE=5000
|
|
export HISTCONTROL="ignorespace"
|
|
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
|
|
|
|
|
|
|
|
# If set, the pattern "**" used in a pathname expansion context will
|
|
# match all files and zero or more directories and subdirectories.
|
|
#shopt -s globstar
|
|
|
|
# make less more friendly for non-text input files, see lesspipe(1)
|
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
|
|
|
# set variable identifying the chroot you work in (used in the prompt below)
|
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
|
debian_chroot=$(cat /etc/debian_chroot)
|
|
fi
|
|
|
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
|
case "$TERM" in
|
|
xterm-color) color_prompt=yes;;
|
|
esac
|
|
|
|
force_color_prompt=yes
|
|
|
|
if [ -n "$force_color_prompt" ]; then
|
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
|
# We have color support; assume it's compliant with Ecma-48
|
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
|
# a case would tend to support setf rather than setaf.)
|
|
color_prompt=yes
|
|
else
|
|
color_prompt=
|
|
fi
|
|
fi
|
|
|
|
if [ "$color_prompt" = yes ]; then
|
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
|
else
|
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
|
fi
|
|
unset color_prompt force_color_prompt
|
|
|
|
# If this is an xterm set the title to user@host:dir
|
|
case "$TERM" in
|
|
xterm*|rxvt*)
|
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
# enable color support of ls and also add handy aliases
|
|
if [ -x /usr/bin/dircolors ]; then
|
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
|
alias ls='ls --color=auto'
|
|
#alias dir='dir --color=auto'
|
|
#alias vdir='vdir --color=auto'
|
|
|
|
alias grep='grep --color=auto'
|
|
alias fgrep='fgrep --color=auto'
|
|
alias egrep='egrep --color=auto'
|
|
fi
|
|
|
|
ansi_reset=$(ansi mode=reset)
|
|
ansi_bold=$(ansi mode=bold)
|
|
ansi_fg_white=$(ansi fg=white)
|
|
ansi_fg_green=$(ansi fg=green)
|
|
ansi_fg_gray=$(ansi mode=unbold fg=white)
|
|
ansi_fg_red=$(ansi fg=red)
|
|
ansi_fg_blue=$(ansi fg=blue)
|
|
ansi_fg_magenta=$(ansi fg=magenta)
|
|
bashprompt() {
|
|
# Gather the exit code first, in case something resets it
|
|
exitcoderaw="$?"
|
|
|
|
# Save the shell's history
|
|
history -a
|
|
|
|
# Reset any previous settings, in case last output did not
|
|
init="\[${ansi_reset}\]"
|
|
|
|
dateraw='\t'
|
|
date="\[${ansi_bold}${ansi_fg_white}\]${dateraw}\[${ansi_reset}\]"
|
|
|
|
if test "$exitcoderaw" -eq 0 || test -z "$exitcoderaw"; then
|
|
# Covers a case where no command has been previously executed
|
|
exitcoderaw=0
|
|
exitcodecolor="$ansi_fg_gray"
|
|
else
|
|
exitcodecolor="$ansi_fg_red"
|
|
fi
|
|
exitcode="\[${exitcodecolor}\]E${exitcoderaw}\[${ansi_reset}\]"
|
|
|
|
# Allow setting PROMPT_HOSTNAME_OVERRIDE for situations where the hostname
|
|
# is not a useful way to identify the host
|
|
# For instance, the hostname may be automatically generated by Docker
|
|
hostnameraw="${PROMPT_HOSTNAME_OVERRIDE:-"\\h"}"
|
|
hostname="\[${ansi_bold}${ansi_fg_blue}\]$hostnameraw\[$ansi_reset\]"
|
|
|
|
jobcountraw=$(jobs | wc -l | sed 's/ *//g')
|
|
if test "$jobcountraw" -gt 0 2> /dev/null; then
|
|
jobcountcolor="$ansi_fg_magenta"
|
|
else
|
|
jobcountcolor="$ansi_fg_gray"
|
|
fi
|
|
jobcount="\[${jobcountcolor}\]J${jobcountraw}\[${ansi_reset}\]"
|
|
|
|
workdirraw='\W'
|
|
workdir="\[${ansi_fg_green}\]${workdirraw}\[${ansi_reset}\]"
|
|
|
|
# lcop = last character of prompt
|
|
# Use bash's $EUID variable to avoid having to shell out to 'id'
|
|
lcopraw='>'
|
|
if test "$EUID" -eq 0; then
|
|
lcopraw='#'
|
|
fi
|
|
lcop="\[${ansi_bold}${ansi_fg_blue}\]${lcopraw}\[${ansi_reset}\]"
|
|
|
|
export PS1="${init}${date} ${exitcode} ${hostname} ${jobcount} ${workdir} ${lcop} "
|
|
}
|
|
export PROMPT_COMMAND=bashprompt
|
|
|
|
if test -d "$HOME/.bashrc.d"; then
|
|
for script in $(find "$HOME/.bashrc.d" -type f); do
|
|
. "$script"
|
|
done
|
|
fi |