# uname — Kernel- und Systeminformationen ausgeben

> Praxis-Guide zu uname: Kernel-Name, Kernel-Release, Hostname und CPU-Architektur ausgeben – plus Abgrenzung zu Distributions-Infos.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/uname/

<!-- PROSE:intro -->
uname gehört zu den ersten Befehlen, die du auf einem fremden System ausführst: In Sekunden verrät es dir Kernel-Name, Kernel-Release, Hostnamen und CPU-Architektur. Besonders in Skripten ist es unverzichtbar, um plattform- oder architekturabhängig zu verzweigen – etwa beim Auswählen des richtigen Binaries für x86_64 oder aarch64. Dieser Guide zeigt dir die wichtigsten Optionen, sinnvolle Kombinationen und die Abgrenzung zu Distributions-Infos, die uname bewusst nicht liefert.
<!-- PROSE:intro:end -->

## Gängige Verwendung

`uname` — Gibt nur den Betriebssystem-Namen aus. Üblicherweise 'Linux', 'Darwin' o. Ä.

```bash
uname
```

`uname -a` — Gibt alle verfügbaren Informationen aus: Kernel-Name, Hostname, Kernel-Release, Kernel-Version, Maschine, Prozessor, Hardware-Plattform und Betriebssystem.

```bash
uname -a
```

`uname -r` — Gibt das Kernel-Release (die Versionsnummer) aus. Praktisch, um zu prüfen, welcher Kernel läuft.

```bash
uname -r
```

`uname -m` — Gibt den Maschinen-Hardwarenamen (die Architektur) aus. Häufige Werte: x86_64, aarch64, arm64.

```bash
uname -m
```

## Alle Optionen

`uname -s` — Gibt den Kernel-Namen (Betriebssystem-Namen) aus. Entspricht dem bloßen 'uname'. Beispielausgabe: Linux, Darwin.

```bash
uname -s
```

`uname -n` — Gibt den Hostnamen des Netzknotens aus. Entspricht 'hostname'.

```bash
uname -n
```

`uname -r` — Gibt das Kernel-Release aus. Beispiel: 6.6.87-microsoft-standard-WSL2.

```bash
uname -r
```

`uname -v` — Gibt die Kernel-Version aus (Build-Datum und -Nummer, nicht die Release-Nummer).

```bash
uname -v
```

`uname -m` — Gibt den Maschinen-Hardwarenamen (die CPU-Architektur) aus. Beispiel: x86_64, aarch64.

```bash
uname -m
```

`uname -p` — Gibt den Prozessortyp aus. Liefert auf manchen Systemen 'unknown'.

```bash
uname -p
```

`uname -i` — Gibt die Hardware-Plattform aus. Liefert auf manchen Systemen 'unknown' (Linux-spezifisch).

```bash
uname -i
```

`uname -o` — Gibt den Betriebssystem-Namen aus. Beispiel: GNU/Linux (GNU-Coreutils-Option; auf der BSD-Variante von macOS nicht verfügbar).

```bash
uname -o
```

## Optionen kombinieren

`uname -sr` — Gibt Betriebssystem-Namen und Kernel-Release aus. Kurze Kombinationsform.

```bash
uname -sr
```

`uname -mrs` — Gibt Maschine, Kernel-Release und Betriebssystem-Namen aus.

```bash
uname -mrs
```

`uname -snr` — Gibt Betriebssystem-Namen, Hostnamen und Kernel-Release aus.

```bash
uname -snr
```

## Praxisbeispiele & Skripte

`[ $(uname -s) = 'Linux' ] && echo Linux` — Erkennt Linux in einem Shell-Skript. Praktisch für plattformübergreifende Skripte.

```bash
[ $(uname -s) = 'Linux' ] && echo 'Running on Linux'
```

`[ $(uname -m) = 'aarch64' ] && echo ARM` — Erkennt die ARM64-Architektur (z. B. Apple Silicon, Raspberry Pi). Praktisch zur Auswahl des passenden Binaries.

```bash
[ $(uname -m) = 'aarch64' ] && echo 'ARM64 detected'
```

`uname -r | grep -q 'WSL' && echo WSL` — Erkennt das Windows-Subsystem für Linux (WSL) anhand des Kernel-Release-Strings.

```bash
uname -r | grep -q 'WSL' && echo 'Running inside WSL'
```

`uname -r | cut -d. -f1,2` — Extrahiert nur die Haupt- und Nebenversionsnummer des Kernels.

```bash
uname -r | cut -d. -f1,2
```

## Verwandte Werkzeuge

`hostnamectl` — Zeigt oder setzt den Hostnamen und zugehörige Einstellungen. Detaillierter als uname auf systemd-Systemen.

```bash
hostnamectl
```

`lsb_release -a` — Zeigt Informationen zur Linux-Distribution (Name, Version, Codename).

```bash
lsb_release -a
```

`cat /etc/os-release` — Zeigt Distributionsinformationen aus der OS-Release-Datei. Auf allen modernen Linux-Systemen verfügbar.

```bash
cat /etc/os-release
```

`arch` — Gibt die Maschinenarchitektur aus. Entspricht 'uname -m'.

```bash
arch
```

<!-- PROSE:outro -->
## Fazit

uname ist ein reines Lese-Kommando – es verändert nichts und lässt sich gefahrlos in jedem Skript einsetzen. Für den schnellen Überblick reicht `uname -a`; brauchst du gezielt einzelne Werte, greifst du zu `-r` (Kernel-Release, etwa für passende Treiber oder Kernel-Module), `-m` (Architektur wie x86_64 oder aarch64) oder `-s`/`-n`/`-o`. Wichtig zu wissen: uname kennt nur den Kernel, nicht die Distribution. Welche Distro samt Version läuft, verraten dir erst `/etc/os-release`, `lsb_release` oder `hostnamectl`. Unter macOS ist uname zwar vorhanden, die eigentliche macOS-Version liefert aber `sw_vers`.

## Weiterführende Links

- [GNU-Coreutils-Handbuch: uname](https://www.gnu.org/software/coreutils/manual/html_node/uname-invocation.html) – offizielle Referenz zu allen Optionen (englisch)
- [man7.org: uname(1)](https://man7.org/linux/man-pages/man1/uname.1.html) – die Linux-Manpage zum Kommando (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [hostnamectl](https://www.jpkc.com/db/cheatsheets/shell-system/hostnamectl/) – Hostname und Systeminformationen unter systemd anzeigen und setzen
- [uptime](https://www.jpkc.com/db/cheatsheets/shell-system/uptime/) – Laufzeit des Systems und Load-Average anzeigen
- [lsblk](https://www.jpkc.com/db/cheatsheets/shell-system/lsblk/) – Blockgeräte und Partitionen als Baum auflisten

