> ## Documentation Index
> Fetch the complete documentation index at: https://homelab.amylify.de/llms.txt
> Use this file to discover all available pages before exploring further.

# 5.0.5 Useful Linux Commands

> Sammlung nützlicher Linux-Befehle für Shell-Grundlagen, fortgeschrittene Administration und Ubuntu-spezifische Tools.

> Diese Seite sammelt häufig genutzte Linux-Befehle – einmal als Einstieg mit Erklärung zum Aufbau der Shell, einmal als Referenz für fortgeschrittene Administration, und einmal Ubuntu-/Debian-spezifisch (APT, Snap, LXD, Ubuntu Pro).

> [!TIP]
>
> Terminal öffnen: `CTRL + ALT + T` (bei den meisten Distributionen). Zwischen virtuellen Terminals (TTYs) wechseln: `CTRL + ALT + F2` bis `F6`, zurück zur grafischen Oberfläche mit `ALT + F7`. Terminal schließen: `exit`.

***

> [tab] Linux Basics
>
> ## Aufbau eines Linux-Systems
>
> Linux ist kein eigenständiges Betriebssystem "von Grund auf", sondern ein UNIX-ähnliches System – es übernimmt Form und Funktion von UNIX, ohne auf dessen lizenziertem Quellcode (System V, BSD) zu basieren. Es folgt einem dreischichtigen Aufbau:
>
> | Schicht | Aufgabe |
> | :- | :- |
> | **Kernel** | Innerste Schicht, direkt über der Hardware. Verwaltet Prozesse, Speicher, Treiber und die Kommunikation zwischen Hardware, Programmen und Benutzern. |
> | **Shell** | Der Kommandointerpreter (z. B. `bash`). Nimmt Texteingaben entgegen, leitet sie an den Kernel weiter und gibt die Rückmeldung wieder aus. Name kommt daher, dass sie den Kernel wie eine Schale umgibt. |
> | **Programme** | Werkzeuge und Anwendungen, die auf der Shell aufsetzen – von einfachen CLI-Tools (`ls`, `grep`) bis zu grafischen Oberflächen. |
>
> ## Wie ein Befehl aufgebaut ist
>
> Die meisten Linux-Befehle folgen demselben Schema:
>
> ```
>     befehl [Optionen] [Argumente]
> ```
>
> * **Optionen** verändern das Verhalten eines Befehls – kurz mit einem Bindestrich (`-l`) oder lang mit zwei (`--all`). Mehrere Kurzoptionen lassen sich meist kombinieren: `ls -la` = `ls -l -a`.
> * **Argumente** sind das, worauf der Befehl angewendet wird, z. B. ein Datei- oder Verzeichnisname.
> * Linux ist **case-sensitive**: `Datei.txt` und `datei.txt` sind zwei unterschiedliche Dateien – anders als unter Windows.
>
> ## Shell-Grundlagen
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `clear` | Terminal leeren |
> | `history` | Letzte ausgeführte Befehle anzeigen |
> | `!!` | Letzten Befehl erneut ausführen |
> | `man <befehl>` | Handbuchseite zu einem Befehl (Pflichtlektüre bei Unklarheiten) |
> | `<befehl> --help` | Kurzinfo zu einem Befehl |
> | `which <befehl>` | Pfad eines Befehls anzeigen |
> | `alias` | Eigene Kurzbefehle anzeigen |

> [tab] Fortgeschritten
>
> ## Netzwerk
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `ip a` | IP-Adressen anzeigen |
> | `ip r` | Routing-Tabelle anzeigen |
> | `ping <IP/Domain>` | Verbindung testen |
> | `traceroute <IP/Domain>` | Paketweg zum Ziel anzeigen |
> | `tracepath <IP/Domain>` | Alternative zu `traceroute` |
> | `ss -tulpen` | Offene Ports und zugehörige Prozesse anzeigen |
> | `nmcli device status` | Netzwerkstatus (NetworkManager) |
> | `hostnamectl` | Hostname anzeigen/ändern |
> | `resolvectl status` | DNS-Infos anzeigen |
> | `curl ifconfig.me` | Öffentliche IP-Adresse abfragen |
> | `ethtool <iface>` | NIC-Infos (Link Speed etc.) |
>
> ## Systeminformationen
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `uname -a` | Kernel-Infos anzeigen |
> | `lsb_release -a` | Distro-Infos anzeigen |
> | `hostname` | Rechnername anzeigen |
> | `whoami` | Aktueller Benutzer |
> | `id` | UID/Gruppen anzeigen |
> | `uptime` | Laufzeit des Systems |
> | `free -h` | RAM-Nutzung anzeigen |
> | `lsblk` | Blockgeräte anzeigen |
> | `df -h` | Speicherplatz anzeigen |
> | `htop` / `top` | Prozessübersicht |
>
> ## Rechte & Benutzer
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `chmod` | Dateirechte ändern |
> | `chown` | Eigentümer ändern |
> | `groups` | Gruppen des Benutzers anzeigen |
> | `sudo -l` | Eigene sudo-Rechte prüfen |
> | `adduser` / `userdel` | Benutzerverwaltung |
>
> ## Festplatten
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `lsblk` | Blockgeräte/Partitionen anzeigen |
> | `df -h` | Speicherplatz je Dateisystem anzeigen |
> | `du -h <pfad>` | Speicherbelegung eines Verzeichnisses anzeigen |
> | `mount <gerät> <pfad>` | Dateisystem einhängen |
> | `umount <pfad>` | Dateisystem aushängen |
> | `fdisk -l` | Partitionstabellen anzeigen |
> | `blkid` | UUIDs und Dateisystemtypen anzeigen |
>
> ## Dateien & Ordner
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `ls` | Dateien und Verzeichnisse auflisten |
> | `pwd` | Aktuellen Pfad anzeigen |
> | `cd <verzeichnis>` | Verzeichnis wechseln |
> | `mkdir <name>` | Neues Verzeichnis erstellen |
> | `touch <datei>` | Leere Datei erstellen / Zeitstempel aktualisieren |
> | `cp <quelle> <ziel>` | Dateien kopieren |
> | `mv <quelle> <ziel>` | Dateien verschieben/umbenennen |
> | `rm <datei>` | Datei löschen |
> | `find <pfad> -name <muster>` | Dateien/Verzeichnisse suchen |
> | `grep <muster> <datei>` | Textmuster in Datei suchen |
> | `tar -czvf <name.tar.gz> <dateien>` | Archiv erstellen |
> | `tar -xvf <archiv>` | Archiv entpacken |
> | `cat` / `less` / `head` / `tail` | Dateiinhalt anzeigen (ganz/paginiert/Anfang/Ende) |

