.bash_aliases
| 2021-05-06 / 2025-11-19 | ||
Tipps&Trick für .bash_aliases die ich in meine Linux-Systemen verwende!
#Variable zum unterscheiden um welches OS-System es sich handelt um spezifische Befehle auszuführen.
#Das Prinzip könnte aber z.B. auch mit Hostname durchgeführt werden.
if [ -f /etc/os-release ]; then
. /etc/os-release
OS="$NAME"
else
OS=$(lsb_release -si)
fi
#################### exports ####################
#Setzt meinen Editor für z.B. crontab fix auf nano
export EDITOR="/usr/bin/nano"
#Setzt den Pfad für Go, damit es auch in der Shell verfügbar ist.
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:~/go/bin
#################### install ####################
# Update System
function update {
if [[ $OS == *"Manjaro"* ]]; then
pamac update
elif [[ $OS == *"CachyOS"* ]]; then
paru -Syu
elif [[ $OS == *"Fedora"* ]]; then
sudo dnf --refresh upgrade
elif [[ $OS == *"Debian"* ]]; then
sudo apt update
sudo apt dist-upgrade
sudo apt autoremove
else
echo "OS nicht erkannt für update!"
fi
}
# Installieren ...
function install {
if [[ $OS == *"Manjaro"* ]]; then
sudo pamac install $@
elif [[ $OS == *"CachyOS"* ]]; then
paru -S $@
elif [[ $OS == *"Fedora"* ]]; then
sudo dnf install $@
elif [[ $OS == *"Debian"* ]]; then
sudo apt install $@
else
echo "OS nicht erkannt für install!"
fi
}
# Suchen ...
function search {
if [[ $OS == *"Manjaro"* ]]; then
pamac search $@
elif [[ $OS == *"CachyOS"* ]]; then
paru $@
elif [[ $OS == *"Fedora"* ]]; then
dnf search $@
elif [[ $OS == *"Debian"* ]]; then
apt search $@
else
echo "OS nicht erkannt für search!"
fi
}
# Entfernen ...
function remove {
if [[ $OS == *"Manjaro"* ]]; then
sudo pamac remove $@
elif [[ $OS == *"CachyOS"* ]]; then
paru -R $@
elif [[ $OS == *"Fedora"* ]]; then
sudo dnf remove $@
elif [[ $OS == *"Debian"* ]]; then
sudo apt auto-remove $@
else
echo "OS nicht erkannt für remove!"
fi
}
# Installiert?
function installed {
if [[ $OS == *"Manjaro"* ]]; then
pamac list --explicitly-installed | grep $@
elif [[ $OS == *"CachyOS"* ]]; then
paru -Qe | grep $@
elif [[ $OS == *"Fedora"* ]]; then
sudo dnf list installed | grep $@
elif [[ $OS == *"Debian"* ]]; then
dpkg -l | grep $@
else
echo "OS nicht erkannt für installed!"
fi
}
# Warum installiert?
function why {
if [[ $OS == *"Manjaro"* ]]; then
pacman -Qi $@ | grep -E "Required By|Install Reason"
elif [[ $OS == *"CachyOS"* ]]; then
paru -Qi $@ | grep -E "Required By|Install Reason"
elif [[ $OS == *"Fedora"* ]]; then
sudo dnf why $@
elif [[ $OS == *"Debian"* ]]; then
apt-cache show $@ | grep -E "Depends|Suggests"
else
echo "OS nicht erkannt für why!"
fi
}
#################### filesystem ####################
#Verzeichnis auflisten
alias ll='ls -lh'
alias lla='ls -lha'
#Copy
alias cpb='cp --backup=numbered'
alias cp+='rsync -ah --progress'
#Größe von Verzeichnissen ermitteln
alias dux='du -hs *'
alias duxa='du -hs .[!.]* *'
# -h = Dynamische Göße in K/M/G
# -s = Rekursiv die Summe des Verzeichnisses (Fehlt der Parameter wird jeder Unterordner einzeln gelistet)
# * jedes Verzeichnis einzeln in diesem Ordner
# .[!.]* hiddenfiles
#Verzeichnis
alias cd..='cd ..'
alias ~='cd ~'
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias .......='cd ../../../../../..'
alias ........='cd ../../../../../../..'
alias .........='cd ../../../../../../../..'
#Laufwerke
alias drives='cd /run/media/$USER'
alias media='drives'
#################### dotfiles git ####################
function dotfiles {
currentdir=$(pwd)
if [[ $1 == "init" ]]; then
mkdir -p ~/.dotfiles
cd ~/.dotfiles
git init
elif [[ $1 == "add" ]]; then
ln $2 ~/.dotfiles/$2
cd ~/.dotfiles
git add $2
git commit -m initial
elif [[ $1 == "fix" ]]; then
rm ~/.dotfiles/$2
ln $2 ~/.dotfiles/$2
else
cd ~/.dotfiles
git $@
fi
cd $currentdir
}
#################### sudo ####################
#Sudo
alias fuck='sudo $(fc -ln -1)' #letzten Befehl als Sudo
alias _='sudo'
#################### shell ####################
#Clear
# alias c='clear'
alias cls='clear'
#History
alias his='history | grep' #Suchbegriff
alias hisx='history -d' #Zeilennummer löschen
#################### processes ####################
#Taskmanager | falls htop nicht griffbereit
alias psm='ps -AF'
alias ps?='ps -AF | grep' #Suchbegriff
#################### jourlnalctl ####################
alias jb='journalctl -b' #since boot
alias jf='journalctl -f' #follow the log ...
alias j1='journalctl --since "1 minutes ago"'
alias j5='journalctl --since "5 minutes ago"'
alias j15='journalctl --since "15 minutes ago"'
#################### docker & kubernetes ####################
# Docker
alias d='docker'
alias dimg='docker images'
alias dps='docker ps'
alias dpsa='docker ps -a'
alias dvl='docker volume ls'
alias drun='docker run -d --name'
alias dk='docker kill'
alias dlog='docker logs'
alias dexec='docker exec -it' #container-name
alias dbash='docker exec -it $1 /bin/bash' #container-name
alias drm='docker rm'
alias drmi='docker rmi'
alias dbui='docker build . -t'
alias dclean='docker system prune -a --volumes'
function dcu {
if [[ -z $1 ]]; then
docker compose up -d
elif [[ -d $1 ]]; then
if docker-compose.yaml || [[ -f $1/docker-compose.yaml ]]; then
docker compose -f $1/docker-compose.yaml up -d
elif docker-compose.yml || [[ -f $1/docker-compose.yml ]]; then
docker compose -f $1/docker-compose.yml up -d
else
echo "No docker-compose.yaml or docker-compose.yml found in directory $1"
fi
else
docker compose up -d -f $1
fi
}
function dcd {
if [[ -z $1 ]]; then
docker compose down
elif [[ -d $1 ]]; then
if docker-compose.yaml || [[ -f $1/docker-compose.yaml ]]; then
docker compose -f $1/docker-compose.yaml down
elif docker-compose.yml || [[ -f $1/docker-compose.yml ]]; then
docker compose -f $1/docker-compose.yml down
else
echo "No docker-compose.yaml or docker-compose.yml found in directory $1"
fi
else
docker compose down -f $1
fi
}
function dcr {
dcd $@
dcu $@
}
#kubectl
alias kc='kubectl'
alias kca='kc apply -f ' #yaml-file
alias kcd='kc delete -f ' #yaml-file
#################### copilot ####################
#Copilot
alias copilot='gh copilot suggest'
alias copilot-exp='gh copilot explain'
alias copilot-upd='gh extension upgrade gh-copilot'
#################### ssh & sshfs ####################
alias known='nano ~/.ssh/known_hosts'
#SSH Connect
#m~ssh <HOST|IP> [USER] [PARAMETER]
function m~ssh {
if [[ -z $1 ]]; then
echo "Usage: m~ssh <HOST|IP> [USER] [PARAMETER]"
return 1
else
host=$1
fi
if [[ -z $2 ]]; then
user=$(whoami)
else
user=$2
fi
if [[ -z $3 ]]; then
parameter="-p22"
else
parameter="$3"
fi
if [[ -z $4 ]]; then
nexttry=0
else
nexttry=$4
fi
echo -e "\e[33mConnecting to $host as $user with parameters: $parameter\e[0m"
rsync -avz -e 'ssh '$parameter ~/.bash_aliases $host:/home/$USER/.bash_aliases
rsync -avz -e 'ssh '$parameter ~/.blerc $host:/home/$USER/.blerc
rsync -avz -e 'ssh '$parameter ~/.bash_it/themes/m~/m~.theme.bash $host:/home/$USER/.bash_it/themes/m~/m~.theme.bash
#title
echo -ne "\033]0;ssh $user@$host\007"
# echo -e ssh $parameter $user@$host
ssh $parameter $user@$host
#error handling
# rc=$?
# if [[ $rc -ne 0 ]]; then
# echo -e "\e[31mFehler: m~ssh fehlgeschlagen (Exit-Code $rc) für $user@$host!\e[0m"
# echo -e "\e[31m$output\e[0m"
# if [[ $nexttry -gt 0 ]]; then
# read -p "Das ist der $nexttry. versuch, soll es nochmal versucht werden? (yes/no): " answer
# if [[ "$answer" != "yes" ]]; then
# m~ssh "$host" "$user" "$parameter" "$(($nexttry+1))"
# return
# fi
# fi
# if [[ "$output" == *"read: Connection reset by peer"* && "$nexttry" -eq 0 ]]; then
# echo -e "\e[32mHost-Key-Problem vermutet! known_hosts-Eintrag wird entfernt...\e[0m"
# ssh-keygen -R "$host"
# m~ssh "$host" "$user" "$parameter" "$(($nexttry+1))"
# return
# fi
# fi
}
# alias <alias>='m~ssh <IP> <title>'
#SSHFS
#ein Verzeichnis
# alias mnt='sshfs -o idmap=user <ip>:<path> ~/<folder>'
# alias umnt='fusermount3 -u ~/<folder>'
# alias umntz='fusermount3 -u -z ~/<folder>'
#mehrere Verzeichnisse besser in einer Funktion, so können Fehler leichter identifziert werden und führt nicht zum abbruch, wie wenn es per && verknüpft ist.
# function mnt {
# }
function m~sshfs {
mkdir ~/mnt &>/dev/null
fusermount3 -u ~/mnt &>/dev/null
sshfs -o idmap=user $3 $1:/$2 ~/mnt
}
# alias <alias>='m~sshfs <IP>'
#
alias umntt='fusermount3 -u ~/mnt'
alias umnttz='fusermount3 -u -z ~/mnt'
#################### calculator ####################
#install bc
function calc {
last=0
if [ -f /tmp/calc.log ]; then
last=$(cat /tmp/calc.log)
fi
if [[ $1 == "+"* || $1 == "-"* || $1 == "/"* || $1 == "*"* ]]; then
value=$(echo "$last $@" | bc -l)
else
value=$(echo "$@" | bc -l)
fi
echo "$value"
echo "$value" >/tmp/calc.log
}
alias c='calc'
alias r='calc'
#################### others ####################
#GO
#alias goupdate='sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go*.linux-amd64.tar.gz'
alias gob='go build'
alias gobl='GOOS=linux GOOARCH=amd64 go build'
alias gobw='GOOS=windows GOOARCH=amd64 go build'
#wails
alias wad='wails dev'
alias wab='wails build'
alias wabl='GOOS=linux GOOARCH=amd64 wails build'
alias wabw='GOOS=windows GOOARCH=amd64 wails build'
#Rechte auf/für www-data
#Optional kann ein Ordner übergeben werden....
function fight { # for your rights... ;-)
if [[ $OS == *"Manjaro"* || $OS == *"cachyos"* ]]; then
# sudo chown -R http:http /srv/http/$1 && sudo chmod -R 775 /srv/http/$1
# Nur da wo es noch nicht der Fall ist
sudo find /srv/http/$1 ! -user http -exec sudo chown http: {} \;
sudo find /srv/http/$1 ! -group http -exec sudo chown :http {} \;
sudo find /srv/http/$1 -type d ! -perm 775 -exec sudo chmod 775 {} \;
sudo find /srv/http/$1 -type f ! -perm 664 -exec sudo chmod 664 {} \;
elif [[ $OS == *"Debian"* ]]; then
# sudo chown -R www-data:www-data /var/www/html/$1 && sudo chmod -R 775 /var/www/html/$1
# Nur da wo es noch nicht der Fall ist
sudo find /var/www/html/$1 ! -user www-data -exec sudo chown www-data: {} \;
sudo find /var/www/html/$1 ! -group www-data -exec sudo chown :www-data {} \;
sudo find /var/www/html/$1 -type d ! -perm 775 -exec sudo chmod 775 {} \;
sudo find /var/www/html/$1 -type f ! -perm 664 -exec sudo chmod 664 {} \;
else
echo "OS nicht erkannt für fight!"
fi
}