Terminalbefehle

Für viele Linux-Anwender ist das Terminal ein unverzichtbares Werkzeug, weil es Aufgaben präzise, wiederholbar und oft schneller erledigt als grafische Programme. Linux Mint 22 bietet dafür eine stabile Grundlage mit Bash, GNU-Werkzeugen, apt, systemd, NetworkManager und vielen klassischen Unix-Kommandos. Wer die wichtigsten Befehle versteht, navigiert sicher durch Verzeichnisse, prüft Dateien, installiert Programme, analysiert Fehler und automatisiert wiederkehrende Arbeitsschritte.
Ein Terminalbefehl besteht meist aus dem Programmnamen, Optionen und Argumenten. In ls -lah /etc ist ls der Befehl, -lah sind Optionen und /etc ist das Zielverzeichnis. Linux unterscheidet Groß- und Kleinschreibung: Datei.txt und datei.txt sind zwei verschiedene Namen. Pfade mit Leerzeichen müssen in Anführungszeichen stehen, etwa cd "Meine Dateien". Die Tab-Taste vervollständigt Befehle und Dateinamen, die Pfeiltasten rufen frühere Befehle auf, und Strg + C bricht einen laufenden Befehl ab.
Besondere Vorsicht verdienen Befehle mit Schreibzugriff, Root-Rechten oder rekursiver Wirkung. sudo führt Befehle mit Administratorrechten aus, rm löscht Dateien ohne Papierkorb, chmod -R ändert Rechte ganzer Ordnerbäume und mkfs formatiert Datenträger. Sichere Arbeitsweise bedeutet: erst mit pwd, ls, find oder --dry-run prüfen, dann den Befehl ausführen, anschließend das Ergebnis kontrollieren. Platzhalter wie *.txt und Beispielgeräte wie /dev/sdX niemals blind kopieren, sondern immer durch den eigenen, geprüften Pfad ersetzen.
Wichtige Grundlage vorab: Die Linux-Verzeichnisstruktur
Unter Windows orientieren sich viele Nutzer an Laufwerksbuchstaben wie C:\, D:\ oder E:\. Auf C:\ liegen typischerweise Windows selbst, Programme, Benutzerprofile, System32, ProgramData und AppData. Linux arbeitet anders: Es gibt einen einzigen Verzeichnisbaum, der bei / beginnt. Dieses / heißt Wurzelverzeichnis. Alle internen Laufwerke, USB-Sticks, Netzlaufwerke, Systemordner und Benutzerordner erscheinen irgendwo unterhalb dieses einen Baums.
Ein wichtiger Unterschied zu Windows ist das Einhängen von Datenträgern. Ein USB-Stick erhält unter Linux normalerweise keinen neuen Buchstaben wie E:\, sondern wird in einen vorhandenen Ordner eingebunden. Dieser Ordner heißt Mountpoint. Unter Linux Mint erscheinen automatisch eingehängte USB-Sticks häufig unter /media/benutzername/name-des-sticks. Mit lsblk -f sieht man Datenträger, Partitionen, Dateisystemtypen und Mountpoints. Mit findmnt sieht man, welche Dateisysteme aktuell wo eingehängt sind.
| Pfad | Was liegt dort? | Typische Beispiele |
|---|---|---|
/ | Wurzel des gesamten Verzeichnisbaums. Alle anderen Ordner, Datenträger und virtuellen Dateisysteme hängen darunter. | /home, /etc, /usr, /var, /dev |
/home | Persönliche Benutzerverzeichnisse normaler Nutzer. | /home/anna, /home/max, /home/max/Dokumente |
~ | Kurzform für das eigene Home-Verzeichnis des aktuell angemeldeten Benutzers. | ~/Downloads, ~/Bilder, ~/.config |
/root | Home-Verzeichnis des Administratorkontos root. | /root/.bashrc, /root/.ssh |
/etc | Systemweite Konfigurationsdateien. Hier liegen Einstellungen für Dienste, Paketquellen, Netzwerk, Benutzerverwaltung und viele Programme./etc wird meist als „et cetera“ gelesen. Historisch war es ein Sammelort für Dinge, die nicht klar in die klassischen Programmordner passten — also „und so weiter“. Mit der Zeit hat sich daraus der feste Ort für systemweite Konfigurationsdateien entwickelt. Heute sollte man /etc deshalb nicht mehr als beliebigen Restordner verstehen, sondern als Konfigurationszentrale des Systems. Beispiele sind Paketquellen, Netzwerkeinstellungen, Dienstkonfigurationen, Benutzer-/Gruppeninformationen und Startoptionen für Dateisysteme. | /etc/fstab, /etc/hosts, /etc/apt/sources.list.d/, /etc/ssh/sshd_config |
/usr | Der größte Bereich für installierte Programme, Bibliotheken, Dokumentation und gemeinsam genutzte Daten./usr steht historisch für „user“, meinte aber ursprünglich nicht das heutige Home-Verzeichnis der Benutzer. In frühen Unix-Systemen lagen dort zusätzliche Programme, Bibliotheken und Daten, die nicht zwingend für den minimalen Systemstart gebraucht wurden. Heute wird /usr meist als Bereich für installierte Systemprogramme, Bibliotheken und gemeinsam genutzte Programmdaten verstanden. Manche erklären /usr modern auch als „Unix System Resources“; das ist als Eselsbrücke brauchbar, aber historisch nicht der ursprüngliche Name. | /usr/bin, /usr/lib, /usr/share |
/bin | Grundlegende ausführbare Programme, die für normale Nutzer und den Systembetrieb wichtig sind. | /bin/ls, /bin/cp, /bin/mkdir, /bin/bash |
/sbin | Systemverwaltungsprogramme, traditionell für Administratoren. | fsck, reboot, ip, mount |
/usr/bin | Viele ausführbare Programme und Terminalbefehle für Benutzer und Anwendungen. | python3, nano, grep, curl, firefox |
/usr/sbin | Administrationsprogramme, die meist für Systemverwaltung gedacht sind. | sshd, useradd, groupadd |
/usr/lib | Bibliotheken und Programmkomponenten, die Programme zum Starten und Arbeiten benötigen. | .so-Bibliotheken, Plugin-Verzeichnisse, systemnahe Komponenten |
/usr/share | Architekturunabhängige Programmdaten wie Icons, Übersetzungen, Dokumentation, Desktop-Dateien und Vorlagen. | /usr/share/applications, /usr/share/doc, /usr/share/icons |
/var | Veränderliche System- und Dienstdaten. Der Inhalt wächst oder ändert sich im laufenden Betrieb. | /var/log, /var/cache, /var/lib, /var/spool |
/var/log | Logdateien von System, Diensten und Anwendungen. | /var/log/syslog, /var/log/auth.log, /var/log/apt/history.log |
/var/cache | Zwischenspeicher für Programme und Paketverwaltung. | APT-Paketcache, Vorschaubilder, Anwendungscaches |
/var/lib | Dauerhafte Arbeitsdaten von Diensten und Programmen. | Datenbanken, Paketstatus, Containerdaten, Dienstzustände |
/tmp | Temporäre Dateien für Programme und laufende Sitzungen. | Zwischendateien, temporäre Downloads, Socket-Dateien |
/boot | Dateien für den Systemstart, darunter Kernel, Initramfs und Bootloader-Komponenten. | vmlinuz, initrd.img, GRUB-Dateien |
/dev | Gerätedateien für Hardware und virtuelle Geräte. | /dev/sda, /dev/nvme0n1, /dev/null, /dev/tty |
/proc | Virtuelles Dateisystem mit Informationen über Prozesse und Kernelzustand. | /proc/cpuinfo, /proc/meminfo, /proc/1234 |
/sys | Virtuelles Dateisystem für Geräte, Treiber, Kernelobjekte und Hardwarezustände. | /sys/class, /sys/block, /sys/bus |
/run | Laufzeitdaten seit dem aktuellen Start. | PID-Dateien, Sockets, temporäre Dienstinformationen, Benutzer-Sitzungsdaten |
/media | Automatisch eingehängte Wechseldatenträger. | /media/anna/USB-STICK, /media/max/Backup |
/mnt | Manuelle, temporäre Einhängepunkte für Datenträger oder Netzwerkfreigaben. | /mnt/backup, /mnt/rettung, /mnt/server |
/opt | Optionale Zusatzsoftware, häufig von Drittanbietern. | Programme, die nicht klassisch über die Distributionspfade verteilt sind |
/srv | Daten, die von Serverdiensten bereitgestellt werden können. | Web-, FTP- oder andere Dienst-Daten |
/lost+found | Wiederhergestellte Dateifragmente nach Dateisystemprüfungen, typischerweise auf ext-Dateisystemen. | Dateifragmente nach fsck |
Programme liegen unter Linux selten als geschlossener Ordner an einer einzigen Stelle. Ein über die Paketverwaltung installiertes Programm kann seine ausführbare Datei unter /usr/bin, Bibliotheken unter /usr/lib, Symbole unter /usr/share/icons, Startmenü-Dateien unter /usr/share/applications, systemweite Konfiguration unter /etc und veränderliche Daten unter /var ablegen. Persönliche Einstellungen desselben Programms liegen zusätzlich im Home-Verzeichnis des Nutzers, häufig unter ~/.config, ~/.local/share oder ~/.cache.
Im Alltag arbeitet man fast immer im eigenen Home-Verzeichnis. Dort gehören persönliche Dokumente, Bilder, Downloads, Projekte, Skripte und nutzerspezifische Einstellungen hin. Typische versteckte Ordner sind ~/.config für Programmeinstellungen, ~/.local/bin für eigene ausführbare Dateien, ~/.local/share für nutzerbezogene Programmdaten und ~/.cache für neu erzeugbare Zwischendaten. Versteckte Dateien sind nicht besonders geheim; der Punkt am Anfang blendet sie nur in normalen Dateilisten aus.
Als Praxisregel gilt: Eigene Dateien gehören nach ~, systemweite Konfigurationen nach /etc, installierte Programme werden über die Paketverwaltung verwaltet, Logs liegen häufig unter /var/log, externe Datenträger erscheinen meist unter /media, und Gerätepfade unter /dev sind keine normalen Dateien. Vor Befehlen mit Schreibwirkung sollte man immer mit pwd, ls -lah, lsblk -f oder findmnt prüfen, ob man wirklich am richtigen Ort arbeitet.
Dateien erstellen, kopieren, verschieben, löschen
Dateibefehle wirken unmittelbar auf echte Daten. Anfänger sollten deshalb zuerst mit einem Testordner arbeiten: mkdir ~/terminal-test, cd ~/terminal-test, touch notiz.txt. So lassen sich Kopieren, Umbenennen und Löschen gefahrlos üben. Vor Operationen in fremden Ordnern helfen ls -lah und file dateiname, um Ziel, Typ und Inhalt grob zu prüfen.
- touch: Erstellt eine leere Datei oder aktualisiert den Zeitstempel einer vorhandenen Datei.
touch notizen.txterzeugt eine Datei ohne Inhalt. Der Befehl eignet sich für Tests, Platzhalterdateien und Skripte, die eine Datei sicherstellen müssen. - cp (copy): Kopiert Dateien oder Ordner.
cp bericht.pdf bericht-kopie.pdfkopiert eine Datei. Mitcp -r Bilder Sicherungwerden Ordner rekursiv kopiert. Für Backups eignet sich häufigcp -a, weil Rechte, Zeitstempel und symbolische Links besser erhalten bleiben. Mitcp -ifragt Linux nach, bevor vorhandene Dateien überschrieben werden. - mv (move): Verschiebt oder benennt Dateien und Ordner um.
mv alt.txt neu.txtbenennt eine Datei um,mv foto.jpg ~/Bilder/verschiebt sie. Bestehende Zieldateien können überschrieben werden;mv -ischützt durch Nachfrage. Vor großen Verschiebeaktionen sollte man Ziel und Quelle mitlsprüfen. - rm (remove): Löscht Dateien endgültig aus dem Dateisystem, ohne Papierkorb.
rm test.txtlöscht eine Datei,rm -r ordnerlöscht Ordner samt Inhalt.rm -funterdrückt Rückfragen und Fehlermeldungen und sollte nur verwendet werden, wenn Pfade eindeutig geprüft wurden. GNUrmschützt standardmäßig vor dem Löschen von/, aber falsche Pfade, falsch gesetzte Variablen, eingebundene Datenträger oder rekursive Löschungen in/homebleiben gefährlich. - trash-cli: Bietet eine sicherere Alternative zum direkten Löschen. Nach Installation mit
sudo apt install trash-cliverschiebttrash-put datei.txtDateien in den Papierkorb. Mittrash-listsieht man gelöschte Dateien, mittrash-restorelassen sie sich wiederherstellen. Für Einsteiger ist das oft die bessere Gewohnheit als sofortigesrm. - nano: Öffnet einen einfachen Terminal-Editor.
nano datei.txterstellt oder bearbeitet eine Textdatei. Speichern erfolgt mit Strg + O, Bestätigung mit Enter, Beenden mit Strg + X. Für erste Konfigurationsänderungen istnanoleichter zugänglich alsvim. - cat: Gibt kurze Dateien direkt im Terminal aus oder verknüpft Inhalte.
cat notizen.txtzeigt den Inhalt. Für lange Dateien istcatungeeignet, weil der Text schnell durchläuft. Mit Umleitungen wie>und>>kanncatDateien erzeugen oder erweitern, dabei besteht aber Überschreibungsgefahr. - less: Zeigt lange Dateien seitenweise an. Mit den Pfeiltasten scrollt man,
/suchwortsucht im Text,nspringt zum nächsten Treffer undqbeendet die Ansicht. Logdateien, Konfigurationen und lange Befehlsausgaben lassen sich mitlesswesentlich sicherer lesen als mitcat. - head und tail:
headzeigt den Anfang einer Datei,taildas Ende. Standard sind jeweils zehn Zeilen.head -n 20 datei.logzeigt die ersten 20 Zeilen,tail -n 50 datei.logdie letzten 50. Mittail -f /var/log/syslogbeobachtet man neue Logeinträge live.
Ein gutes Schutzmuster vor riskanten Dateioperationen lautet: erst Quelle anzeigen, dann Ziel anzeigen, dann mit Nachfrageoption ausführen. Beispiel: ls -lah quelle.txt zielordner/, danach cp -i quelle.txt zielordner/. Bei Massenoperationen mit Platzhaltern sollte echo *.txt zuerst zeigen, welche Dateien die Shell tatsächlich auswählt.
| Befehl | Einfach erklärt | Beispiel | Risiken und Tipps |
|---|---|---|---|
touch | Leere Datei anlegen oder Zeitstempel aktualisieren. | touch notizen.txt | Ändert bei vorhandenen Dateien den Zeitstempel. |
cp | Dateien oder Ordner kopieren. | cp -i bericht.pdf kopie.pdf, cp -a Projekt Projekt.bak | -i fragt vor Überschreiben, -a eignet sich für Sicherungskopien. |
mv | Verschieben oder umbenennen. | mv -i alt.txt neu.txt | Kann Zieldateien überschreiben; Ziel vorher prüfen. |
rm | Dateien endgültig löschen. | rm -i test.txt | Keine Papierkorb-Funktion; sicherer mit trash-put. |
nano | Textdatei bearbeiten. | nano notizen.txt | Strg + O speichert, Strg + X beendet. |
cat/less | Dateien anzeigen. | cat kurz.txt, less /var/log/syslog | less für lange Dateien bevorzugen. |
head/tail | Anfang oder Ende anzeigen. | tail -f app.log | -f beobachtet neue Zeilen live. |
Suchen, Finden und Inspektion
Suchen im Terminal beantwortet drei verschiedene Fragen: Wo liegt eine Datei? Welche Datei enthält einen bestimmten Text? Welches Programm führt die Shell aus? find durchsucht das echte Dateisystem, grep durchsucht Inhalte, locate nutzt einen schnellen Index, und type erklärt, ob ein Name ein Programm, Alias, Shell-Builtin oder eine Funktion ist.
- find: Sucht Dateien und Verzeichnisse nach Name, Typ, Größe, Zeit oder Rechten.
find ~/Dokumente -name "*.pdf"findet PDF-Dateien im Dokumente-Ordner.find ~/ -type f -size +100Mfindet Dateien größer als 100 MB. Mit-type dsucht man nur Ordner, mit-mtime -7Dateien, die in den letzten sieben Tagen geändert wurden. Auf großen Dateisystemen kannfindspürbar Last erzeugen. - grep: Durchsucht Text nach Mustern.
grep -i "error" logfile.txtfindet „error“ unabhängig von Groß- und Kleinschreibung.grep -nzeigt Zeilennummern,grep -rdurchsucht Unterordner,grep -vkehrt die Suche um. Für Loganalysen eignet sichgrep -i "failed" /var/log/syslog. Binärdateien, Archive und Office-Dokumente sind für normalesgrepnicht ideal. - locate: Sucht Dateinamen über eine Datenbank und arbeitet dadurch sehr schnell. Auf manchen Systemen installiert man es mit
sudo apt install plocate. Die Datenbank aktualisiertsudo updatedb. Neue Dateien erscheinen erst nach dieser Aktualisierung in den Treffern. Für aktuelle oder sehr präzise Suchen bleibtfindzuverlässiger. - which: Zeigt den Pfad eines ausführbaren Programms, wenn es über die Umgebungsvariable
PATHgefunden wird. Stattwhich pythonist auf modernen Mint-Systemenwhich python3odercommand -v python3sinnvoller.whicherkennt jedoch nicht immer Aliase oder Shell-Funktionen. - whereis: Sucht Binärdateien, Quellcode-Orte und Handbuchseiten in typischen Systempfaden.
whereis lszeigt zum Beispiel Programmpfad und Manpage. Der Befehl liefert eine schnelle Übersicht, ersetzt aber keine präzise Paket- oder Dateisuche. - type: Zeigt, wie die Shell einen Befehl interpretiert.
type cdzeigt, dasscdein Shell-Builtin ist.type lskann einen Alias wiels --color=autooffenlegen. Bei unerwartetem Verhalten isttypeoft aussagekräftiger alswhich. - file und stat:
file dateierkennt Dateitypen anhand des Inhalts, nicht nur anhand der Endung.stat dateizeigt Größe, Besitzer, Rechte, Inode und Zeitstempel. Beide Befehle helfen, unbekannte Dateien vor dem Öffnen oder Bearbeiten einzuschätzen.
Praktische Suchketten verbinden mehrere Werkzeuge: find ~/Downloads -type f -name "*.iso" -print findet ISO-Dateien, grep -Rni "server_name" /etc/nginx sucht rekursiv mit Zeilennummern und ohne Beachtung der Großschreibung, command -v firefox prüft den tatsächlich aufrufbaren Programmpfad. Dateinamen mit Leerzeichen verarbeitet find -print0 zusammen mit xargs -0 sicher.
| Befehl | Einfach erklärt | Beispiel | Hinweise |
|---|---|---|---|
find | Sucht live im Dateisystem. | find ~/ -type f -name "*.pdf" | Genau, aber auf großen Verzeichnissen langsamer. |
grep | Findet Textmuster. | grep -Rni "error" /var/log | -n Zeilennummer, -i ohne Groß/Klein, -r rekursiv. |
locate | Sucht schnell per Index. | sudo updatedb, danach locate dateiname | Index kann veraltet sein. |
which/command -v | Zeigt Programmpfad. | command -v python3 | command -v eignet sich gut für Skripte. |
type | Erklärt Alias, Builtin oder Programm. | type ls | Wichtig bei unerwartetem Befehlsverhalten. |
file/stat | Erkennt Typ und Metadaten. | file download, stat datei.txt | Nützlich vor dem Öffnen unbekannter Dateien. |
Shell-Grundlagen: Operatoren, Pipes, Umleitungen
Die Shell verbindet kleine Werkzeuge zu größeren Arbeitsschritten. Jeder Befehl liefert einen Exit-Code: 0 bedeutet Erfolg, jeder andere Wert signalisiert einen Fehler oder Sonderzustand. Operatoren wie &&, ||, Pipes und Umleitungen entscheiden, was mit Ausgabe, Fehlern und Folgekommandos passiert. Wer diese Mechanik versteht, schreibt robustere Befehle und erkennt Fehler schneller.
&&: Führt den zweiten Befehl nur aus, wenn der erste erfolgreich war.sudo apt update && sudo apt upgradestartet das Upgrade nur, wenn die Paketlisten erfolgreich aktualisiert wurden. Das ist sicherer als eine bloße Aneinanderreihung mit Semikolon.||: Führt den zweiten Befehl nur aus, wenn der erste fehlschlägt.ping -c 1 pcffm.de || echo "Ziel nicht erreichbar"gibt eine eigene Fehlermeldung aus, wenn der Ping keinen Erfolg meldet.|: Leitet die Standardausgabe eines Befehls als Eingabe an den nächsten weiter.dmesg | grep -i usbfiltert Kernelmeldungen nach USB-Bezug. Pipes verändern keine Dateien, solange kein nachfolgender Befehl schreibt oder löscht.>und>>:>schreibt Ausgabe in eine Datei und überschreibt vorhandene Inhalte.>>hängt Ausgabe an.ls > inhalt.txtersetzt die Dateiinhalt.txt,date >> protokoll.txtergänzt eine neue Zeile. Für Anfänger ist>eine häufige Datenverlustquelle.2>und2>&1: Standardausgabe hat Kanal 1, Fehlerausgabe Kanal 2.befehl >out.log 2>err.logtrennt normale Ausgabe und Fehler.befehl >all.log 2>&1schreibt beides in dieselbe Datei. Diese Trennung ist wichtig für Skripte und Fehleranalysen.- tee: Zeigt Ausgabe im Terminal und schreibt sie gleichzeitig in eine Datei.
ls -lah | tee ausgabe.txtdokumentiert eine Ausgabe, ohne sie vom Bildschirm zu verlieren. Mittee -awird angehängt. Für Root-Dateien nutzt manecho "Eintrag" | sudo tee -a /etc/datei.conf, weil die Umleitung selbst sonst ohne Root-Rechte passiert. - Quoting: Einfache Anführungszeichen schützen Text vollständig vor Shell-Auswertung, doppelte erlauben Variablenersetzung.
'$HOME'bleibt wörtlich,"$HOME"wird zum Home-Pfad. Variablen sollten fast immer in doppelte Anführungszeichen:"$dateiname"schützt Leerzeichen und Sonderzeichen.
Vor Umleitungen mit > schützt set -o noclobber in der aktuellen Shell vor versehentlichem Überschreiben vorhandener Dateien. Für einzelne bewusste Überschreibungen nutzt Bash dann >|. Wer Befehle dokumentieren möchte, verwendet tee; wer Fehler finden möchte, trennt Standardausgabe und Fehlerausgabe zunächst in zwei Dateien.
| Operator oder Syntax | Was passiert? | Beispiel | Best Practice |
|---|---|---|---|
cmd1 ; cmd2 | Befehle laufen nacheinander, unabhängig vom Erfolg. | echo A ; echo B | Nur für harmlose Befehle verwenden. |
cmd1 && cmd2 | cmd2 läuft nur bei Erfolg von cmd1. | sudo apt update && sudo apt upgrade | Empfohlen für abhängige Schritte. |
cmd1 || cmd2 | cmd2 läuft nur bei Fehler von cmd1. | test -f datei || echo "fehlt" | Gut für klare Fehlerpfade. |
cmd1 | cmd2 | Ausgabe wird weitergereicht. | journalctl -b | grep -i error | Ideal für Filter und Auswertungen. |
>/>> | Ausgabe überschreiben oder anhängen. | ls > out.txt, date >> log.txt | > überschreibt ohne Nachfrage. |
2>/2>&1 | Fehlerstrom umleiten oder zusammenführen. | cmd >all.log 2>&1 | Für Logs bewusst trennen oder bündeln. |
$( ... ) | Setzt Befehlsausgabe in einen anderen Befehl ein. | echo "Kernel: $(uname -r)" | Lesbarer als alte Backticks. |
jobs/fg/bg | Steuert Hintergrund- und Vordergrundjobs. | programm &, jobs, fg | Nützlich bei langen Terminalaufgaben. |
Dateirechte, Eigentum, umask, ACL
Linux trennt Rechte nach Besitzer, Gruppe und allen anderen. Die Grundrechte heißen Lesen (r), Schreiben (w) und Ausführen (x). Bei Dateien bedeutet x, dass sie als Programm oder Skript gestartet werden dürfen. Bei Ordnern bedeutet x, dass man den Ordner betreten und Einträge darin erreichen darf. Falsch gesetzte Rechte führen entweder zu „Permission denied“ oder zu unnötig offenen Dateien.
- ls -l: Zeigt Rechte, Besitzer, Gruppe, Größe und Datum. Eine Ausgabe wie
-rw-r--r--bedeutet: normale Datei, Besitzer darf lesen und schreiben, Gruppe und andere dürfen lesen. Ein führendesdkennzeichnet Ordner,lsymbolische Links. - chmod: Ändert Zugriffsrechte. Numerisch steht
r=4,w=2,x=1.chmod 755 script.shgibt dem Besitzer alle Rechte und anderen Lesen/Ausführen. Symbolisch ist oft lesbarer:chmod u+x script.shmacht ein Skript für den Besitzer ausführbar. Rekursive Änderungen mitchmod -Rsollten nur nach genauer Prüfung laufen. - chown und chgrp: Ändern Besitzer und Gruppe.
sudo chown benutzer:benutzer datei.txtsetzt beides auf den genannten Benutzer. Nach Kopien mitsudoentstehen oft Root-Dateien im Home-Verzeichnis;sudo chown -R "$USER:$USER" ~/Projektkann das korrigieren, sollte aber niemals unüberlegt auf/,/usroder/etcangewendet werden. - umask: Bestimmt, welche Rechte neue Dateien und Ordner standardmäßig nicht erhalten. Bei
umask 022entstehen Dateien meist mit644und Ordner mit755. Eine strengereumask 077macht neue Dateien und Ordner nur für den Besitzer zugänglich. Dauerhaft setzt man die Maske in geeigneten Shell- oder Login-Konfigurationsdateien. - getfacl und setfacl: Anzeigen und Setzen erweiterter ACL-Rechte.
getfacl projektzeigt klassische Rechte und zusätzliche Einträge.setfacl -m u:andreas:rwx projektgibt dem Benutzer Andreas gezielte Rechte, ohne Besitzer oder Gruppe zu ändern. Das Paketaclist bei Bedarf installierbar. - lsattr und chattr: Zeigen und setzen besondere Dateiattribute.
sudo chattr +i wichtig.txtmacht eine Datei unveränderlich, solange das Attribut aktiv ist. Auch Root kann sie dann nicht löschen oder überschreiben, kann das Attribut aber mitsudo chattr -i wichtig.txtwieder entfernen. Diese Funktion schützt vor Versehen, kann aber Updates oder Konfigurationsänderungen blockieren.
Für Einsteiger reichen wenige Muster: Ein privater Text bleibt bei chmod 600 datei.txt nur für den Besitzer les- und schreibbar. Ein Skript startet nach chmod u+x script.sh. Ein Webordner gehört dem passenden Dienstbenutzer oder einer passenden Gruppe, nicht pauschal allen. Rechte wie 777 lösen kurzfristig „Permission denied“, schaffen aber häufig Sicherheitsprobleme und sollten fast nie die Lösung sein.
| Befehl | Einfach erklärt | Beispiel | Hinweise |
|---|---|---|---|
ls -l | Zeigt Rechte, Besitzer und Gruppe. | ls -l script.sh | Rechteklassen: User, Group, Others. |
chmod | Ändert Rechte numerisch oder symbolisch. | chmod 750 datei, chmod u+x script.sh | -R nur mit Vorsicht. |
chown/chgrp | Ändert Besitzer oder Gruppe. | sudo chown alice:staff pfad | Nach Root-Kopien häufig nötig. |
umask | Steuert Standardrechte neuer Dateien. | umask 022 | Dateien meist 644, Ordner meist 755. |
getfacl/setfacl | Verwaltet erweiterte Rechte. | setfacl -m u:alice:rwx proj/ | Gut für Mehrbenutzerordner. |
lsattr/chattr | Verwaltet besondere Attribute. | sudo chattr +i wichtig.txt | Mit -i wieder lösbar machen. |
Paketverwaltung: apt, dpkg, Flatpak
Linux Mint 22 nutzt Debian-Pakete aus Ubuntu-/Mint-Paketquellen, ergänzt durch Mint-eigene Werkzeuge und optional Flatpak. Die grafische Aktualisierungsverwaltung bleibt für viele Nutzer die komfortabelste und sicherste Update-Zentrale. Im Terminal übernimmt apt die tägliche Paketverwaltung, dpkg arbeitet auf niedrigerer Ebene mit lokalen .deb-Dateien, und flatpak verwaltet isolierte Anwendungen aus Flatpak-Remotes wie Flathub.
- apt update: Aktualisiert die lokale Paketliste anhand der eingerichteten Paketquellen. Der Befehl installiert noch keine neuen Programmversionen, sondern lädt Informationen über verfügbare Pakete und Versionen. Vor Installationen und Upgrades ist
sudo apt updateder richtige erste Schritt. - apt upgrade: Aktualisiert installierte Pakete konservativ. Das System zeigt vorab, welche Pakete aktualisiert werden. Anfänger sollten die Zusammenfassung lesen, bevor sie bestätigen. Für normale Pflege genügt dieser Befehl häufig, besonders wenn zusätzlich die Mint-Aktualisierungsverwaltung genutzt wird.
- apt full-upgrade: Darf zur Lösung von Abhängigkeiten auch Pakete entfernen oder zusätzliche Pakete installieren. Dadurch kann es größere Systemänderungen durchführen als
apt upgrade. Vor Kernel-, Treiber- oder großen Desktop-Änderungen empfiehlt sich ein Timeshift-Snapshot. - apt install: Installiert neue Pakete aus den Paketquellen.
sudo apt install vlcinstalliert VLC. Mehrere Pakete können gemeinsam angegeben werden:sudo apt install curl git tree. Ohnesudofehlen die nötigen Systemrechte. - apt remove und apt purge:
removeentfernt Programme, lässt systemweite Konfigurationsdateien meist zurück.purgeentfernt zusätzlich Paketkonfigurationen. Persönliche Einstellungen im Home-Verzeichnis bleiben davon oft unberührt und müssen bei Bedarf separat geprüft werden. - apt autoremove: Entfernt Pakete, die automatisch als Abhängigkeiten installiert wurden und nicht mehr benötigt werden. Die vorgeschlagene Liste sollte man lesen, bevor man bestätigt. Besonders nach Kernel- oder Treiberänderungen ist Vorsicht sinnvoll.
- apt search, apt show und apt-cache policy:
apt search editorsucht Paketnamen und Beschreibungen.apt show firefoxzeigt Details.apt-cache policy paketnamezeigt installierte und verfügbare Versionen sowie die Herkunft aus den Paketquellen. - dpkg: Installiert, entfernt und untersucht lokale Debian-Pakete.
sudo dpkg -i paket.debinstalliert eine lokale Datei, löst Abhängigkeiten aber nicht selbstständig vollständig auf. Danach behebtsudo apt -f installfehlende Abhängigkeiten. Mitdpkg -S /usr/bin/wgetfindet man heraus, zu welchem Paket eine Datei gehört. - flatpak: Installiert Anwendungen distributionsübergreifend und oft in aktuelleren Versionen.
flatpak search vlcsucht,flatpak install flathub org.videolan.VLCinstalliert,flatpak updateaktualisiert Flatpak-Apps. Flatpaks benötigen oft mehr Speicherplatz, weil sie eigene Laufzeitumgebungen mitbringen.
Ein sicherer Update-Ablauf lautet: Snapshot prüfen oder erstellen, sudo apt update ausführen, Upgrade-Vorschau lesen, dann sudo apt upgrade starten. Bei Problemen liefern apt list --upgradable, apt-cache policy paket und /var/log/apt/history.log wichtige Hinweise. Fremde Paketquellen, PPAs und ungeprüfte .deb-Dateien erhöhen das Risiko von Abhängigkeitsproblemen.
| Befehl | Zweck | Beispiel | Tipps |
|---|---|---|---|
sudo apt update | Paketlisten aktualisieren. | sudo apt update | Vor Installation und Upgrade ausführen. |
sudo apt upgrade | Installierte Pakete aktualisieren. | sudo apt upgrade | Zusammenfassung vor Bestätigung lesen. |
sudo apt full-upgrade | Umfassendere Aktualisierung mit Abhängigkeitsänderungen. | sudo apt full-upgrade | Vorher Snapshot sinnvoll. |
sudo apt install/remove/purge | Pakete installieren oder entfernen. | sudo apt install vlc | purge entfernt Paketkonfigurationen. |
sudo apt autoremove | Nicht mehr benötigte Abhängigkeiten entfernen. | sudo apt autoremove | Vorgeschlagene Liste prüfen. |
apt show/apt-cache policy | Paketdetails und Herkunft anzeigen. | apt-cache policy openssl | Hilft bei Versionsfragen. |
dpkg -i/apt -f install | Lokale .deb-Pakete installieren und Abhängigkeiten reparieren. | sudo dpkg -i paket.deb | Nur vertrauenswürdige Quellen nutzen. |
flatpak | Flatpak-Anwendungen verwalten. | flatpak install flathub org.videolan.VLC | Mehr Speicherbedarf, oft aktuelle App-Versionen. |
Prozesse, Ressourcen, systemd und Logs
Ein laufendes Programm erscheint unter Linux als Prozess mit einer Prozess-ID, kurz PID. Wenn ein Programm hängt, viel CPU verbraucht oder einen Dienst blockiert, helfen Prozess- und Logbefehle bei der Diagnose. Systemdienste verwaltet Linux Mint über systemd; viele Fehlermeldungen landen im Journal und lassen sich mit journalctl filtern.
- top: Zeigt laufende Prozesse in Echtzeit. Die ressourcenintensivsten Prozesse stehen standardmäßig weit oben. Mit q beendet man die Ansicht, mit k kann man einen Prozess beenden. Anfänger sollten vor dem Beenden die PID, den Benutzer und den Prozessnamen sorgfältig prüfen.
- htop: Bietet eine interaktive, übersichtlichere Prozessansicht. Installation mit
sudo apt install htop. Prozesse lassen sich suchen, sortieren und mit Funktionstasten steuern.htopeignet sich besonders gut, um CPU-, RAM- und Prozesslast schnell zu verstehen. - ps, pgrep und pkill:
ps auxzeigt eine Momentaufnahme aller Prozesse.pgrep -fl firefoxsucht PIDs samt Befehlszeile.pkill -TERM firefoxsendet allen passenden Firefox-Prozessen ein normales Beenden-Signal. Beipkillmuss das Muster eindeutig sein, sonst beendet man mehr als beabsichtigt. - kill: Sendet Signale an eine PID. Ohne Option sendet
kill PIDdas SignalTERM, damit ein Prozess sauber beenden kann.kill -KILL PIDoderkill -9 PIDerzwingt das Ende ohne Aufräumarbeiten und sollte nur die letzte Möglichkeit sein. - df und du:
df -hzeigt freien und belegten Speicher auf Dateisystemen.du -sh *zeigt Größen im aktuellen Ordner. Bei vollem System helfensudo du -xh /var | sort -h | tailoder ein interaktives Werkzeug wiencdu, das mitsudo apt install ncduinstallierbar ist. - free, uptime, vmstat und iostat:
free -hzeigt RAM und Swap.uptimezeigt Laufzeit und Load Average.vmstat 1beobachtet Systemwerte im Sekundentakt.iostat -xz 1analysiert Datenträger-I/O und gehört zum Paketsysstat. - dmesg: Zeigt Kernelmeldungen, etwa zu Treibern, USB-Geräten, Datenträgern oder Hardwarefehlern.
dmesg | grep -i usbfiltert USB-Meldungen. Für aktuelle Systemlogs istjournalctl -koft ebenfalls geeignet. - journalctl: Durchsucht das systemd-Journal.
journalctl -bzeigt Meldungen seit dem aktuellen Start.journalctl -p warning..alert -bfiltert Warnungen und schwerere Fehler.journalctl -u dienstname --since "1 hour ago"zeigt Meldungen eines Dienstes aus der letzten Stunde. Mit-ffolgt man neuen Einträgen live. - systemctl: Steuert Dienste.
systemctl status sshzeigt Zustand und letzte Logzeilen.sudo systemctl restart dienststartet neu,sudo systemctl enable dienstaktiviert den Autostart,sudo systemctl disable dienstdeaktiviert ihn. Vor Neustarts produktiver Dienste sollte man Konfigurationsdateien testen, falls der Dienst einen Prüfmodus bietet.
Eine einfache Fehlerkette lautet: Mit top oder htop prüfen, ob CPU oder RAM ausgelastet sind. Mit df -h prüfen, ob eine Partition voll ist. Mit systemctl status dienst den Dienstzustand lesen. Mit journalctl -u dienst -b die passenden Logs anzeigen. Erst danach sollte man Prozesse beenden oder Dienste neu starten.
| Befehl | Monitoring oder Steuerung | Beispiel | Hinweise |
|---|---|---|---|
top/htop | Live-Prozessübersicht. | htop | htop ist einsteigerfreundlicher. |
ps/pgrep/pkill | Prozesse listen, finden und beenden. | pgrep -fl nginx | pkill nur mit eindeutigem Muster. |
kill | Signal an PID senden. | kill 1234, kill -KILL 1234 | -KILL nur im Notfall. |
df/du/ncdu | Speicherplatz und Ordnergrößen analysieren. | df -h, du -sh * | ncdu hilft beim gezielten Aufräumen. |
free/uptime/vmstat | RAM, Last und Systemzustand anzeigen. | free -h, vmstat 1 | Intervalle zeigen Trends besser als Einzelwerte. |
journalctl | Systemlogs abfragen. | journalctl -b -p warning..alert | Mit --since und -u gezielt filtern. |
systemctl | Dienste steuern. | systemctl status ssh | Neustarts nur nach Prüfung der Ursache. |
Hardware, Datenträger, Dateisysteme
Hardware- und Datenträgerbefehle liefern wichtige Diagnoseinformationen, können aber bei Partitionierung und Formatierung Daten zerstören. Lesende Befehle wie lsblk, lspci oder smartctl -a sind für die Analyse geeignet. Schreibende Befehle wie mkfs, fdisk, parted, mkswap und swapon verlangen geprüfte Gerätepfade und ein aktuelles Backup.
- uname -a und /etc/os-release:
uname -azeigt Kernel, Architektur und Hostname.cat /etc/os-releasezeigt Distribution, Version und Codename. Diese Informationen gehören in viele Support-Anfragen, weil Treiber, Kernel und Paketquellen davon abhängen. - lscpu und lsmem:
lscpuzeigt CPU-Architektur, Kerne, Threads, Virtualisierungsmerkmale und Cache-Informationen.lsmemzeigt Speicherblöcke. Für normale Desktop-Diagnosen reicht oftlscpuzusammen mitfree -h. - lspci -nn und lsusb:
lspci -nnlistet PCI-Geräte mit Hersteller- und Geräte-IDs, was bei WLAN-, Grafik- und Audio-Treibern hilft.lsusbzeigt angeschlossene USB-Geräte.lsusb -vliefert viele Details und kann sehr lang ausfallen. - lsblk -f und blkid: Zeigen Blockgeräte, Partitionen, Dateisysteme, Labels, UUIDs und Mountpoints.
lsblk -fist vor Mount-, Formatier- oder fstab-Arbeiten Pflicht. UUIDs ausblkideignen sich für stabile Einträge in/etc/fstab, weil Gerätenamen wie/dev/sdawechseln können. - smartctl: Liest SMART-Daten von Festplatten und SSDs aus. Nach Installation mit
sudo apt install smartmontoolszeigtsudo smartctl -a /dev/sdaBetriebsstunden, Temperatur, Selbsttests und Fehlerhinweise. Bei NVMe-Laufwerken kann der Gerätename/dev/nvme0n1lauten. SMART-Werte sind Hinweise, ersetzen aber kein Backup. - mount, findmnt und umount:
mountbindet Dateisysteme ein,findmntzeigt aktive Mountpoints strukturiert,umounthängt Dateisysteme aus. Vor dem Entfernen externer Datenträger solltesyncoder das saubere Aushängen sicherstellen, dass Schreibpuffer geschrieben wurden. Schlägtumountfehl, nutzt noch ein Prozess den Datenträger. - fdisk und parted: Bearbeiten Partitionstabellen. Moderne
fdisk-Versionen können auch GPT verwalten;partedeignet sich besonders für GPT, Skripting und bestimmte Größen-/Layoutaufgaben. Beide Werkzeuge können Partitionen löschen oder unbrauchbar machen. Vor Änderungen müssen Backup, Zielgerät und Partitionstabelle geprüft sein. - mkfs.ext4, mkswap und swapon:
mkfs.ext4 /dev/sdX1erstellt ein ext4-Dateisystem und löscht vorhandene Daten auf dieser Partition.mkswap /dev/sdX2richtet Swap ein,swapon /dev/sdX2aktiviert ihn. Platzhalter wie/dev/sdX1müssen immer durch den exakt geprüften Gerätenamen ersetzt werden.
Vor Datenträgeränderungen gilt eine feste Prüfkette: lsblk -f ausführen, Größe und Mountpoint prüfen, das Zielgerät anhand von Hersteller, Größe und UUID identifizieren, wichtige Daten sichern, Befehl noch einmal gegenlesen. Niemals darf ein Beispielbefehl mit /dev/sdX unverändert ausgeführt werden.
| Befehl | Zweck | Beispiel | Risiken und Tipps |
|---|---|---|---|
uname -a/cat /etc/os-release | Kernel- und Distributionsinfos. | cat /etc/os-release | Gut für Support und Kompatibilität. |
lscpu/free -h | CPU- und RAM-Überblick. | lscpu | Schnelle Hardwarebasis. |
lspci -nn/lsusb | Geräte und IDs anzeigen. | lspci -nn | Hilfreich für Treibersuche. |
lsblk -f/blkid | Datenträger, UUIDs und Mountpoints anzeigen. | lsblk -f | Pflicht vor Mount- oder Formatierarbeiten. |
smartctl | SMART-Zustand lesen. | sudo smartctl -a /dev/sda | Paket smartmontools; Backup bleibt nötig. |
mount/findmnt/umount | Dateisysteme ein- und aushängen. | findmnt | Vor Entfernen externer Datenträger aushängen. |
fdisk/parted | Partitionen bearbeiten. | sudo fdisk -l | Schreibaktionen nur mit Backup. |
mkfs.ext4/mkswap | Dateisystem oder Swap erstellen. | sudo mkfs.ext4 /dev/sdX1 | Löscht Daten auf der Zielpartition. |
Netzwerk, DNS und curl
Netzwerkdiagnose funktioniert am besten in Schichten. Zuerst prüft man die lokale Adresse, dann die Route zum Gateway, dann Internet-Erreichbarkeit ohne DNS, danach Namensauflösung und schließlich den eigentlichen Dienst wie HTTP oder SSH. Dadurch erkennt man, ob ein Problem am WLAN, Router, DNS, Server oder an einer Anwendung liegt.
- ip: Zeigt und verändert Netzwerkkonfiguration.
ip alistet Interfaces und IP-Adressen,ip rzeigt Routen und Standardgateway,ip neighzeigt Nachbarn im lokalen Netz. Das Werkzeug ersetzt ältere Befehle wieifconfigundroute. - nmcli: Steuert NetworkManager im Terminal.
nmcli dev statuszeigt Geräte und Verbindungsstatus,nmcli con showlistet gespeicherte Verbindungen,nmcli dev wifi listzeigt WLANs. Linux Mint nutzt NetworkManager typischerweise für Desktop-Netzwerke. - ping: Prüft Erreichbarkeit per ICMP Echo Request.
ping -c 4 1.1.1.1testet Internet ohne DNS-Namen,ping -c 4 pcffm.detestet inklusive DNS. Keine Antwort bedeutet nicht automatisch, dass ein Server offline ist; Firewalls können ICMP blockieren. - traceroute und mtr: Zeigen den Weg von Paketen zum Ziel.
traceroute pcffm.deist eine Momentaufnahme,mtr pcffm.debeobachtet fortlaufend. Beide Werkzeuge müssen eventuell installiert werden. Paketverluste auf Zwischenroutern sind nicht immer kritisch, wenn das Ziel zuverlässig antwortet. - ss: Zeigt Netzwerkverbindungen und lauschende Ports.
ss -tulnzeigt TCP-/UDP-Ports numerisch.ss -tulpnzeigt zusätzlich Prozesse, benötigt dafür oft Root-Rechte. Der Befehl ersetzt in vielen Fällennetstat. - dig und nslookup: Prüfen DNS.
dig pcffm.de A +shortzeigt IPv4-Adressen,dig pcffm.de MXMailserver,dig @1.1.1.1 pcffm.defragt gezielt einen Resolver.nslookupist älter, aber für schnelle Tests weiterhin verbreitet. - resolvectl und nmcli dev show: Zeigen DNS-Konfiguration je nach Systemzustand.
resolvectl statusist hilfreich, wenn systemd-resolved aktiv genutzt wird.nmcli dev showzeigt DNS-Server aus NetworkManager-Sicht. Bei Desktop-Systemen lohnt es sich, beide Perspektiven zu kennen. - curl: Ruft URLs, HTTP-Header und APIs ab.
curl -I -L https://www.pcffm.dezeigt Header und folgt Weiterleitungen.curl -o datei.iso URLspeichert unter gewünschtem Namen,curl -C - -O URLsetzt einen abgebrochenen Download fort. Für Skripte istcurl -fsSbeliebt: Fehler führen zu einem Fehlercode, stille Ausgabe bleibt ruhig, Fehlermeldungen erscheinen dennoch. - wget: Lädt Dateien robust herunter.
wget -c URLsetzt einen abgebrochenen Download fort. Für rekursive Downloads oder einfache Dateiabrufe istwgetoft bequemer alscurl, währendcurlbei APIs und HTTP-Details stärker ist. - ssh, scp und rsync:
ssh benutzer@serveröffnet eine verschlüsselte Sitzung.scp datei.txt benutzer@server:/ziel/kopiert eine Datei.rsync -avh -e ssh quelle/ benutzer@server:/ziel/synchronisiert effizient nur Änderungen. Für dauerhafte Nutzung sind SSH-Schlüssel mitssh-keygen -t ed25519undssh-copy-idsinnvoller als Passwörter.
Eine klare Diagnosekette sieht so aus: ip a prüft, ob eine Adresse vorhanden ist. ip r prüft das Gateway. ping -c 4 1.1.1.1 prüft Internet ohne DNS. dig pcffm.de +short prüft DNS. curl -I -L https://www.pcffm.de prüft HTTP und Weiterleitungen. So grenzt man Fehler Schritt für Schritt ein.
| Befehl | Einfach erklärt | Beispiel | Tipps und Risiken |
|---|---|---|---|
ip a/ip r/ip neigh | Adressen, Routen und Nachbarn anzeigen. | ip a, ip r | Grundlage jeder Netzwerkdiagnose. |
nmcli | NetworkManager im Terminal steuern. | nmcli dev status | Praktisch für WLAN- und LAN-Status. |
ping/traceroute/mtr | Erreichbarkeit und Route prüfen. | ping -c 4 1.1.1.1 | ICMP kann blockiert sein. |
ss/nc | Ports und Verbindungen prüfen. | ss -tuln, nc -vz host 443 | ss ersetzt häufig netstat. |
dig/nslookup | DNS-Abfragen durchführen. | dig pcffm.de A +short | Resolver mit @server gezielt wählen. |
resolvectl/nmcli dev show | DNS-Konfiguration anzeigen. | nmcli dev show | grep DNS | Je nach Setup beide Ansichten prüfen. |
curl | HTTP, Downloads und APIs testen. | curl -I -L https://www.pcffm.de | Keine ungeprüften Skripte per curl | bash ausführen. |
ssh/scp/rsync | Sicherer Remote-Zugriff und Transfer. | ssh user@host, rsync -avh -e ssh quelle/ user@host:/ziel/ | SSH-Schlüssel statt Passwörter bevorzugen. |
Backup, Archivierung, Verifikation
Ein Backup ist erst dann vertrauenswürdig, wenn es wiederherstellbar und überprüft ist. Kopieren allein reicht nicht: Man muss wissen, welche Daten gesichert wurden, ob die Sicherung vollständig ist, ob sie verschlüsselt werden muss und wie die Wiederherstellung funktioniert. Für Linux Mint sind Timeshift-Snapshots für Systemzustände und separate Backups für persönliche Daten eine sinnvolle Kombination.
- rsync: Synchronisiert Dateien und Ordner lokal oder über SSH.
rsync -avh quelle/ ziel/kopiert Inhalte mit Archivmodus, verständlichen Größen und Fortschrittsinformationen. Mit--deletelöscht rsync im Ziel Dateien, die in der Quelle fehlen; das ist für Spiegelungen nützlich, aber riskant. Vor produktiven Läufen sollte--dry-runzeigen, was passieren würde. - tar: Bündelt Dateien und Ordner in Archive.
tar -czf backup.tar.gz /pfaderstellt ein gzip-komprimiertes Archiv,tar -xzf backup.tar.gz -C /zielentpackt es. Mit--excludelassen sich Cache- oder temporäre Ordner ausschließen. Vor dem Entpacken zeigttar -tzf backup.tar.gz | lessden Archivinhalt. - gzip, bzip2, xz und zstd: Komprimieren Daten mit unterschiedlichen Schwerpunkten.
gzipist schnell und verbreitet,bzip2komprimiert oft stärker, aber langsamer,xzerreicht hohe Kompression bei höherem Zeitbedarf,zstdist modern, schnell und effizient. Bereits komprimierte Dateien wie Videos, JPEGs oder ZIPs schrumpfen kaum weiter. - sha256sum: Berechnet Prüfsummen.
sha256sum datei.isoerzeugt einen Hash, der mit Herstellerangaben verglichen werden kann. Für eigene Backups speichertsha256sum backup.tar.zst > backup.tar.zst.sha256eine Prüfsumme. Später prüftsha256sum -c backup.tar.zst.sha256die Integrität. - gpg: Verschlüsselt und signiert Dateien.
gpg -c geheim.tar.zsterstellt eine symmetrisch verschlüsselte Datei mit Passphrase. Die Passphrase muss sicher verwahrt werden; ohne sie sind die Daten praktisch verloren. Für Team- oder Serverumgebungen können asymmetrische Schlüssel sinnvoller sein. - timeshift: Erstellt System-Snapshots, die besonders vor Updates, Treiberänderungen und Paketexperimenten nützlich sind. Unter Linux Mint ist Timeshift häufig bereits vorgesehen oder über die Systemwerkzeuge erreichbar; falls es fehlt, installiert
sudo apt install timeshiftdas Paket. Timeshift ersetzt kein Backup persönlicher Daten, weil der Schwerpunkt auf Systemdateien liegt. - sync: Schreibt gepufferte Daten auf Datenträger. Nach großen Kopieraktionen auf externe Laufwerke kann
synchelfen, bevor man den Datenträger aushängt. Es ersetzt aber nichtumountund ist kein Backup-Werkzeug.
Ein robuster Backup-Ablauf mit rsync lautet: Ziel einhängen, mit findmnt prüfen, mit rsync -avh --dry-run quelle/ ziel/ testen, Ausgabe lesen, danach ohne --dry-run ausführen, mit rsync -avh --dry-run erneut prüfen und das Ziel sauber aushängen. Bei Archiven ergänzt eine Prüfsumme die Integritätskontrolle.
| Werkzeug | Zweck | Beispiel | Hinweise |
|---|---|---|---|
rsync | Inkrementell synchronisieren. | rsync -avh --dry-run quelle/ ziel/ | --delete erst nach Testlauf verwenden. |
tar | Archive erstellen und entpacken. | tar -czf backup.tar.gz /pfad | Archivinhalt mit tar -tf prüfen. |
| Kompression | Speicherplatz sparen. | tar -cf - /pfad | zstd -19 -o backup.tar.zst | zstd ist oft schnell und effizient. |
sha256sum | Integrität prüfen. | sha256sum -c backup.sha256 | Prüfsumme getrennt und sicher speichern. |
gpg | Daten verschlüsseln oder signieren. | gpg -c geheim.txt | Passphrase nicht verlieren. |
timeshift | System-Snapshots verwalten. | sudo timeshift --create --comments "vor Update" | Ergänzt, ersetzt aber keine Datenbackups. |
sync | Schreibpuffer auf Datenträger schreiben. | sync | Vor Entfernen trotzdem sauber aushängen. |
Automatisierung: Cron, at, systemd-Timer
Automatisierung startet Befehle ohne manuelle Eingabe. Das spart Zeit, verlangt aber besonders saubere Pfade, Logs und Fehlerbehandlung. Ein Befehl, der im interaktiven Terminal funktioniert, kann in Cron scheitern, weil Umgebung, Arbeitsverzeichnis und PATH anders sind. Deshalb sollten Skripte absolute Pfade nutzen, Ausgaben protokollieren und im Fehlerfall verständliche Meldungen erzeugen.
- crontab: Plant wiederkehrende Aufgaben.
crontab -eöffnet die persönliche Cron-Tabelle. Das Format lautet Minute, Stunde, Tag des Monats, Monat, Wochentag, Befehl.15 2 * * * /usr/local/bin/backup.sh >>/var/log/backup.log 2>&1startet täglich um 02:15 Uhr ein Backup-Skript und schreibt normale Ausgabe und Fehler ins Log. - at: Plant einmalige Aufgaben.
echo "/pfad/script.sh" | at 23:00startet ein Skript um 23:00 Uhr.atqzeigt geplante Jobs,atrm jobnummerlöscht sie. Fallsatfehlt, installiertsudo apt install atdas Paket; der zugehörige Dienst muss laufen. - systemd-Timer: Planen Aufgaben über systemd. Sie bestehen meist aus einer
.service-Unit und einer.timer-Unit.systemctl list-timerszeigt aktive Timer. Vorteile gegenüber Cron sind bessere Logs überjournalctl, Abhängigkeiten wie Netzwerkverfügbarkeit und Optionen wiePersistent=true, damit verpasste Läufe nachgeholt werden können.
Für Anfänger empfiehlt sich ein Test in drei Schritten: Skript manuell starten, dann mit absolutem Pfad starten, dann erst automatisieren. Ein Skript sollte mit #!/usr/bin/env bash beginnen, bei Bedarf set -euo pipefail bewusst nutzen, seine Ausgabe in eine Logdatei schreiben und kritische Befehle vorher mit Testdaten prüfen. Geheimnisse wie Passwörter gehören nicht direkt in Cron-Zeilen.
| Werkzeug | Was macht es? | Beispiel | Hinweise |
|---|---|---|---|
crontab | Wiederkehrende Jobs planen. | crontab -e | Absolute Pfade und Logging verwenden. |
at | Einmalige Jobs planen. | echo "/pfad/script.sh" | at 23:00 | Jobs mit atq prüfen. |
| systemd-Timer | Robuste, logbare Planung über systemd. | systemctl list-timers | Gut für Dienste, Abhängigkeiten und Nachhol-Läufe. |
journalctl | Timer- und Service-Logs anzeigen. | journalctl -u backup.service | Fehler leichter nachvollziehbar als bei stillen Cronjobs. |
Text/Daten-Pipelines (sed/awk/cut/jq)
Viele Linux-Werkzeuge verarbeiten Text zeilenweise. Dadurch lassen sich Logs, CSV-Dateien, Konfigurationsdateien und API-Ausgaben direkt im Terminal auswerten. Für Einsteiger ist wichtig: Erst anzeigen, dann filtern, dann verändern. Befehle wie sed -i, die Dateien direkt ändern, sollten erst ohne In-Place-Option getestet oder mit Sicherungskopie ausgeführt werden.
- wc: Zählt Zeilen, Wörter und Bytes.
wc -l logfilezeigt die Zeilenzahl einer Datei. In Pipes beantwortetgrep -i error logfile | wc -l, wie viele Fehlerzeilen gefunden wurden.wcist oft der schnellste Weg, Größenordnungen einzuschätzen. - cut: Schneidet Felder oder Zeichenbereiche aus.
cut -d';' -f2 datei.csvgibt die zweite Spalte einer semikolongetrennten Datei aus. Für echte CSV-Dateien mit Anführungszeichen, eingebetteten Trennzeichen oder Zeilenumbrüchen istcutzu schlicht; dann eignen sich spezialisierte CSV-Werkzeuge besser. - column -t: Formatiert getrennte Daten als lesbare Spalten.
column -t -s';' datei.csvrichtet semikolongetrennte Daten aus. Das verändert die Datei nicht, sondern verbessert die Ansicht im Terminal. - tr: Übersetzt oder löscht Zeichen.
tr '[:lower:]' '[:upper:]'wandelt Kleinbuchstaben in Großbuchstaben.tr -d '\r'entfernt Windows-Wagenrückläufe aus Textströmen. Für einfache Zeichenoperationen isttrschneller und klarer als komplexe reguläre Ausdrücke. - sed: Bearbeitet Textströme.
sed -E 's/Muster/Ersatz/g' datei.txtersetzt Text in der Ausgabe. Erst wenn das Ergebnis stimmt, sollte man mit Sicherung arbeiten, etwased -i.bak -E 's/alt/neu/g' datei.txt. Reguläre Ausdrücke sind mächtig, aber schon kleine Fehler können viele Zeilen verändern. - awk: Verarbeitet spaltenorientierte Daten mit Bedingungen und Berechnungen.
awk -F, '{print $2}' datei.csvgibt die zweite kommagetrennte Spalte aus.awk '$5 > 100 {print $0}' dateizeigt Zeilen, deren fünftes Feld größer als 100 ist. Für strukturierte Textauswertungen istawkeines der stärksten Standardwerkzeuge. - sort und uniq: Sortieren Zeilen und zählen Duplikate. Da
uniqnur benachbarte Duplikate erkennt, kombiniert man fast immersort | uniq -c. Für Häufigkeitslisten eignet sichsort datei | uniq -c | sort -nr. - diff und patch:
diff -u alt.conf neu.confzeigt Unterschiede im Unified-Diff-Format.patch < patch.diffwendet Änderungen an. Vor dem Patchen produktiver Konfigurationen sollte eine Sicherungskopie existieren, undpatch --dry-runkann den Ablauf testen. - jq: Liest, formatiert und filtert JSON.
curl -s https://api.example.org | jq .formatiert JSON lesbar.jq '.items[] | {id, name}'extrahiert ausgewählte Felder. Ohnejqsind moderne API-Antworten im Terminal oft schwer zu verstehen.
Eine typische Log-Pipeline lautet: grep -i "failed" /var/log/syslog | awk '{print $1, $2, $3, $5}' | sort | uniq -c | sort -nr | less. Sie filtert Fehlerzeilen, extrahiert ausgewählte Felder, zählt gleiche Muster und zeigt das Ergebnis blätterbar an. Solche Ketten sollte man schrittweise aufbauen, damit jeder Zwischenschritt verständlich bleibt.
| Tool | Einfach erklärt | Beispiel | Hinweise |
|---|---|---|---|
wc/cut/column | Zählen, Spalten schneiden, tabellarisch darstellen. | wc -l datei, cut -d';' -f2 datei.csv | Bei komplexem CSV reichen einfache Trenner nicht. |
tr/sed/awk | Zeichen, Zeilen und Felder transformieren. | sed -E 's/alt/neu/g', awk -F, '{print $2}' | Direktes Ändern erst nach Test. |
sort/uniq | Sortieren und Duplikate zählen. | sort namen.txt | uniq -c | sort -nr | uniq braucht sortierte Eingabe. |
diff/patch | Dateien vergleichen und Änderungen anwenden. | diff -u alt neu > patch.diff | patch --dry-run vor echten Änderungen. |
jq | JSON filtern und formatieren. | curl -s API | jq '.items[] | {id, name}' | Unverzichtbar bei API-Ausgaben. |
Sicheres Arbeiten mit sudo (inkl. Schreibmustern)
sudo erweitert einen einzelnen Befehl auf Administratorrechte. Das ist notwendig für Paketinstallation, Systemkonfiguration, Dienste, Rechteänderungen und viele Dateien unter /etc, /usr oder /var. Gleichzeitig erhöht sudo die Schadenswirkung eines Fehlers. Ein sicherer Ablauf besteht aus Lesen, Sichern, Ändern, Prüfen und Rollback-Möglichkeit.
- sudo -v und sudo -k:
sudo -vbestätigt oder verlängert die aktuelle sudo-Berechtigung, ohne direkt einen Verwaltungsbefehl auszuführen.sudo -kverwirft die Sitzung, sodass beim nächsten sudo-Befehl wieder ein Passwort nötig ist. Das ist sinnvoll, wenn man eine Arbeit mit Root-Rechten bewusst beendet. - sudoedit: Bearbeitet Systemdateien über eine temporäre Kopie mit Benutzerrechten und schreibt danach mit erhöhten Rechten zurück.
sudoedit /etc/ssh/sshd_configist oft sicherer als einen Editor komplett mit Root-Rechten zu starten. Den Editor wählt sudo überSUDO_EDITOR,VISUALoderEDITOR. - echo … | sudo tee: Schreibt als Root in Dateien, wenn eine normale Umleitung nicht reicht.
sudo echo "Eintrag" >> /etc/datei.confscheitert oft, weil die Shell die Umleitung ohne Root-Rechte öffnet. Richtig istecho "Eintrag" | sudo tee -a /etc/datei.conf. Ohne-aüberschreibtteedie Datei. - Rollback-Muster: Vor jeder Änderung an Systemdateien sollte eine Sicherung entstehen.
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bakbewahrt Rechte und Zeitstempel. Nach der Änderung prüft man die Konfiguration mit dem passenden Dienstwerkzeug, startet den Dienst neu und hält den Rückweg bereit:sudo cp -a /etc/ssh/sshd_config.bak /etc/ssh/sshd_config. - History und Geheimnisse:
historyzeigt frühere Befehle, Strg + R sucht rückwärts. Passwörter, Tokens und private Schlüssel gehören nicht in Befehlszeilen, weil sie in der History, in Prozesslisten oder Logs landen können. Für geheime Werte nutzt man Dateien mit restriktiven Rechten, Passwortmanager oder interaktive Eingaben.
Vor jedem sudo-Befehl sollte klar sein, welche Datei, welcher Dienst oder welches Paket verändert wird. Ein guter Kontrollsatz lautet: „Ich weiß, wo ich bin, welches Ziel ich ändere, wie ich den Erfolg prüfe und wie ich zurückrolle.“ Wer diesen Satz nicht beantworten kann, sollte den Befehl zunächst ohne Schreibwirkung untersuchen, eine Manpage lesen oder eine Sicherung anlegen.
| Muster oder Befehl | Zweck | Beispiel | Best Practice |
|---|---|---|---|
sudo -v/sudo -k | Sudo-Sitzung prüfen oder beenden. | sudo -v, sudo -k | Nach Admin-Arbeiten Sitzung bewusst schließen. |
sudoedit | Systemdateien sicher bearbeiten. | sudoedit /etc/ssh/sshd_config | Editor nicht unnötig komplett als Root starten. |
echo … | sudo tee | Root-Schreibrechte mit Pipe korrekt nutzen. | echo "Eintrag" | sudo tee -a /etc/xyz.conf | -a hängt an, ohne -a wird überschrieben. |
| Backup vor Änderung | Rollback ermöglichen. | sudo cp -a datei datei.bak | Vor Konfigurationsänderungen Standard. |
| Prüfen vor Neustart | Fehler vor Dienstneustart finden. | sudo sshd -t | Wenn ein Dienst Testoptionen bietet, immer nutzen. |
| History bewusst nutzen | Befehle wiederfinden und Fehler vermeiden. | history, Strg + R | Keine Geheimnisse in Befehlszeilen schreiben. |
Wer die Terminalarbeit systematisch angeht, gewinnt schnell Sicherheit: Orientierung mit pwd und ls, vorsichtige Dateioperationen mit Nachfrageoptionen, gezielte Suche mit find und grep, nachvollziehbare Updates mit apt, Diagnose über systemctl und journalctl, Backups mit rsync, tar und Prüfsummen. Die Stärke des Terminals liegt nicht in auswendig gelernten Befehlen, sondern in klaren Prüfschritten, sicheren Mustern und der Fähigkeit, Ausgaben richtig zu lesen.
Werbung
(**) UVP: Unverbindliche Preisempfehlung
Preise inkl. MwSt., zzgl. Versandkosten