Ich bin nicht so gut im Bashskripten, was bewirkt dein erstes Schnipsel?
Bei deinen Aliases schaue ich mal...
Ich bin nicht so gut im Bashskripten, was bewirkt dein erstes Schnipsel?
Danke!holyhit hat geschrieben:13.08.2023 22:40:18Die Zeilen ... bedeuten ... wiki erweitern kann, wußte ich gar nicht.
Code: Alles auswählen
#===========================================================
#
# MeineBash Aliases
#
#===========================================================
#===========================================================
# Erweiterung path variable
#===========================================================
PATH="$PATH:/usr/local/sbin:/usr/sbin:/sbin"
#===========================================================
# definiere farben
#===========================================================
Black='\e[0;30m' # Black
Red='\e[0;31m' # Red
Green='\e[0;32m' # Green
Yellow='\e[0;33m' # Yellow
Blue='\e[0;34m' # Blue
Purple='\e[0;35m' # Purple
Cyan='\e[0;36m' # Cyan
White='\e[0;37m' # White
NC="\e[m" # Color Reset
#===========================================================
# Bash Prompt
#===========================================================
# Funktion zur Anzeige des Bash-Prompts
custom_prompt() {
# Prüfen Sie, ob sich das aktuelle Verzeichnis in einem Git-Repository befindet
git_info=""
if [ -d .git ] || git rev-parse --is-inside-work-tree &>/dev/null; then
# Das Verzeichnis ist ein Git-Repository
# Führen Sie die beiden Git-Befehle aus und speichern Sie die Ausgabe in Variablen
branch_info=$(git branch --show-current)
modified_count=$(git status --porcelain | wc -l)
# Prüfen und formatieren Sie den branch_info-Text (Klammern entfernen)
cleaned_branch=$(echo "$branch_info" | sed 's/[(]\(.*\)[)]/\1/')
# Überprüfen und formatieren Sie den modified_count-Text
if [ "$modified_count" -ne 0 ]; then
modified_count="$modified_count"
git_info="[${Cyan}${cleaned_branch}${NC}|${Yellow}+${NC}${Purple}${modified_count}${NC}] "
else
git_info="[${Cyan}${cleaned_branch}${NC}|${Green}✔${NC}] "
fi
fi
# Benutzerprofil-spezifische Anpassungen des Prompts
profile_info=""
if [ "$AWS_PROFILE" == "iat" ]; then
profile_info="[${Green}iat${NC}] "
elif [ "$AWS_PROFILE" == "prd" ]; then
profile_info="[${Red}prd${NC}] "
fi
# Bash-Prompt zusammenstellen
PS1='$(if [[ $? == 0 ]]; then printf "\xf0\x9f\x90\xa7"; else printf "\[\e[0;35m\]\xf0\x9f\x90\xa7"; fi)\[\e[0m\]\[\e[0;35m\][\[\e[0;32m\]\u\[\e[0;35m\]@\[\e[0;32m\]\h\[\e[0;35m\]]\[\e[0m\] \[\e[0;33m\]\w \[\e[0m\]$(if [ "$modified_count" == 0 ]; then printf "${git_info}"; else printf "${git_info}"; fi)$(if [ "$AWS_PROFILE" == "prd" ]; then printf "${profile_info}"; else printf "${profile_info}"; fi)\[\e[0;32m\]\$\[\e[0m\] '
}
# Aktivieren Sie den benutzerdefinierten Prompt
PROMPT_COMMAND=custom_prompt
#===========================================================
# History formate
#===========================================================
export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n'
export HISTIGNORE="&:bg:fg:l:history:h:ls:cp:cd:clear:exit:dir"
export HISTTIMEFORMAT="$(echo -e ${Cyan})[%d/%m %H:%M:%S]$(echo -e ${NC}) "
export HISTFILESIZE="10000"
export HISTCONTROL="ignorespace:erasedups"
shopt -s histappend
#===========================================================
# less man pages in farbe
#===========================================================
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
#===========================================================
# high dpi config
#===========================================================
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
export ELM_SCALE=1.5
export QT_AUTO_SCREEN_SCALE_FACTOR=1
#===========================================================
# setze java home
#===========================================================
export PATH="$PATH:/usr/lib/jvm/jdk-17/bin"
export JAVA_HOME="/usr/lib/jvm/jdk-17"
export DERBY_HOME="/usr/lib/jvm/jdk-17/db"
export J2SDKDIR="/usr/lib/jvm/jdk-17"
export J2REDIR="/usr/lib/jvm/jdk-17"
#===========================================================
# Meine Aliases
#===========================================================
alias sudo='sudo '
alias keyagent='ssh-add ~/.ssh/id_rsa' # keyagent für verwendung meines standard ssh keys
alias sshkeyinfo='for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | sort -u' # Infos zu allen SSH-Keys im Home-Verzeichnis
alias sshkey='ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_$(whoami)@$(hostname -f)_ed25519 -C "$(whoami)@$(hostname -f)-$(date -I)"' # Sicherer SSH-Key mit Elliptische Kurven
alias sshkey-rsa='ssh-keygen -o -a 100 -t rsa -b 4096 -f ~/.ssh/id_$(whoami)@$(hostname -f)_rsa -C "$(whoami)@$(hostname -f)-$(date -I)"' # Sicherer 4096 Bits RSA SSH-Key ohne Elliptische Kurven
alias un64='awk '\''BEGIN{FS=":: ";c="base64 -d"}{if(/\w+:: /) {print $2 |& c; close(c,"to"); c |& getline $2; close(c); printf("%s:: \"%s\"\n", $1, $2); next} print $0 }'\''' # base 64 decoding
alias pass='openssl rand -base64' # Stabile Passwortgenerieren. $ANZAHL angeben
alias l='ll' # wie ll
alias ll='ls -al --color=auto' # ls in Farbe inklusive versteckter dateien
alias lt='ls -al --human-readable --size -1 -S --classify' # sortiert nach Dateigröße
alias dir='dir --color=auto' # dir in Farbe
alias vdir='vdir --color=auto' # vdir in Farbe
alias ..='cd ../../' # springe 2 verzeichnisse höher
alias ...='cd ../../../' # springe 3 verzeichnisse höher
alias ....='cd ../../../../' # springe 4 verzeichnisse höher
alias .....='cd ../../../../../' # springe 5 verzeichnisse höher
alias grep='grep --color=auto' # grep in Farbe
alias zgrep='zgrep --color=auto' # zgrep in Farbei
alias grepn='grep -iRn' # grep rekusiv mit Zeilennummer
alias diff='vimdiff' # diff in Farbe
alias dmesg="dmesg --color" # dmesg in Farbe
alias dmesge='sudo dmesg -Tx | grep ".err"' # Kernel Error Meldungen in schön
alias cpv='rsync -ah --info=progress2' # cp like rsync
alias mntdroid='jmtpfs ~/.mnt/Android' # Android mount
alias umntdroid='fusermount -u ~/.mnt/Android' # Android umount
#===========================================================
# Informationsbeschaffung
#===========================================================
alias header='curl -I' # Headeranzeige eines $ZIEL
alias myshell='ps -p $$' # Aktuelle Shell
alias mem='free -m -l -t' # Ausführliche Memoryangabe
alias df='df -Th --total' # Anzeige Festplattenbelegung
alias os='lsb_release -a' # OS-Version
alias myip='curl ipinfo.io/ip' # Anzeige eigene, externe IP
alias mountt='mount |column -t' # Ausführliche Mountpoints
alias nlsof='lsof -n -P -i +c 15' # Übersicht Netzwerkverbindungen
alias fastping='ping -c 100 -s.2' # Ping auf Steroide $ZIEL
alias log='lastlog | grep -vi "\*\*"' # Letzte Logins aller User
alias dux='du -h --max-depth=1 | sort -rh' # Nach Größe sortierte Ordnerübersicht
alias dux10='du -hsx * | sort -rh | head -10' # Die 10 Größten Ordner anzeigen
alias ifconfig='ip -br -c addr show' # Kompakte Anzeige aller IP-Adressen in Farbe
alias dff='df -hlT --exclude-type=tmpfs --exclude-type=devtmpfs' # Anzeige Festplattenbelegung ohne tmpfs-Systeme
#===========================================================
# Programm - Docker
#===========================================================
alias dops="docker ps"
alias dopa="docker ps -a"
alias doi="docker images"
alias dos="docker search"
alias dokd="docker run -d -P"
alias doex="docker exec -i -t"
alias doki="docker run -i -t -P"
alias dtail='docker logs -tf --tail="50" "$@"'
alias doip="docker inspect --format '{{ .NetworkSettings.IPAddress }}'"
alias dormf='docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)'
dostop() { docker stop $(docker ps -a -q); }
dorm() { docker rm $(docker ps -a -q); }
dori() { docker rmi $(docker images -q); }
dorin() { docker rmi -f $(docker images --filter "dangling=true" -q); }
doalias() { alias | grep 'docker' | sed "s/^\([^=]*\)=\(.*\)/\1 => \2/"| sed "s/['|\']//g" | sort; }
#===========================================================
# Systemctl
#===========================================================
alias start='systemctl start' # $DIENST starten
alias stop='systemctl stop' # $DIENST stoppen
alias reload='systemctl reload' # $DIENST reloaden
alias restart='systemctl restart' # $DIENST restarten
alias enable='systemctl enable' # $DIENST aktivieren
alias disable='systemctl disable' # $DIENST deaktivieren
alias status='systemctl status' # $DIENST Statusabfrage
alias running='systemctl list-units --type=service --state=running'
alias systemdconf='systemctl cat' # $DIENST-Konfiguration anzeigen
alias systemddep='systemctl list-dependencies' # $DIENST-Abhängikeiten anzeigen
alias stats='systemctl list-units --type=service' # Infos zu allen von Systemd kontrollierten Diensten
sysalias() { alias | grep 'systemctl' | sed "s/^\([^=]*\)=\(.*\)/\1 => \2/"| sed "s/['|\']//g" | sort; }
#===========================================================
# Prozesse
#===========================================================
alias pss='ps axjfwww' # Anzeige der Prozesse als Baumliste
alias pscpu='ps auxwww | sort -nr -k 3' # Prozesse nach CPU sortieren
alias psmem='ps auxwww | sort -nr -k 4' # Prozesse nach RAM sortieren
alias pscpu10='ps auxwww | sort -nr -k 3 | head -10' # Die 10 CPU-hungrigsten Prozesse
alias psmem10='ps auxwww | sort -nr -k 4 | head -10' # Die 10 RAM-hungrigsten Prozesse
alias psg='ps auxwww | grep -v grep | grep -i --color=auto' # grep nach einem Prozess
psalias() { alias | grep -E '\sps.+\=' | sed "s/^\([^=]*\)=\(.*\)/\1 => \2/" | sed "s/['|\']//g" | sort; }
#===========================================================
# deb Package
#===========================================================
alias dpkg-delconf='sudo dpkg -l | grep "^rc " | cut -d" " -f3 | xargs sudo dpkg --purge' # lösche die Konfiguration von deinstallierten packages
function apt-history(){
case "$1" in
install) # liste installiere pakete auf
cat /var/log/{dpkg.log,dpkg.lo*} | zgrep 'install '
;;
upgrade|remove) # liste gelöschte pakete auf
cat /var/log/{dpkg.log,dpkg.lo*} | zgrep $1
;;
rollback)
cat /var/log/{dpkg.log,dpkg.lo*} | zgrep upgrade | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/{dpkg.log,dpkg.log.1}
;;
esac
}
#===========================================================
# Proxy Enviroment on off
#===========================================================
function proxyon(){
export http_proxy="127.0.0.1:8118"
export no_proxy="localhost,127.0.0.1,192.168.188.0\24"
export https_proxy=$http_proxy
export ftp_proxy=$http_proxy
export rsync_proxy=$http_proxy
echo -e "Proxy environment variable set."
}
function proxyoff(){
unset http_proxy
unset https_proxy
unset ftp_proxy
unset rsync_proxy
unset no_proxy
echo -e "Proxy environment variable removed."
}
Super, danke! Auch ein ziemlicher Brocken.
Code: Alles auswählen
function initColors () {
# Diese Funktion initialisiert einige Variablen mit ANSI-Farbwerten.
# Verwendung: printf "${fg196}Dieser Satz ist rot.\n$fgRES"
for i in {0..255}; do export fg$i="\x1b[38;5;${i}m"; export bg$i="\x1b[48;5;${i}m"; done
export fgGRN=$fg118; # Grün
export fgGRNS=$fg154; export fgPROMPT=$fgGRNS # Signalgrün
export fgORA=$fg208; export fgHEADER=$fgORA # Braunorange
export fgRED=$fg196; # Rot
export fgTRQ=$fg51; # Türkis
export fgYEL=$fg226; # Gelb
export fgYELP=$fg184; # Blassgelb
export fgLOGO=$fgYEL$bg19
export fgRES="\x1b[0m"; # Reset
export fgBLD="\x1b[1m"; # Bold
}
Code: Alles auswählen
/usr/bin/tmux attach || /usr/bin/tmux new
Code: Alles auswählen
ssh -tt deinhost tmux a -t chat
Ja, würde sie.uname hat geschrieben:15.10.2023 12:03:53Leider weiß ich nicht, ob damit .bashrc doppelt ausgeführt wird und dieses zu Problemen führen kann.
Code: Alles auswählen
if [[ ! -v TMUX ]]; then
/usr/bin/tmux attach || /usr/bin/tmux new
fi
Aliases wie die Systemctl-Aliases oder auch die Docker Aliases benötigen ein Sudo, der sudo='sudo ' ermöglich das auch aliases funktioniern welche ein sudo verlangen.dasebastian hat geschrieben:15.10.2023 09:20:03Super, danke! Auch ein ziemlicher Brocken.
Ich durchschaue nicht alles, die Systemctl-Aliases finde ich sehr interessant.
Was erleichtert dir dein Sudo-Alias mit dem Leerzeichen? Anscheinend hatte ich noch nicht genug Kaffee...
Code: Alles auswählen
🐧[debian@debian-virtualbox] ~ $ sudo stop firewall
[sudo] Passwort für debian:
sudo: stop: Befehl nicht gefunden
Muß man natürlich an die eigenen Namen anpassen, das Log ebenfalls. Ich habe kein persistentes Journal und mich interessieren nur Fehler, daher -p5.# aliases
alias ll='ls -l'
alias la='ls -la'
alias log='journalctl -b -p5'
alias nk='networkctl status eth0'
alias nw='networkctl status wlan0'
alias nl='networkctl list'
alias ns='systemctl status systemd-networkd'
alias dae='doas systemctl daemon-reload'
Jetzt muss ich doch mal fragen warum sudo nicht in Frage kommt.KP97 hat geschrieben:da sudo grundsätzlich nicht in Frage kommt.
Was willst Du uns denn mit dieser tiefschürfenden Erkenntnis mitteilen?uname hat geschrieben:19.10.2023 07:00:06Ein wenig wie Windows. Der Benutzer schränkt sich ein aber solange der Virenscanner Administratorrechte hat ist alles gut ...