lsd: Moderne, ergonomische Alternative zu ls

Warum lsd

  • Bessere Lesbarkeit: Farben, Spaltenlayout, optionale Icons.
  • Mehr Features: Tree-Ansicht, flexible Sortierung, optionale Git-Spalte, gruppierte Verzeichnisse.
  • Konfigurierbar: Zentrale YAML-Konfiguration, sinnvolle Defaults.
  • Portabel und schnell: Rust-basiert, Linux/macOS/Windows/BSD.

Installation

Linux

  • Debian/Ubuntu (Repo):
    sudo apt update
    sudo apt install lsd
    Falls nicht verfügbar: .deb von GitHub-Releases installieren.
    wget https://github.com/lsd-rs/lsd/releases/latest/download/lsd_amd64.deb
    sudo apt install ./lsd_amd64.deb
  • Fedora:
    sudo dnf install lsd
  • Arch/Manjaro:
    sudo pacman -S lsd
  • openSUSE:
    sudo zypper install lsd

macOS

brew install lsd

Windows

  • Scoop:
    scoop install lsd
  • Chocolatey:
    choco install lsd
  • Winget:
    winget install lsd-rs.lsd

Cargo (alle Plattformen)

cargo install lsd

Schnelleinstieg

Grundlegend

  • Standardliste:
    lsd
  • Alle Dateien (inkl. versteckter):
    lsd -a
  • Lange Ansicht (zusätzliche Spalten):
    lsd -l
  • Rekursiv (Tree):
    lsd --tree
  • Tree mit Tiefe:
    lsd --tree --depth 2

Sortierung und Gruppierung

  • Nach Größe/Datum/Endung/Name:
    lsd --sort size
    lsd --sort time
    lsd --sort extension
    lsd --sort name
  • Verzeichnisse zuerst:
    lsd --group-dirs=first

Git-Status

  • Git-Spalte in -l anzeigen (in Git-Repos):
    lsd -l --git

Filter

  • Nur Verzeichnisse:
    lsd --only-dirs
  • Glob ignorieren:
    lsd --ignore-glob 'node_modules|target'

Icons und Fonts

  • lsd kann Dateisymbole anzeigen. Für saubere Darstellung sollte ein Nerd Font im Terminal aktiviert sein (z. B. FiraCode Nerd Font).
  • Icons via Konfiguration steuern (siehe unten). Ohne Nerd Font Icons deaktivieren.

Empfohlene Aliases

Alias ls → lsd (kompatible Defaults)

# ~/.bashrc oder ~/.zshrc
alias ls='lsd --group-dirs=first'
alias ll='lsd -l --group-dirs=first --header'
alias la='lsd -la --group-dirs=first --header'
alias lt='lsd --tree --depth 2 --group-dirs=first'

Danach Shell neu laden:

exec $SHELL -l

Konfiguration via ~/.config/lsd/config.yaml

lsd liest eine YAML-Datei für Defaults. Erzeuge bei Bedarf das Verzeichnis:

mkdir -p ~/.config/lsd

Beispielkonfiguration:

# ~/.config/lsd/config.yaml
 
# Ausgabe-Layout und Spalten
blocks:
  - permission
  - user
  - group
  - size
  - date
  - name
 
# Farben und Icons
color:
  when: always        # auto | always | never
  theme: default      # default | custom themes (wenn installiert)
 
icons:
  when: auto          # auto | always | never
  theme: fancy        # fancy | unicode
 
# Sortierung und Gruppierung
sorting:
  column: name        # name | size | time | extension
  reverse: false
  natural: true
  case_sensitive: false
  group_directories_first: true
 
# Datumsausgabe (strftime/chrono-Format)
date: "+%Y-%m-%d %H:%M"
 
# Anzeige
layout: grid          # grid | oneline | tree | long (lang= -l)
header: true          # Kopfzeile in -l
recursion:
  enabled: false
  depth: 2

Hinweise

  • Einige Schlüssel können je nach Version variieren. Prüfe verfügbare Optionen mit:
    lsd --help
  • Konfigurationswerte aus config.yaml entsprechen in der Regel den gleichnamigen CLI-Parametern.
  • Wenn die Icons fehlerhaft angezeigt werden: Terminal-Font auf einen Nerd Font umstellen oder icons.when auf never setzen.

Shell-Completion

  • Viele Pakete installieren Completion automatisch (bash/zsh/fish).
  • Falls nötig, generiere Completions manuell:
    # Beispielpfade – an Distribution anpassen
    # Zsh:
    mkdir -p ~/.local/share/zsh/site-functions
    lsd --completion zsh > ~/.local/share/zsh/site-functions/_lsd
     
    # Bash:
    mkdir -p ~/.local/share/bash-completion/completions
    lsd --completion bash > ~/.local/share/bash-completion/completions/lsd
     
    # Fish:
    mkdir -p ~/.config/fish/completions
    lsd --completion fish > ~/.config/fish/completions/lsd.fish

Performance und Praxis

  • lsd ist schnell, insbesondere in großen Verzeichnissen. Tree-Ansicht und Git-Status kosten zusätzliche I/O; bei sehr großen Repos sparsam einsetzen.
  • Für Skripte kannst du farblose, stabile Ausgaben erzwingen:
    lsd --color=never
  • Für Remote-Umgebungen ohne Nerd Fonts icons.when auf never setzen, um Ausgabgarbling zu vermeiden.

Troubleshooting

  • Keine Farben: Prüfe TERM (z. B. xterm-256color) und —color/Config.
  • Merkwürdige Symbole/Quadrate: Nerd Font fehlt oder nicht aktiv.
  • Erwartete Option fehlt: Version prüfen (lsd —version) und ggf. aktualisieren.

Tags #linuxshellcliterminallsdlsrustdotfilesnerdfontsproductivity

Linux-Blog-Overview