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)

#Apt/Pamac
function update {
  if [[ $OS == *"Manjaro"* ]]; then
    sudo 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
}

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

#Verzeichnis auflisten
alias ll='ls -lh'
alias lla='ls -lha'

#Copy
alias cpb='cp --backup=numbered'

#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
alias fuck='sudo $(fc -ln -1)' #letzten Befehl als Sudo
alias _='sudo'

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

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

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

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

# 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 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
alias gh?='gh copilot suggest'
alias gh!='gh copilot explain'
alias ghu='gh extension upgrade gh-copilot'

#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>'

#SSHFS
#ein Verzeichnis
alias mnt='sshfs -o idmap=user <ip>:<path> ~/<folder>'
alias umnt='fusermount -u ~/<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'

# 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'

#Taschenrechner
alias calc='gnome-calculator&'

#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
}

#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'

#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'