Ein benutzerfreundliches GUI-Programm zur Erstellung von Bash-Scripts mit visueller Unterstützung.
Features
Hauptfunktionen
- Visuelle Script-Erstellung: Einfache Erstellung von Bash-Scripts durch Drag-and-Drop von Befehlsbausteinen
- Intelligente Tab-Unterstützung: Automatische Einrückung mit 4 Leerzeichen (Bash-Standard)
- Autovervollständigung: Kontextabhängige Vorschläge für Befehle, Variablen und Pfade
- Syntax-Highlighting: Automatische Hervorhebung von Bash-Syntaxelementen
- Zenity-Integration: Einfache Integration von Zenity-Dialogen für interaktive Scripts
- Live-Editor: Echtzeit-Syntaxhervorhebung während der Eingabe
- Automatische Formatierung: Smarte Einrückung basierend auf Bash-Strukturen
- Script-Ausführung: Direktes Testen der erstellten Scripts
Verfügbare Befehlsbausteine
Grundlagen
- Shebang-Zeile
- Echo-Befehle
- Eingabe lesen
- Bedingte Anweisungen (if/then/else)
- Schleifen (for/while)
- Case-Anweisungen
- Funktionsdefinitionen
Zenity-Dialoge
- Info-Dialoge
- Fehler-Dialoge
- Warnungs-Dialoge
- Frage-Dialoge
- Eingabedialoge
- Dateiauswahl
- Fortschrittsbalken
- Listen-Dialoge
Systembefehle
- Dateioperationen (ls, cd, mkdir, rm, cp, mv)
- Berechtigungen (chmod)
- Prozessverwaltung (ps, kill)
- Textverarbeitung (grep, sed, awk)
Variablen und Operatoren
- Variablenzuweisung
- String-Operationen
- Array-Operationen
- Vergleichsoperatoren
Installation
Voraussetzungen
- Python 3.8 oder höher
- Tkinter (GUI-Bibliothek)
- Zenity (für Dialog-Funktionen)
- Linux-Distribution mit apt, dnf, pacman oder ähnlichem Paketmanager
Automatische Installation mit Desktop-Integration
Empfohlene Methode (automatische Erkennung):
git clone https://github.com/securebitsorg/bash-script-maker.git
cd bash-script-maker
./install.shDas Script erkennt automatisch Ihren Paketmanager, installiert alle notwendigen Abhängigkeiten und richtet die Desktop-Integration ein.
Spezifisch für Distributionen:
Für Ubuntu/Debian-basierte Systeme:
Für Fedora/RHEL/CentOS-basierte Systeme:
Nur Desktop-Integration installieren
Falls Sie die App bereits installiert haben und nur die Desktop-Integration hinzufügen möchten:
./install_desktop_integration.sh
Manuelle Installation
Wenn die automatischen Scripts nicht funktionieren, installieren Sie die Pakete manuell:
Ubuntu/Debian:
sudo apt update sudo apt install python3 python3-tk python3-pip zenity xterm
Fedora/RHEL/CentOS:
sudo dnf install python3 python3-tkinter python3-pip zenity xterm
Arch Linux:
sudo pacman -S python python-tk python-pip zenity xterm
Andere Distributionen:
Siehe packages.txt für detaillierte Paketlisten.
Python-Abhängigkeiten
pip install -r requirements.txt
Überprüfung der Installation
Nach der Installation können Sie testen, ob alles korrekt funktioniert:
./test_installation.sh ./tools/test_dependencies.py
Diese Scripts überprüfen alle Abhängigkeiten und geben detaillierte Informationen über eventuelle Probleme.
Verfügbare Scripts
Das Projekt enthält folgende Installations- und Hilfsscripts:
install.sh- Universelles Installationsscript (empfohlen)install_apt.sh- Spezifisch für Ubuntu/Debianinstall_dnf.sh- Spezifisch für Fedora/RHEL/CentOStest_installation.sh- Überprüft die Installationtools/test_dependencies.py- Detaillierte Dependency-Teststests/test_basic.py- Pytest-Tests für grundlegende Funktionalitätstart.sh- Startet das Programm mit Abhängigkeitsprüfung
Alle Scripts sind ausführbar und können direkt aufgerufen werden.
Verwendung
Programm starten
Über das Anwendungsmenü: Nach der Installation finden Sie "Bash-Script-Maker" im Anwendungsmenü Ihrer Desktop-Umgebung.
Über das Terminal:
Direkt aus dem Quellcode:
python3 bash_script_maker.py
Desktop-Integration
Die App wird automatisch mit einem benutzerdefinierten Icon und Desktop-Integration installiert:
- Icon: Ein modernes SVG-Icon mit Terminal-Design
- Desktop-Datei: Vollständige Integration in das Anwendungsmenü
- Kategorien: Development und Utility
- Unterstützte Distributionen: Alle Linux-Distributionen mit Desktop-Umgebung
Script erstellen
- Wählen Sie die gewünschten Befehlsbausteine aus der linken Palette
- Klicken Sie auf einen Baustein, um ihn in den Editor einzufügen
- Bearbeiten Sie die Parameter nach Bedarf
- Speichern Sie das Script
- Testen Sie es mit der Ausführen-Funktion
Tastenkombinationen
Ctrl+N: Neues ScriptCtrl+O: Script öffnenCtrl+S: Script speichernCtrl+Shift+S: Script speichern unterCtrl+Q: Programm beendenF5: Script ausführenCtrl+Z: RückgängigCtrl+Y: Wiederholen
Editor-Tastenkombinationen
Tab: Einrücken (aktuelle Zeile oder Auswahl)Shift+Tab: Ausrücken (aktuelle Zeile oder Auswahl)Ctrl+A: Alles auswählenCtrl+D: Zeile duplizierenCtrl+/: Kommentar umschaltenCtrl+Space: Autovervollständigung anzeigenCtrl+Tab: Alternative für AutovervollständigungEnter: Automatische Einrückung in neuen ZeilenBackspace: Intelligente Ausrückung bei Tab-StopsEscape: Vorschlagsliste schließen
Automatische Formatierung
Der Editor erkennt automatisch Bash-Strukturen und passt die Einrückung an:
- Nach
if,then,else,for,while,case,functionwird eingerückt - Nach
fi,done,esacwird ausgerückt - Einrückung mit 4 Leerzeichen (Bash-Standard)
Autovervollständigung
Die intelligente Autovervollständigung bietet kontextabhängige Vorschläge:
Unterstützte Vorschlagstypen
- Bash-Befehle: ls, cp, mv, grep, sed, awk, find, etc.
- Bash-Schlüsselwörter: if, then, else, fi, for, while, function, etc.
- Variablen: $HOME, $PATH, $PWD, $USER, benutzerdefinierte Variablen
- Datei- und Pfadvervollständigung: Automatische Vervollständigung von Pfaden
- Befehlsoptionen: Häufig verwendete Optionen für bekannte Befehle
Navigation in Vorschlägen
↑/↓: Zwischen Vorschlägen navigierenEnter/Tab: Vorschlag übernehmenEscape: Vorschlagsliste schließenMausrad: Durch Liste scrollen
Kontextabhängige Vorschläge
- Am Zeilenanfang: Alle verfügbaren Befehle und Schlüsselwörter
- Bei $: Variablen-Vorschläge
- Bei Pfaden: Datei- und Verzeichnisvervollständigung
- Nach bekannten Befehlen: Relevante Optionen
Beispiel-Script
Das Programm erstellt automatisch ein grundlegendes Script-Template:
Technische Details
- GUI-Framework: Tkinter
- Syntax-Highlighting: Regex-basierte Mustererkennung
- Dateiformat: Reine Bash-Scripts (.sh)
- Encoding: UTF-8
- Plattform: Linux (aufgrund Zenity-Abhängigkeit)
CI/CD Pipeline
Dieses Projekt verwendet GitHub Actions für kontinuierliche Integration und automatische Releases.
- CI/CD Pipeline (
.github/workflows/ci-cd.yml):- Tests auf Python 3.8-3.12
- Code-Qualität-Checks (Flake8, Black, MyPy)
- Automatische Releases mit semantic-release
- Package-Publishing zu PyPI und GitHub Packages
- Docker-Image-Erstellung
- Dokumentationsgenerierung
- Sicherheitsscans (Bandit, Safety)
Automatische Releases
Das Projekt verwendet Conventional Commits für automatische Versionierung:
feat:→ Minor Release (1.1.0 → 1.2.0)fix:→ Patch Release (1.1.0 → 1.1.1)BREAKING CHANGE:→ Major Release (1.1.0 → 2.0.0)
Beispiel-Commits:
git commit -m "feat: add new syntax highlighting theme" git commit -m "fix: resolve tab indentation bug" git commit -m "docs: update installation instructions"
-
Security Scan (
.github/workflows/security-scan.yml):- Security-Scans mit Bandit und Safety
- Funktioniert in Forks und Haupt-Repository
- Keine speziellen Berechtigungen erforderlich
-
Manueller Release (
.github/workflows/manual-release.yml):- Manuelle Versionserstellung
- Flexible Release-Notes
Lokale Entwicklung
Pre-commit Hooks einrichten:
pip install pre-commit pre-commit install pre-commit run --all-files
Tests ausführen:
tox
# oder spezifische Umgebungen
tox -e py39,lint,typePackage bauen:
Tests ausführen:
# Alle Tests mit Coverage pytest # Spezifische Tests pytest tests/test_basic.py # Mit Coverage-Bericht pytest --cov=bash_script_maker --cov=syntax_highlighter --cov-report=html
Mitwirken
Beiträge sind willkommen! Siehe CONTRIBUTING.md für detaillierte Anweisungen.
Schnellstart für Contributors:
- Fork das Repository
git clone https://github.com/securebitsorg/bash-script-maker.gitcd bash-script-maker && ./install.shpip install -e ".[dev]"pre-commit install- Entwickeln und testen
./init_github.sh(für automatischen Push)- Pull Request erstellen
Übersetzungen beisteuern
Wir freuen uns über Hilfe bei der Übersetzung des Bash-Script-Makers in neue Sprachen!
So fügen Sie eine neue Sprache hinzu:
-
Sprach-Code finden: Finden Sie den zweibuchstabigen ISO 639-1 Code für Ihre Sprache (z.B.
frfür Französisch). -
Verzeichnis erstellen: Erstellen Sie ein neues Verzeichnis unter
locales/. Für Französisch wäre daslocales/fr/LC_MESSAGES/. -
Übersetzungsdatei erstellen:
- Kopieren Sie die deutsche Vorlagendatei:
cp locales/de/LC_MESSAGES/base.po locales/fr/LC_MESSAGES/base.po - Öffnen Sie die neue
.po-Datei mit einem Texteditor oder einem speziellen Tool wie Poedit.
- Kopieren Sie die deutsche Vorlagendatei:
-
Texte übersetzen:
- Gehen Sie die Datei durch und übersetzen Sie alle Texte, die in
msgid "..."stehen. - Tragen Sie Ihre Übersetzung in das
msgstr "..."-Feld direkt darunter ein. - Wichtig: Lassen Sie Platzhalter wie
{}unverändert.
Beispiel:
msgid "Datei" msgstr "File" msgid "Script gespeichert: {}" msgstr "Script saved: {}"
- Gehen Sie die Datei durch und übersetzen Sie alle Texte, die in
-
Übersetzung kompilieren:
- Damit das Programm Ihre Übersetzung nutzen kann, muss sie kompiliert werden. Führen Sie dazu einfach das mitgelieferte Skript aus:
python compile_translations.py
- Dieses Skript benötigt eventuell die
polib-Bibliothek. Falls nicht vorhanden, installieren Sie sie mit:pip install polib.
-
Sprache im Menü hinzufügen:
- Öffnen Sie die Datei
bash_script_maker.py. - Suchen Sie nach
language_menu. - Fügen Sie einen neuen Eintrag für Ihre Sprache hinzu, ähnlich wie die bereits vorhandenen für Deutsch und Englisch.
- Öffnen Sie die Datei
-
Pull Request erstellen: Erstellen Sie einen Pull Request mit Ihren Änderungen, damit wir die neue Sprache in das Projekt aufnehmen können.
Vielen Dank für Ihre Hilfe!
Repository zu GitHub pushen:
# Automatisch (empfohlen) ./init_github.sh # Oder manuell git add . git commit -m "Your commit message" git push
Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Siehe LICENSE-Datei für Details.
Autor
Erstellt von Marcel Dellmann mit ❤️ für Bash-Script-Enthusiasten\n> Automatisches Release: Testeintrag.