Aufgaben Bash diverses
Version vom 5. Juni 2023, 20:41 Uhr von Linkai.zhang (Diskussion | Beiträge)
Aufgabe: Benutzerverwaltung
- Schreibe ein Bash-Script, das die Benutzerverwaltung auf einem Linux-System unterstützt. Das Skript sollte die folgenden Funktionen bereitstellen
- Benutzer hinzufügen
- Benutzer löschen
- Benutzer deaktivieren
- Benutzer aktivieren
- Benutzerliste anzeigen
- Das Skript sollte eine while-Schleife verwenden, um Benutzereingaben entgegenzunehmen,
- eine if-Bedingung, um den entsprechenden Code für die ausgewählte Aktion auszuführen,
- und eine case-Anweisung, um die verschiedenen Optionen zu behandeln.
- Es sollte Functionen enthalten.
Starten von Desktopanwendungen
- Schreiben Sie ein Skript, welches in den Ordnern /usr/share/applications, ~/.local/share/applications und ~/Desktop nach .desktop-Dateien sucht
- Falls die Datei Name=... und Exec=... enthält sollen diese in einem assoziativen Array gespeichert werden (Key-Value Paar)
- Danach soll das Skript die Möglichkeit bieten alle Namen in less anzuzeigen...
- ...oder das in Exec=... aufgeführte Kommando ausführen, falls Teile des Anwendungsnamens angegeben werden
<--
- !/bin/bash
DESKTOP=/usr/share/applications:~/.local/share/applications:~/Desktop declare -A OPTIONS
- Suche alle .desktop Dateien
for d in $(echo $DESKTOP | sed "s/:/\n/g"); do
for i in $(ls $d/*.desktop 2> /dev/null); do
APPS+=("$i")
done
done
- Verbinde Anwendungsnamen mit Kommandozeilenbefehl
for a in "${APPS[@]}"; do
KEY=$(grep -m 1 "^Name=" $a | cut -d "=" -f 2) VAL=$(grep -m 1 "^Exec=" $a | cut -d "=" -f 2 | cut -d "%" -f 1) [ "$KEY" ] && OPTIONS["$KEY"]=$VAL && NAMES+="$KEY\n"
done
- Eingabe von l zeigt die gefunden Namen
- Sonst wird der erste grep Match ausgeführt
while true; do
echo -n "Enter l to list Apps: " ; read CHOICE case $CHOICE in
"l") echo -e "$NAMES" | less ;; *) MATCH=$(echo -e "$NAMES" | grep -m 1 -i $CHOICE) eval "${OPTIONS[$MATCH]}" exit 0 ;;
esac
done -->