> [tab] Ubuntu CLI Cheat Sheet
>
> > [!NOTE]
> >
> > Dieser Tab enthält nur Befehle, die Ubuntu-/Debian-spezifisch sind oder von den vorherigen Tabs abweichen (APT/Snap statt generischer Paketverwaltung, systemd, Netplan, UFW, LXD, Ubuntu Pro).
>
> ## Paketverwaltung (APT)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `sudo apt install <paket>` | Paket installieren |
> | `sudo apt install -f --reinstall <paket>` | Beschädigtes Paket reparieren/neu installieren |
> | `apt search <paket>` | Nach Paketen suchen |
> | `apt-cache policy <paket>` | Verfügbare Paketversionen anzeigen |
> | `sudo apt update` | Paketlisten aktualisieren |
> | `sudo apt upgrade` | Alle Pakete aktualisieren |
> | `sudo apt remove <paket>` | Paket entfernen |
> | `sudo apt purge <paket>` | Paket inkl. Konfiguration entfernen |
>
> ## Paketverwaltung (Snap)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `snap find <paket>` | Snap-Paket suchen |
> | `sudo snap install <name>` | Snap-Paket installieren |
> | `sudo snap remove <name>` | Snap-Paket entfernen |
> | `sudo snap refresh` | Alle Snap-Pakete aktualisieren |
> | `snap list` | Installierte Snap-Pakete auflisten |
> | `snap info <name>` | Infos zu einem Snap-Paket |
>
> ## Dienste & Cron (systemd)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `sudo systemctl start/stop/status <dienst>` | Dienst starten/stoppen/Status prüfen |
> | `sudo systemctl reload <dienst>` | Konfiguration ohne Unterbrechung neu laden |
> | `journalctl -f` | Journal in Echtzeit verfolgen |
> | `journalctl -u <unit>` | Logs eines bestimmten systemd-Units anzeigen |
> | `crontab -e` / `crontab -l` | Cron-Jobs bearbeiten/anzeigen |
>
> ## Netzwerk (Netplan & Firewall)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `cat /etc/netplan/*.yaml` | Aktuelle Netplan-Konfiguration anzeigen |
> | `sudo netplan try` | Neue Konfiguration testweise anwenden |
> | `sudo netplan apply` | Konfiguration übernehmen |
> | `sudo ufw status` | Firewall-Status anzeigen |
> | `sudo ufw enable` / `disable` | Firewall aktivieren/deaktivieren |
> | `sudo ufw allow/deny <port>` | Traffic auf Port erlauben/blockieren |
> | `sudo ufw delete allow/deny <port>` | Regel löschen |
>
> ## Benutzer & Gruppen (erweitert)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `w` | Angemeldete Benutzer anzeigen |
> | `sudo deluser <name>` | Benutzer löschen (Ubuntu-Pendant zu `userdel`) |
> | `sudo passwd -l/-u <name>` | Benutzerkonto sperren/entsperren |
> | `sudo chage <name>` | Passwort-Ablaufdatum setzen |
> | `sudo addgroup` / `sudo delgroup` | Gruppe erstellen/löschen |
>
> ## SSH & Remote
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `ssh <user@host>` | Verbindung per SSH herstellen |
> | `scp <quelle> <user@host>:<ziel>` | Dateien sicher zwischen Hosts kopieren |
>
> ## LXD (Container & VMs)
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `lxd init` | LXD vor Erstnutzung initialisieren |
> | `lxc launch ubuntu:24.04 <name>` | Container erstellen und starten |
> | `lxc launch ubuntu:24.04 <name> --vm` | Virtuelle Maschine erstellen und starten |
> | `lxc list` | Instanzen auflisten |
> | `lxc start/stop <instanz>` | Instanz starten/stoppen |
> | `lxc delete <instanz>` | Instanz löschen |
> | `lxc exec <instanz> -- bash` | Shell-Zugriff auf Instanz |
> | `lxc file pull/push` | Dateien zwischen Host und Instanz übertragen |
>
> ## Ubuntu Pro
>
> | Befehl | Beschreibung |
> | :- | :- |
> | `sudo pro attach <token>` | Gerät mit Ubuntu Pro verknüpfen |
> | `sudo pro status` | Status aller Ubuntu-Pro-Dienste anzeigen |
> | `sudo pro enable <dienst>` | Dienst aktivieren (z. B. `esm-infra`, `livepatch`, `fips`) |
> | `sudo pro disable <dienst>` | Dienst deaktivieren |
> | `sudo pro refresh` | Konfiguration aktualisieren |
> | `sudo pro detach` | Gerät von Ubuntu Pro trennen |

***

> [!NOTE]
>
> Quellen: [Linux-Terminal-Befehle](https://www.linux.org/threads/the-ultimate-list-of-linux-terminal-commands.57914/), Ubuntu CLI Cheat Sheet (Canonical)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.