From a0999d28168103ba4b881dc7999482707cc37712 Mon Sep 17 00:00:00 2001
From: Michael Ochmann <michael.ochmann@propeller.de>
Date: Thu, 4 Nov 2021 14:54:12 +0100
Subject: [PATCH] initial commit

---
 .bashrc | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 254 insertions(+)
 create mode 100644 .bashrc

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"