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…“) |
|||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 92: | Zeile 92: | ||
echo | echo | ||
done | 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 | ||
| + | |||
| + | <!-- | ||
| + | <syntaxhighlight lang=bash> | ||
| + | #!/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 | ||
| + | </syntaxhighlight> | ||
--> | --> | ||
Aktuelle Version vom 5. Juni 2023, 20:42 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