1 Script / Skript
Man kann sich ein Skript wie ein digitales Kochrezept oder eine To-do-Liste vorstellen: Statt dass du jeden Befehl einzeln nacheinander mühsam von Hand in das Terminal eintippen musst, liest die Shell diese Textdatei von oben nach unten durch und arbeitet alle Befehle vollautomatisch, blitzschnell und fehlerfrei nacheinander ab.
Ein Skript benötigt keine teuren Programmierwerkzeuge. Du kannst es mit jedem stinknormalen Texteditor (wie Gedit, Kate, Nano oder direkt in deinem Obsidian-Vault) schreiben. Unter Linux haben diese Dateien meistens die Endung .sh (für Shell).
1.1 🔬 Die Anatomie eines Linux-Skripts (Wie sieht das aus?)
Ein einfaches Skript, das zum Beispiel das System aktualisiert und danach automatisch aufräumt, sieht typischerweise so aus:
#!/bin/bash
# Ein einfaches Skript für das wöchentliche System-Update
echo "Starte System-Update..."
sudo apt update && sudo apt upgrade -y
echo "Räume alte Paket-Reste auf..."
sudo apt autoremove -y
echo "Update erfolgreich beendet!"
1.1.1 Die geheimen Bausteine erklärt:
- Der "Shebang" (#!/bin/bash):
Das ist die allererste Zeile in fast jedem Linux-Skript. Sie verrät dem System, wer dieses Rezept überhaupt kochen soll – in diesem Fall die Bash-Shell. - Die Kommentare (#):
Alles, was nach einer Raute steht, wird von Linux komplett ignoriert. Hier kannst du für dich selbst (oder für andere Forenmitglieder) in normalem Deutsch dazuschreiben, was dieser Befehl gerade tut. - Der Befehl echo:
Das ist der Linux-Befehl für „Sprich nach!“. Er sorgt dafür, dass das Skript während der Arbeit kurzen Info-Text im Terminal anzeigt, damit du weißt, bei welchem Schritt es gerade ist.
1.2 🛠️ Die 3 Schritte zum eigenen Skript
Wenn ein Nutzer im Forum ein fertiges Skript kopiert, wundert er sich oft, warum es per Doppelklick nicht startet. Unter Linux muss man ein Skript immer über drei Schritte aktivieren:
- Datei erstellen:
Eine Textdatei anlegen und die Befehle hineinkopieren (z. B. als backup.sh). Das Skript "ausführbar" machen (Der wichtigste Schritt!):
Aus Sicherheitsgründen ignoriert Linux jede Textdatei, um zu verhindern, dass Schadcode aus Versehen startet. Du musst der Datei explizit das Recht geben, ein Programm zu sein. Das geht im Terminal mit dem Befehl:(Alternativ: Rechtsklick auf die Datei -> Eigenschaften -> Berechtigungen -> „Datei als Programm ausführen“ anklicken).
- Starten: Jetzt kannst du das Skript im Terminal mit ./backup.sh oder per Doppelklick zum Leben erwecken.
1.3 ⚠️ Die klassischen Stolpersteine
Wenn Skripte nicht funktionieren, liegt es meistens an zwei ganz typischen Fehlern:
1.3.1 1. Die Windows-Zeilenumbruch-Falle (CRLF vs. LF)
- Das Problem:
Ein Nutzer schreibt ein Linux-Skript auf einem Windows-PC (z. B. mit dem Windows-Editor) und kopiert die Datei auf seinen Linux-Server. Beim Start bricht das Skript sofort mit völlig unlogischen Fehlermeldungen ab. - Die Ursache:
Windows und Linux nutzen unsichtbare Steuerzeichen für das Ende einer Zeile. Windows nutzt CRLF (Carriage Return + Line Feed), Linux aber nur LF. Die Linux-Shell versucht nun, das unsichtbare Windows-Zeichen als Befehl zu lesen und stolpert. - Die Lösung:
Skripte für Linux immer direkt unter Linux schreiben! Falls das Kind schon in den Brunnen gefallen ist, hilft das kleine Linux-Werkzeug dos2unix im Terminal, das die Datei mit dem Befehl dos2unix dateiname.sh sofort repariert.
1.3.2 2. Das Skript bricht bei Passwörtern ab
- Das Problem:
Ein Nutzer baut einen sudo-Befehl in sein Skript ein, das nachts vollautomatisch laufen soll. Das Skript bleibt einfach stehen und tut nichts mehr. - Die Ursache:
Sobald ein Skript auf das Wörtchen sudo stößt, stoppt Linux und verlangt die Eingabe des Administrator-Passworts. Da nachts aber niemand vor dem PC sitzt, wartet das Skript bis zum Sankt-Nimmerleins-Tag. - Die Lösung:
Für automatisierte Hintergrund-Aufgaben (z. B. über einen Cronjob) nutzt man kein sudo innerhalb des Skripts, sondern man lässt das gesamte Skript direkt vom Systemnutzer Root ausführen.