2021-11-12 21:07:28 +01:00
|
|
|
#!/bin/bash
|
2022-06-11 14:15:25 +02:00
|
|
|
### tmux auto attach
|
|
|
|
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
|
|
|
|
tmux attach -t default || tmux new -s default
|
|
|
|
fi
|
|
|
|
|
2022-07-17 13:25:39 +02:00
|
|
|
### keychain
|
|
|
|
eval $(keychain -q --eval --timeout 60 --agents ssh)
|
2022-07-01 14:24:48 +02:00
|
|
|
|
2021-11-12 21:07:28 +01:00
|
|
|
### PS1
|
|
|
|
# git-symbole: * unstaged, + staged, $ stashed, % untracked
|
2021-08-20 23:14:19 +02:00
|
|
|
export GIT_PS1_SHOWUNTRACKEDFILES=1
|
2021-08-20 22:47:38 +02:00
|
|
|
export GIT_PS1_SHOWDIRTYSTATE=1
|
|
|
|
export GIT_PS1_SHOWSTASHSTATE=1
|
2021-10-06 11:16:17 +02:00
|
|
|
export PS1='\n\[\e[34m\]\u@\[\e[34m\]\h \[\e[94m\]\w\[\e[33m\]$(__git_ps1) \[\e[94m\]\n> \[\e[39m\]'
|
2021-08-20 22:47:38 +02:00
|
|
|
|
2021-10-06 11:16:17 +02:00
|
|
|
#\e[34m \u @ \e[34m \h \e[37m \e[94m \w \e[33m $(__git_ps1) \e[94m \n> \e[39m
|
|
|
|
#Blau User @ Bue Hostname Light Gray LightBlue Verzeichnis Yellow Git-Script LightBlue Zeilenumbruch Standard-Vordergrund-Farbe
|
2021-08-23 12:28:24 +02:00
|
|
|
# https://unix.stackexchange.com/questions/105958/terminal-prompt-not-wrapping-correctly
|
|
|
|
# alle Farben sind mit \[<wert>\] escaped, sonst kann die shelle die länge nicht richtig ausrechnen
|
2021-11-12 21:07:28 +01:00
|
|
|
# https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
|
|
|
|
# https://gist.github.com/justintv/168835
|
|
|
|
# https://misc.flogisoft.com/bash/tip_colors_and_formatting
|
2021-08-20 22:47:38 +02:00
|
|
|
|
2021-11-12 21:07:28 +01:00
|
|
|
### Praktische Dinge
|
2021-08-20 22:47:38 +02:00
|
|
|
# Deaktiviere FlowControl
|
|
|
|
# https://unix.stackexchange.com/questions/332791/how-to-permanently-disable-ctrl-s-in-terminal
|
|
|
|
stty -ixon
|
2021-11-12 21:07:28 +01:00
|
|
|
|
2021-08-24 11:44:24 +02:00
|
|
|
# farben fur manpages
|
|
|
|
# https://opensource.com/article/18/5/bash-tricks
|
|
|
|
export LESS_TERMCAP_mb=$'\E[01;31m'
|
|
|
|
export LESS_TERMCAP_md=$'\E[01;33m'
|
|
|
|
export LESS_TERMCAP_me=$'\E[0m'
|
|
|
|
export LESS_TERMCAP_se=$'\E[0m'
|
|
|
|
export LESS_TERMCAP_so=$'\E[01;42;30m'
|
|
|
|
export LESS_TERMCAP_ue=$'\E[0m'
|
|
|
|
export LESS_TERMCAP_us=$'\E[01;36m'
|
2021-11-12 21:07:28 +01:00
|
|
|
|
2021-11-12 11:56:46 +01:00
|
|
|
# bash history bei mehreren Session
|
|
|
|
shopt -s histappend
|
2022-02-18 13:11:49 +01:00
|
|
|
# bach History Zeitstempel am Anfang der Zeile
|
|
|
|
export HISTTIMEFORMAT='[%F_%T] '
|
2021-11-12 21:07:28 +01:00
|
|
|
|
2021-11-12 11:56:46 +01:00
|
|
|
# typo bei cd entfernen
|
|
|
|
shopt -s cdspell
|
2021-11-12 21:07:28 +01:00
|
|
|
|
2021-11-12 11:56:46 +01:00
|
|
|
# less mit maus scrollen
|
2021-11-19 08:22:17 +01:00
|
|
|
export LESS='--mouse --wheel-lines=3 eFRX'
|
2021-11-12 21:07:28 +01:00
|
|
|
|
2022-01-06 21:52:58 +01:00
|
|
|
# deaktiviere alias von ll
|
|
|
|
# weiter unten ist die FUnktion ll definiert die entweder exa oder ls ausführt
|
|
|
|
unalias ll 2>/dev/null
|
|
|
|
|
2021-11-12 21:07:28 +01:00
|
|
|
### Funktionen
|
|
|
|
function sgc {
|
|
|
|
case "$1" in
|
|
|
|
--help)
|
|
|
|
echo "Suche in der kompletten git-history nach "\$1""
|
2021-12-27 12:33:21 +01:00
|
|
|
echo ""
|
|
|
|
echo " Usage: sgc <Suchbegriff>"
|
2021-11-12 21:07:28 +01:00
|
|
|
;;
|
|
|
|
"")
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[ERROR] Suchbegriff fehlt..."
|
2021-11-12 21:07:28 +01:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
git grep "$1" $(git rev-list --all)
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
function m2m {
|
|
|
|
if [[ "$1" == "--help" ]]; then
|
|
|
|
echo "Sende Datei "\$2" per Mail; Betreff = "\$1""
|
2021-12-27 12:33:21 +01:00
|
|
|
echo ""
|
|
|
|
echo " Usage: m2m <Pfad zu Datei> <Betreff>"
|
2021-11-12 21:07:28 +01:00
|
|
|
else
|
|
|
|
if [ ! -f "$2" ]; then
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[ERROR] Dateipfad fehlt..."
|
2021-11-12 21:07:28 +01:00
|
|
|
else
|
|
|
|
if [ -z "$1" ]; then
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[ERROR] Betreff fehlt..."
|
2021-11-12 21:07:28 +01:00
|
|
|
else
|
|
|
|
echo "$1" | mail -s "$1" -A "$2" michael.grote@posteo.de
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
2022-02-17 18:09:11 +01:00
|
|
|
#function psk {
|
|
|
|
# if [[ "$1" == "--help" ]]; then
|
|
|
|
# echo "Beende Prozess "\$1""
|
|
|
|
# echo ""
|
|
|
|
# echo " Usage: psk <prozessname>"
|
|
|
|
# else
|
|
|
|
# if [ -z "$1" ]; then
|
|
|
|
# echo "[ERROR] Prozessname fehlt..."
|
|
|
|
# else
|
|
|
|
# ps -ef | grep "$1" | grep -v grep | awk '{ print $2 }' | xargs kill -9
|
|
|
|
# fi
|
|
|
|
# fi
|
|
|
|
#}
|
2022-07-21 09:55:06 +02:00
|
|
|
|
|
|
|
function pwgen {
|
|
|
|
if [ -n "$1" ]; then
|
|
|
|
# Command ist notwendig da die Funktion genau wie das Binary heißt
|
|
|
|
# https://unix.stackexchange.com/questions/454553/bash-shadow-a-command-function-with-same-name-as-command
|
|
|
|
command pwgen --capitalize --num-passwords=1 --numerals --secure $1
|
|
|
|
fi
|
|
|
|
if [ -z "$1" ]; then
|
|
|
|
command pwgen
|
|
|
|
fi
|
|
|
|
}
|
2021-11-12 21:07:28 +01:00
|
|
|
function rgf {
|
|
|
|
if [[ "$1" == "--help" ]]; then
|
|
|
|
echo "Finde alle Dateien die "\$1" im Namen haben."
|
2021-11-29 10:08:47 +01:00
|
|
|
echo ""
|
2021-12-27 12:33:21 +01:00
|
|
|
echo " Usage: rgf <string>"
|
2021-11-29 10:48:45 +01:00
|
|
|
return 0
|
2021-11-29 10:08:47 +01:00
|
|
|
fi
|
|
|
|
if [ -z "$1" ]; then
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[ERROR] Suchbegriff fehlt..."
|
2021-11-29 10:48:45 +01:00
|
|
|
return 1
|
2021-11-29 10:08:47 +01:00
|
|
|
fi
|
2021-11-29 10:48:45 +01:00
|
|
|
if command -v rg >/dev/null ; then
|
2021-11-29 10:08:47 +01:00
|
|
|
rg --files -g *"$1"* --hidden
|
2021-11-12 21:07:28 +01:00
|
|
|
else
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[INFO] ripgrep ist nicht installiert... suche mit 'find'"
|
2021-11-29 10:08:47 +01:00
|
|
|
find . -type f -name *"$1"*
|
2021-11-12 21:07:28 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
function rgi {
|
|
|
|
if [[ "$1" == "--help" ]]; then
|
|
|
|
echo "Finde alle Dateien die "\$1" im Inhalt haben."
|
2021-11-29 10:08:47 +01:00
|
|
|
echo ""
|
2021-12-27 12:33:21 +01:00
|
|
|
echo " Usage: rgi <string>"
|
2021-11-29 10:48:45 +01:00
|
|
|
return 0
|
2021-11-29 10:08:47 +01:00
|
|
|
fi
|
|
|
|
if [ -z "$1" ]; then
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[ERROR] Suchbegriff fehlt..."
|
2021-11-29 10:48:45 +01:00
|
|
|
return 1
|
2021-11-29 10:08:47 +01:00
|
|
|
fi
|
2021-11-29 10:48:45 +01:00
|
|
|
if command -v rg >/dev/null ; then
|
2021-11-29 10:08:47 +01:00
|
|
|
rg -i "$1"
|
2021-11-12 21:07:28 +01:00
|
|
|
else
|
2021-12-27 12:33:21 +01:00
|
|
|
echo "[INFO] ripgrep ist nicht installiert... suche mit 'grep'"
|
2021-11-29 10:08:47 +01:00
|
|
|
grep -r -n -i "$1" .
|
2021-11-12 21:07:28 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
function ssh {
|
|
|
|
# benennt das aktuelle tmux-windows nach dem ssh-ziel
|
|
|
|
# baut ssh-verbindung auf
|
|
|
|
if [ -n "${TMUX}" ]; then
|
2021-12-08 11:44:22 +01:00
|
|
|
tmux rename-window ""${@: -1}""
|
2021-11-12 21:07:28 +01:00
|
|
|
fi
|
|
|
|
command ssh "$@"
|
2022-02-08 09:12:25 +01:00
|
|
|
if [ -n "${TMUX}" ]; then
|
|
|
|
tmux rename-window "`hostname -f`"
|
|
|
|
fi
|
2021-11-12 21:07:28 +01:00
|
|
|
}
|
2021-11-23 13:55:07 +01:00
|
|
|
function gcm {
|
2021-11-23 13:58:23 +01:00
|
|
|
# übergibt alle argumente an git commit -m als commit nachricht
|
2021-11-26 12:09:59 +01:00
|
|
|
git commit -m "$*"
|
2021-11-23 13:55:07 +01:00
|
|
|
}
|
2021-12-27 12:25:57 +01:00
|
|
|
function gc {
|
|
|
|
case "$1" in
|
|
|
|
"")
|
2022-06-11 14:09:11 +02:00
|
|
|
echo "[ERROR] Branch/Option fehlt..."
|
|
|
|
;;
|
|
|
|
--help | -h)
|
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
Description:
|
|
|
|
"git checkout" on steroids
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
gc [--help|--new-branch] <branch>
|
|
|
|
|
|
|
|
Options:
|
|
|
|
-h, --help Prints this help.
|
|
|
|
-b, --new-branch Create a new Branch instead changing to an existing branch.
|
|
|
|
|
|
|
|
Author:
|
|
|
|
michael.grote@posteo.de - git.mgrote.net
|
|
|
|
EOF
|
|
|
|
;; --new-branch | -b)
|
|
|
|
(git checkout --quiet -b "$2" > /dev/null 2>&1 && echo '>>> Create new branch "'"$2"'"') ||
|
|
|
|
(git checkout --quiet "$2" > /dev/null 2>&1 && echo '>>> Branch already exists, checking out... ')
|
2021-12-27 12:25:57 +01:00
|
|
|
;;
|
|
|
|
*)
|
2022-06-11 14:09:11 +02:00
|
|
|
(echo ">>> Try local checkout" && git checkout --quiet "$1" > /dev/null 2>&1) ||
|
|
|
|
(echo ">>> Try remote checkout" && git checkout --quiet -b "$1" origin/"$1" > /dev/null 2>&1 || echo ">>> Unkown branch!")
|
2021-12-27 12:25:57 +01:00
|
|
|
esac
|
2022-06-11 14:09:36 +02:00
|
|
|
}
|
|
|
|
function ll {
|
2022-01-05 07:47:41 +01:00
|
|
|
if command -v exa >/dev/null ; then
|
2022-01-09 15:20:32 +01:00
|
|
|
exa --long --git --all --ignore-glob='.git' --group-directories-first --sort=name --group "$@"
|
2022-01-05 07:47:41 +01:00
|
|
|
else
|
2022-01-09 15:20:32 +01:00
|
|
|
ls -lah "$@"
|
2022-01-05 07:47:41 +01:00
|
|
|
fi
|
|
|
|
}
|
2022-07-02 13:19:46 +02:00
|
|
|
function gs {
|
|
|
|
echo "* = unstaged // + = staged // $ = stashed // % = untracked"
|
|
|
|
git status --show-stash
|
|
|
|
}
|
2021-11-12 21:07:28 +01:00
|
|
|
|
|
|
|
### Aliase
|
|
|
|
# tmux
|
|
|
|
alias tmuxa="tmux a -t "
|
|
|
|
alias tmuxn="tmux new -s "
|
|
|
|
alias tmuxl="tmux ls"
|
|
|
|
alias tmuxk="tmux kill-session -t"
|
|
|
|
# abkuerzungen
|
2021-12-21 08:54:15 +01:00
|
|
|
alias se="sudoedit"
|
2022-01-27 13:46:39 +01:00
|
|
|
alias ip="ip --color=auto"
|
2021-11-12 21:07:28 +01:00
|
|
|
alias cls="clear"
|
2022-05-17 11:36:36 +02:00
|
|
|
alias tracert="traceroute"
|
2021-11-12 21:07:28 +01:00
|
|
|
alias df="df -h"
|
|
|
|
alias du="du -h"
|
|
|
|
alias grep="grep -i --color=auto"
|
|
|
|
alias hostname="hostname -f"
|
|
|
|
alias untar="tar -xzf"
|
|
|
|
alias unmount="umount"
|
2022-02-17 18:09:11 +01:00
|
|
|
alias psk="pkill"
|
2022-04-29 07:55:36 +02:00
|
|
|
alias ru="rip url"
|
2022-06-25 22:46:28 +02:00
|
|
|
alias mkdir="mkdir -p"
|
2022-07-13 16:14:43 +02:00
|
|
|
alias last="last -w"
|
2021-11-12 21:07:28 +01:00
|
|
|
# git
|
2021-11-24 13:29:37 +01:00
|
|
|
alias gp="git stash && git pull && git stash pop"
|
2021-12-03 21:33:30 +01:00
|
|
|
alias gf="git fetch"
|
2021-11-23 13:37:22 +01:00
|
|
|
alias gdel="git add . && git stash && git stash clear"
|
2021-11-23 13:55:07 +01:00
|
|
|
alias glast="git log -1 HEAD --stat"
|
|
|
|
alias gsp="git stage -p"
|
|
|
|
alias gd="git diff"
|
2021-11-26 21:20:38 +01:00
|
|
|
alias glogs="git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
|
2021-11-12 21:07:28 +01:00
|
|
|
# vim
|
|
|
|
alias v="view"
|
|
|
|
# docker
|
|
|
|
alias dcu="docker-compose up"
|
|
|
|
alias dcd="docker-compose down"
|
|
|
|
alias dcr="docker-compose down && docker-compose up -d"
|
|
|
|
alias lzd="docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock lazyteam/lazydocker"
|
|
|
|
# safeguard
|
|
|
|
alias mv="mv -i "
|
|
|
|
alias cp="cp -i "
|
|
|
|
alias rm="rm -i "
|
2022-06-11 10:30:47 +02:00
|
|
|
# rest
|
2022-07-17 13:23:44 +02:00
|
|
|
alias suspend="~/dotfiles/scripts/pwr.sh -sd"
|
|
|
|
alias hibernate="~/dotfiles/scripts/pwr.sh -hb"
|
|
|
|
alias restart="~/dotfiles/scripts/pwr.sh -r"
|
|
|
|
alias shutdown="~/dotfiles/scripts/pwr.sh -s"
|