Umfassendes Übungsprojekt zur Verwaltung von Shell-Skripten mit Git-Branches, Commits, Pushes und Merges in den Master-Branch.
- 🎯 Projektübersicht
- 📁 Projektstruktur
- 🔧 Verwendete Technologien
- 📝 Erstellte Shell-Skripte
- 💻 Installation & Setup
- 🚀 Anleitung zur Nutzung
- 📊 Git-Workflow
- 🌳 Branch-Verwaltung
- 📚 Wichtige Shell-Befehle
- 🔍 Tipps & Tricks
- 👤 Autor
- 📄 Lizenz
Dieses Repository ist ein Lernprojekt für die Kombination von:
✅ Shell-Scripting — Automatisierung von Systemaufgaben
✅ Bash-Programmierung — Praktische Skripte für Admin-Aufgaben
✅ Git-Versionskontrolle — Verwaltung von Code-Änderungen
✅ Branch-Management — Feature-Branches und Merges
✅ Best Practices — Professionelle Entwicklungs-Workflows
Das Projekt demonstriert, wie verschiedene Shell-Skripte in einem strukturierten Git-Workflow entwickelt und gemergt werden.
git-shell-admin-uebung/
├── README.md # 📄 Diese Datei
├── scripts/ # 📂 Verzeichnis für alle Shell-Skripte
│ ├── systeminfo.sh # 🖥️ Systeminformationen
│ ├── dateipruefung.sh # 📋 Dateiprüfung
│ ├── projektstruktur.sh # 📁 Projektgenerator
│ └── admin-menu.sh # ⚙️ Admin-Menü
├── .gitignore # 🚫 Git-Ignore-Konfiguration
└── docs/ # 📚 Dokumentation (optional)
| Technologie | Version | Beschreibung |
|---|---|---|
| Bash/Shell | 5.0+ | Shell-Scripting Sprache |
| Git | 2.x+ | Versionskontrollsystem |
| Linux/Unix | Standard | Betriebssystem |
| Markdown | Standard | Dokumentationsformat |
Funktion: Zeigt grundlegende Systeminformationen an
Ausgabe:
- 👤 Benutzername
- 🌐 Hostname
- 📅 Aktuelles Datum und Uhrzeit
- 📂 Aktuelles Arbeitsverzeichnis
Ausführung:
bash scripts/systeminfo.shBeispiel-Output:
=== SYSTEMINFORMATIONEN ===
Benutzer: harry
Hostname: ubuntu-server
Datum/Zeit: Mon Aug 25 14:30:45 UTC 2026
Verzeichnis: /home/harry/git-shell-admin-uebung
Funktion: Prüft, ob eine Datei existiert
Ablauf:
- 🔔 Benutzer wird aufgefordert, einen Dateinamen einzugeben
- 🔍 Skript prüft, ob die Datei existiert
- ✅ oder ❌ Entsprechende Meldung wird angezeigt
Ausführung:
bash scripts/dateipruefung.shBeispiel-Interaktion:
Geben Sie einen Dateinamen ein: test.txt
✅ Datei 'test.txt' existiert!
Funktion: Erstellt automatisch eine Projektstruktur
Features:
- 🔔 Fragt nach einem Projektnamen
- 📂 Erstellt Ordnerstruktur automatisch
- 📝 Generiert Info-Datei
Erstellte Struktur:
<Projektname>/
├── docs/ # 📚 Dokumentation
├── logs/ # 📋 Log-Dateien
├── backup/ # 💾 Backups
└── info.txt # ℹ️ Projektinfo
Ausführung:
bash scripts/projektstruktur.shBeispiel-Interaktion:
Geben Sie einen Projektnamen ein: mein-projekt
✅ Projekt 'mein-projekt' wurde erfolgreich erstellt!
Folgende Ordner wurden angelegt: docs, logs, backup
Funktion: Interaktives Terminal-Menü für Admin-Aufgaben
Menü-Optionen:
╔══════════════════════════════════╗
║ ADMIN CONTROL PANEL ║
╠══════════════════════════════════╣
║ 1. Systeminformationen anzeigen ║
║ 2. Datum/Uhrzeit anzeigen ║
║ 3. Aktuelles Verzeichnis zeigen ║
║ 4. Hilfe anzeigen ║
║ 5. Programm beenden ║
╚══════════════════════════════════╝
Ausführung:
bash scripts/admin-menu.sh- Linux/Unix oder macOS mit Bash 5.0+
- Git installiert (git-scm.com)
- Terminal/Command-Line-Zugriff
- Grundlegende Unix-Befehle (ls, mkdir, etc.)
# HTTPS
git clone https://github.com/harry0203vn/git-shell-admin-uebung.git
# SSH
git clone git@github.com:harry0203vn/git-shell-admin-uebung.git
# In das Verzeichnis wechseln
cd git-shell-admin-uebung# Alle Skripte ausführbar machen
chmod +x scripts/*.sh
# Oder einzeln
chmod +x scripts/systeminfo.sh
chmod +x scripts/dateipruefung.sh
chmod +x scripts/projektstruktur.sh
chmod +x scripts/admin-menu.sh# Git-Log anschauen
git log --oneline --all --graph
# Alle Branches auflisten
git branch -a
# Status prüfen
git status# Admin-Menü starten (empfohlen)
bash scripts/admin-menu.sh
# Oder einzelne Skripte:
bash scripts/systeminfo.sh
bash scripts/dateipruefung.sh
bash scripts/projektstruktur.sh# Neuen Feature-Branch erstellen
git checkout -b feature/mein-skript
# Neues Skript erstellen/bearbeiten
nano scripts/mein-skript.sh
# Ausführbar machen
chmod +x scripts/mein-skript.sh
# Testen
bash scripts/mein-skript.sh
# Zu Git hinzufügen
git add scripts/mein-skript.sh
# Commit erstellen
git commit -m "feature: Neues Admin-Skript hinzugefügt"
# Push zum Remote
git push origin feature/mein-skriptDieses Projekt folgt einem Feature-Branch-Workflow:
┌─ feature/systeminfo
│ │
master ◄────────┴──────┘
│
├─ feature/dateipruefung
│ │
◄──────┘
│
├─ feature/projektstruktur
│ │
◄──────┘
│
└─ feature/menu
│
◄──────┘
- 🌳 Feature-Branch erstellen:
git checkout -b feature/name - ✏️ Skript bearbeiten und testen
- 📝 Commit erstellen:
git commit -m "..." - 🚀 Push zum Remote:
git push origin feature/name - 🔀 Merge in master:
git merge feature/name
| Branch | Skript | Status |
|---|---|---|
feature/systeminfo |
systeminfo.sh | ✅ Merged |
feature/dateipruefung |
dateipruefung.sh | ✅ Merged |
feature/projektstruktur |
projektstruktur.sh | ✅ Merged |
feature/menu |
admin-menu.sh | ✅ Merged |
# Branch erstellen
git branch feature/name
# Zu Branch wechseln
git checkout feature/name
# Branch erstellen und wechseln
git checkout -b feature/name
# Alle Branches anzeigen
git branch -a
# Branch mergen
git checkout master
git merge feature/name
# Branch löschen
git branch -d feature/name| Befehl | Funktion |
|---|---|
echo |
Text ausgeben |
read |
Benutzereingabe lesen |
if [ ... ] |
Bedingungen testen |
for ... in |
Schleifen |
mkdir |
Ordner erstellen |
touch |
Datei erstellen |
ls |
Dateien auflisten |
pwd |
Aktuelles Verzeichnis anzeigen |
whoami |
Benutzername anzeigen |
| Befehl | Funktion |
|---|---|
[ -f file ] |
Prüft ob Datei existiert |
[ -d dir ] |
Prüft ob Ordner existiert |
[ -r file ] |
Prüft ob lesbar |
[ -w file ] |
Prüft ob schreibbar |
[ -x file ] |
Prüft ob ausführbar |
# Variable setzen
NAME="Wert"
# Variable auslesen
echo $NAME
# Spezielle Variablen
$0 # Skript-Name
$1, $2, ... # Argumente
$# # Anzahl Argumente
$? # Exit-Code des letzten Befehls# ✅ Immer Shebang am Anfang:
#!/bin/bash
# ✅ Set -e option (Script bei Fehler beenden)
set -e
# ✅ Variablen in Anführungszeichen
echo "Hallo $NAME"
# ✅ Aussagekräftige Funktionsnamen
function check_file() {
...
}
# ✅ Kommentare verwenden
# Dies ist ein Kommentar# Mit Debug-Modus ausführen
bash -x scripts/mein-skript.sh
# Oder in Skript:
set -x # Aktiviert Debug
set +x # Deaktiviert Debug
# Exit-Code prüfen
bash scripts/mein-skript.sh
echo $? # 0 = Erfolg, >0 = Fehler# Farben im Terminal
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}✅ Erfolg!${NC}"
echo -e "${RED}❌ Fehler!${NC}"👨💻 Harry
🏢 Position: IT-Support / System Administrator
🎓 Ausbildung: Sky Education
📧 GitHub: @harry0203vn
Dieses Projekt steht unter der MIT License. Siehe LICENSE-Datei für Details.
MIT License
Copyright (c) 2026 Harry
Permission is hereby granted, free of charge...
Beiträge sind willkommen! Bitte erstelle einen neuen Feature-Branch:
# Fork und klonen
git clone https://github.com/DEIN-USERNAME/git-shell-admin-uebung.git
cd git-shell-admin-uebung
# Feature-Branch erstellen
git checkout -b feature/neue-funktion
# Skript bearbeiten und testen
nano scripts/neue-funktion.sh
chmod +x scripts/neue-funktion.sh
bash scripts/neue-funktion.sh
# Commit und Push
git add scripts/neue-funktion.sh
git commit -m "feature: Neue Admin-Funktion hinzugefügt"
git push origin feature/neue-funktion
# Pull Request auf GitHub öffnenF: Welche Bash-Version benötige ich?
A: Mindestens Bash 4.0, empfohlen 5.0+. Prüfe mit: bash --version
F: Können die Skripte auf Windows laufen?
A: Ja, mit WSL (Windows Subsystem for Linux) oder Git Bash.
F: Wie kann ich ein Skript debuggen?
A: Nutze bash -x skript.sh für Debug-Output.
F: Muss ich die Skripte mit bash oder ./ ausführen?
A: Beide Wege gehen. Mit chmod +x kannst du direkt ./scripts/skript.sh nutzen.