linux  system  bash

.bash_aliases

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.
OS=$(lsb_release -si)

#################### install ####################

#Apt/Pamac
function update {
  if [[ $OS == *"Manjaro"* ]]; then
    pamac update
    flatpak update
  else
    sudo apt update
    sudo apt dist-upgrade
    sudo apt autoremove
    flatpak update
  fi
}

#Fragen ob apt/pamac oder flatpak?
function install {
  if [[ $OS == *"Manjaro"* ]]; then
    sudo pamac install $@
  else
    sudo apt install $@
  fi
}

#Suchen ...
function search {
  if [[ $OS == *"Manjaro"* ]]; then
    pamac search $@ && echo '' && echo '--------' && echo '' && flatpak search $@
  else
    apt search $@ && echo '--------' && echo '' && flatpak search $@
  fi
}

#Remove
function remove {
  if [[ $OS == *"Manjaro"* ]]; then
    sudo pamac remove $@
  else
    sudo apt auto-remove $@
  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 ../../../../../../../..'

#################### sudo ####################

#Sudo
alias fuck='sudo $(fc -ln -1)' #letzten Befehl als Sudo
alias _='sudo'

#################### shell ####################

#Clear
alias c='clear'
alias cls='clear'

#History
alias ?='history | grep' #Suchbegriff
alias ?x='history -d'    #Zeilennummer löschen

#################### processes ####################

#Taskmanager | falls htop nicht griffbereit
alias psm='ps -AF'
alias ps?='ps -AF | grep' #Suchbegriff

#################### docker & kubernetes ####################

# Docker
alias d='docker'
alias dimg='docker images'
alias dps='docker ps'
alias dpsa='docker ps -a'
alias drun='docker run -d --name'
alias dk='docker kill'
alias dlog='docker logs'
alias drm='docker rm'
alias drmi='docker rmi'
alias dbui='docker build . -t'

#kubectl
alias kc='kubectl'
alias kca='kc apply -f ' #yaml-file

#minikube
function mykube {
  minikube start --cni calico

  # Bei der Erstinstallation(!) Addons Aktivieren...
  # minikube addons enable metrics-server
  # minikube addons enable dashboard
  # minikube addons enable registry

  # Sleep vor Push notwendig!
  # for i in {0..99}; do
  #   if [ $i -lt 10 ]; then echo -ne 'wait a µ for next ...   '$i'%\r'; else echo -ne 'wait a µ for next ...  '$i'%\r'; fi
  #   sleep 0.3s
  # done
  # echo 'wait a µ for next ... 100%'

  # minikube dashboard --port 33333 --url &
  # = http://127.0.0.1:33333/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/workloads?namespace=default

  # Push Images
  # docker push 192.168.49.2:5000/js-motd-kubernetes-example
  # docker push 192.168.49.2:5000/ubuntu-bash
}
alias majortom='mykube'
alias apollo13='minikube stop'

#################### copilot ####################

#Copilot
alias gh?='gh copilot suggest'
alias gh!='gh copilot explain'
alias ghu='gh extension upgrade gh-copilot'

#################### ssh & sshfs ####################

alias known='nano ~/.ssh/known_hosts'

#SSH Connect
function m~ssh {
  mkdir -p /tmp/mssh/
  sshfs -o idmap=user $1:/home/mani /tmp/mssh/
  cp -f ~/.bash_aliases /tmp/mssh/
  cp -f ~/.blerc /tmp/mssh/
  cp -f ~/.bash_it/themes/m~/m~.theme.bash /tmp/mssh/.bash_it/themes/m~/
  fusermount -u /tmp/mssh/
  #title
  echo -en "\033]0;$2 : $1\007"

  ssh $1
}
# alias <alias>='m~ssh <IP> <title>'

#SSHFS
#ein Verzeichnis
# alias mnt='sshfs -o idmap=user <ip>:<path> ~/<folder>'
# alias umnt='fusermount -u ~/<folder>'
# alias umntz='fusermount -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 wnt {
#  sshfs -o idmap=user <ip>:<path> ~/<folder>
#  sshfs -o idmap=user <ip>:<path> ~/<folder>
}
function uwnt {
#  fusermount -u ~/<folder>
#  fusermount -u -z ~/<folder> # < -z für lazy mode, d.h. wenn "ressource busy" kann trotzdem ein umount gemacht werden und führt nicht zu einem stehendem System!
}

function m~sshfs {
    mkdir ~/tmp-mnt &>/dev/null
    fusermount -u ~/tmp-mnt &>/dev/null

    sshfs -o idmap=user $1:/$2 ~/tmp-mnt
}
# alias <alias>='m~sshfs <IP>'
#
alias umntt='fusermount -u ~/tmp-mnt'

#################### nas & backup ####################

# Backup
function cat_largest_logfile {
  local dir=${1:-.} # Standardmäßig aktuelles Verzeichnis, wenn kein Argument übergeben wird
  local largest_file=$(find "$dir" -type f -exec ls -s {} + | sort -n -r | head -n 1 | awk '{print $2}')

  if [[ -n "$largest_file" ]]; then
    echo "Log: $largest_file"
    cat "$largest_file"
  else
    echo "Keine Dateien im Verzeichnis gefunden."
  fi
}
alias backuplog='cat_largest_logfile /tmp/Backup-Log/'
alias nanobackup='sudo nano /usr/local/bin/Backup.sh'

#################### calculator ####################

function calc {
  if [ -f /tmp/calc.log ]; then
    last=$(cat /tmp/calc.log)  
  fi
  
  if [[ $1 == "+"* || $1 == "-"* || $1 == "/"* || $1 == "*"* ]]; then
    value=$(($last $1))
  else
    value=$(($1))
  fi

  echo "$value"
  echo "$value" >/tmp/calc.log
}
alias r='calc'

#################### troubleshooting ####################

#Bash-it
alias bashitfix='sed -i "s/en_US/en_GB/g" /home/mani/.bash_it/lib/command_duration.bash'
alias bashitunfix='sed -i "s/en_GB/en_EN/g" /home/mani/.bash_it/lib/command_duration.bash'

#################### others ####################

#GO
alias goupdate='sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go*.linux-amd64.tar.gz'

#Rechte auf/für www-data
#Optional kann ein Ordner übergeben werden....
function fight { # for your rights... ;-)
  if [[ $OS == *"Manjaro"* ]]; then
    sudo chown -R http:http /srv/http/$1 && sudo chmod -R 775 /srv/http/$1
  else
    sudo chown -R www-data:www-data /var/www/html/$1 && sudo chmod -R 775 /var/www/html/$1
  fi
}

#Radio
alias radiostart='mpc stop && sudo service radio start'
alias radiorestart='mpc stop && sudo service radio restart'
alias radiostop='mpc stop && sudo service radio stop'

#mailcow
alias mailcowup='sudo docker compose -f /opt/mailcow-dockerized/docker-compose.yml up -d'
alias mailcowdown='sudo docker compose -f /opt/mailcow-dockerized/docker-compose.yml down'
alias mailcowupdate='cd /opt/mailcow-dockerized && sudo ./update.sh'