commit a0999d28168103ba4b881dc7999482707cc37712 Author: Michael Ochmann Date: Thu Nov 4 14:54:12 2021 +0100 initial commit diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..9c1b50b --- /dev/null +++ b/.bashrc @@ -0,0 +1,254 @@ +############################################################################### +# # +# ● ○ ○ ○ ● # +# ● ● ○ ● ● Mike Ochmann # +# ● ○ ● ○ ● https://mike-ochmann.de # +# ● ○ ○ ○ ● # +# ● ○ ○ ○ ● # +# # +# My configuration for the Bourne Again Shell # +# Version 1,5,2 # +# # +############################################################################### + + +# Do not use this .bashrc if bash is not running in interactive mode +case $- in + *i*) ;; + *) return;; +esac + +# HISTORY +HISTCONTROL=ignoreboth:erasedups # don't put duplicate lines or lines starting with space in the history +HISTIGNORE="ls:bg:fg:history" # Hist ignores exact match +HISTTIMEFORMAT="%F %T " # add timestamp +HISTSIZE=10000 # History size +HISTFILESIZE=20000 # History file size + +shopt -s histappend # Append to the history file, don't overwrite it +shopt -s cmdhist # Save multi-line histroy as one line +shopt -s checkwinsize # Update columns/lines after commands +shopt -sq autocd # Can change dir without `cd` +shopt -s cdspell # Fixes minor spelling errors in cd paths +shopt -s no_empty_cmd_completion # Stops empty line tab comp +shopt -sq dirspell # Tab comp can fix dir name typos + + +# PATH +export PATH="/usr/local/opt/ncurses/bin:$PATH" +export PATH="/usr/local/bin/:/Users/mochmann/.cargo/bin:$PATH" +export PATH="/usr/local/Cellar:$PATH" +export PATH="$PATH:/Users/mochmann/.dotnet/tools" +export PATH="/usr/local/opt/mysql@5.7/bin:$PATH" +export PATH="/usr/local/opt/libpq/bin:$PATH" +export CC=clang +export CXX=clang++ +export PATH="/usr/local/lib/python3.9/site-packages:$PATH" + +# COLORS + +## enabling directory colors if possible +if [ -x /usr/bin/dircolors ] || [ -x /usr/local/bin/gdircolors ] + then + ## `dircolors` is called `gdircolors` if installed via homebrew + if [[ "$OSTYPE" == "darwin"* ]] + then + dircolors() { + gdircolors "$@" + } + shopt -s expand_aliases + fi + if [ ! -f ~/.dircolors ] + then + dircolors -p > ~/.dircolors + fi + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + if [[ "$OSTYPE" == "darwin"* ]] + then + alias ls="ls -G" + else + alias ls="ls --color=auto" + alias grep="grep --color=auto" + alias fgrep="fgrep --color=auto" + alias egrep="egrep --color=auto" + #alias dir="dir --color=auto" + #alias vdir="vdir --color=auto" + fi +fi + +__prompt_command() { + local EXIT="$?" + ## promp colors + + ## Regular Bold Underline High Intensity BoldHigh Intensity Background High Intensity Backgrounds + local Bla='\[\e[0;30m\]'; local BBla='\[\e[1;30m\]'; local UBla='\[\e[4;30m\]'; local IBla='\[\e[0;90m\]'; local BIBla='\[\e[1;90m\]'; local On_Bla='\e[40m'; local On_IBla='\[\e[0;100m\]'; + local Red='\[\e[0;31m\]'; local BRed='\[\e[1;31m\]'; local URed='\[\e[4;31m\]'; local IRed='\[\e[0;91m\]'; local BIRed='\[\e[1;91m\]'; local On_Red='\e[41m'; local On_IRed='\[\e[0;101m\]'; + local Gre='\[\e[0;32m\]'; local BGre='\[\e[1;32m\]'; local UGre='\[\e[4;32m\]'; local IGre='\[\e[0;92m\]'; local BIGre='\[\e[1;92m\]'; local On_Gre='\e[42m'; local On_IGre='\[\e[0;102m\]'; + local Yel='\[\e[0;33m\]'; local BYel='\[\e[1;33m\]'; local UYel='\[\e[4;33m\]'; local IYel='\[\e[0;93m\]'; local BIYel='\[\e[1;93m\]'; local On_Yel='\e[43m'; local On_IYel='\[\e[0;103m\]'; + local Blu='\[\e[0;34m\]'; local BBlu='\[\e[1;34m\]'; local UBlu='\[\e[4;34m\]'; local IBlu='\[\e[0;94m\]'; local BIBlu='\[\e[1;94m\]'; local On_Blu='\e[44m'; local On_IBlu='\[\e[0;104m\]'; + local Pur='\[\e[0;35m\]'; local BPur='\[\e[1;35m\]'; local UPur='\[\e[4;35m\]'; local IPur='\[\e[0;95m\]'; local BIPur='\[\e[1;95m\]'; local On_Pur='\e[45m'; local On_IPur='\[\e[0;105m\]'; + local Cya='\[\e[0;36m\]'; local BCya='\[\e[1;36m\]'; local UCya='\[\e[4;36m\]'; local ICya='\[\e[0;96m\]'; local BICya='\[\e[1;96m\]'; local On_Cya='\e[46m'; local On_ICya='\[\e[0;106m\]'; + local Whi='\[\e[0;37m\]'; local BWhi='\[\e[1;37m\]'; local UWhi='\[\e[4;37m\]'; local IWhi='\[\e[0;97m\]'; local BIWhi='\[\e[1;97m\]'; local On_Whi='\e[47m'; local On_IWhi='\[\e[0;107m\]'; + local Mag='\[\e[0;95m\]'; + + local RCol='\[\e[0m\]' # Text Reset + + PS1="${debian_chroot:+(${Red}$debian_chroot${RCol})}" + + if [ $UID -eq "0" ] + then + PS1+="${BRed}\u${RCol}" + else + PS1+="${BGre}\u${Mag}" + fi + PS1+="${Pur}@\h " + local PSCol="$BBlu" + + PS1+="${PSCol}\w${RCol}" # Current working dir + if [ $EXIT != 0 ] + then + ## can add `kill -l $?` to test to filter backgrounded + PS1+=" [${BRed}${EXIT}${RCol}]" # Add exit code, if non 0 + fi + + ## Backgrounded running jobs + local BKGJBS=$(jobs -r | wc -l | tr -d ' ') + if [ ${BKGJBS} -gt 2 ] + then + PS1+=" ${Red}[bg:${BKGJBS}]${RCol}" + elif [ ${BKGJBS} -gt 0 ] + then + PS1+=" ${Yel}[bg:${BKGJBS}]${RCol}" + fi + + ## Stopped Jobs + local STPJBS=$(jobs -s | wc -l | tr -d ' ') + if [ ${STPJBS} -gt 2 ] + then + PS1+=" ${Red}[stp:${STPJBS}]${RCol}" + elif [ ${STPJBS} -gt 0 ] + then + PS1+=" ${Yel}[stp:${STPJBS}]${RCol}" + if [ $UID -eq "0" ] + then + PS1+=" ${BRed}# ${RCol}" ## End of PS1 + else + PS1+=" ${BBlu}\$ ${RCol}" ## End of PS1 + fi + fi + + local branch=$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/') + PS1+=" ${Cya}${branch}${RCol} > " +} + +#PS1='[\u]@\H \w [\$?] \\$ \[$(tput sgr0)\]' +export TERM=xterm-256color +export PROMPT_COMMAND=__prompt_command # Func to gen PS1 after CMDs + +## directory coloring +export LS_COLORS='di=35:ln=36:so=30;46:pi=30;43:ex=33:bd=30;45:cd=30;42:su=31;40:sg=30;41:tw=35:ow=35' + + +# INTERNALS + +# enable bash completion if nessecary +if ! shopt -oq posix + then + if [ -f /usr/share/bash-completion/bash_completion ] + then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +## git completion for macOS +if [[ "$OSTYPE" == "darwin"* ]] + then + [ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion || { + [ -f "$(brew --prefix)/etc/bash_completion.d/git-completion.bash" ] && \ + . $(brew --prefix)/etc/bash_completion.d/git-completion.bash + } +fi + +[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" + +# FUNCTIONS +cd() { + builtin cd "$@" && ls +} + +man() { + env \ + LESS_TERMCAP_mb=$(printf "\e[1;31m") \ + LESS_TERMCAP_md=$(printf "\e[1;31m") \ + LESS_TERMCAP_me=$(printf "\e[0m") \ + LESS_TERMCAP_se=$(printf "\e[0m") \ + LESS_TERMCAP_so=$(printf "\e[1;44;33m") \ + LESS_TERMCAP_ue=$(printf "\e[0m") \ + LESS_TERMCAP_us=$(printf "\e[1;32m") \ + man "$@" +} + +## goes up `n` directories +function up { + [ "${1/[^0-9]/}" == "$1" ] && { + local ups="" + for i in $(seq 1 $1) + do + ups=$ups"../" + done + cd $ups + } || echo "usage: up INTEGER" +} + +alias passgen="cat /dev/urandom | strings | grep -o '[a-zA-Z0-9]' | head -n 30 | tr -d '\n'; echo" +ytAudio() { + youtube-dl -x --audio-format mp3 $1 +} + +multipass() { + for n in $(seq 1 $1) + do + echo $(passgen) + done +} +nslookupr() { + nslookup $(nslookup $1 | grep Address | sed -n 2p | cut -d " " -f2) +} +digfull() { + dig +nocmd $1 any +multiline +noall +answer +} + + +# ENVIRONMENT +NPM_PACKAGES="${HOME}/.npm-packages" + +export PATH="$NPM_PACKAGES/bin:$PATH" +export EDITOR=vim + +unset MANPATH # delete if you already modified MANPATH elsewhere in your config +export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" + + +# *ENV STUFF +eval "$(anyenv init -)" +eval "$(rbenv init -)" + +# ALIASES +alias ll="ls -lisa" +alias la="ls -A" +alias l="ls -CF" +alias histgrep='history | grep $@' +alias batt="pkill -f indicator-power-service" +alias pgcp="/home/miko/bash/pgcopy" +alias sqlplus="rlwrap -c sqlplus" +alias atvim="vim" +alias nano="vim" +alias fullupdate="sudo apt update && sudo apt upgrade && sudo apt dist-upgrade" +alias ygrep=ytAudio +alias sv="sudo vim" +alias reload="source ~/.bashrc" +alias editrc="vim ~/.bashrc && reload" +alias shutdowncause="log show --predicate 'eventMessage contains \"Previous shutdown cause\"' --last 24h" +alias gl="glab"