Aufgaben Bash diverses: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Aufgabe: Benutzerverwaltung= ;Schreibe ein Bash-Script, das die Benutzerverwaltung auf einem Linux-System unterstützt. Das Skript sollte die folgenden Funkti…“) |
|||
| Zeile 91: | Zeile 91: | ||
echo | echo | ||
| + | done | ||
| + | --> | ||
| + | |||
| + | = 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 | done | ||
--> | --> | ||
Version vom 5. Juni 2023, 20:41 Uhr
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 -->