less ist der Standard-Pager auf nahezu jedem Linux-System: ein interaktives Werkzeug, um Dateien und Datenströme seitenweise zu betrachten — vorwärts, rückwärts, mit Suche, Marken und Live-Tail. Anders als cat schüttet less nichts in einem Rutsch ins Terminal, und anders als more kann es zurückblättern, suchen und mit beliebig großen Dateien umgehen, ohne sie komplett in den Speicher zu laden.

Was less macht

less ist ein Pager: Er liest eine Datei oder einen Stream und stellt den Inhalt bildschirmweise dar. Du blätterst mit der Tastatur, suchst per Regex, springst an den Anfang oder das Ende — alles ohne den Inhalt vollständig in den Speicher zu laden. Das macht less zu einem der wenigen Werkzeuge, mit denen du auch Mehr-Gigabyte-Logs ohne Risiko öffnen kannst.

Bash Datei seitenweise öffnen
less /var/log/syslog
Bash Stream als Pipe ansehen
dmesg | less

Der Name ist ein Wortspiel auf das ältere more — getreu dem Motto „less is more”. Tatsächlich kann less deutlich mehr als sein Vorgänger.

less vs. more und cat

Alle drei Werkzeuge zeigen Dateiinhalte, aber sie verfolgen sehr unterschiedliche Konzepte. cat schreibt einfach alles auf den Standardausgabe-Strom, ohne Interaktion. more ist der historische Pager, primitiv und nur vorwärts. less ist der heute übliche Standard.

Eigenschaftcatmoreless
Speichernur stdout, kein Pufferinkrementellinkrementell, beliebig große Dateien
Vorwaerts blätternjaja
Rückwaerts blätternnein (begrenzt)ja, vollständig
Suchenur vorwaertsvorwaerts und rückwaerts, Regex
Live-Tailja (+F)
Pipe-tauglichjajaja
Quitqq

Faustregel: Für kurze Inhalte und Verkettungen cat, für interaktives Lesen immer less. more braucht man heute praktisch nie mehr — es existiert nur noch aus Kompatibilitätsgründen.

less ist tastaturzentriert und folgt größtenteils den Konventionen von vi. Die wichtigsten Tasten solltest du im Schlaf können — sie funktionieren auch in man-Pages, in git log und vielen anderen Werkzeugen, die less als Pager einbinden.

TasteWirkung
Space / fEine Seite vorwaerts
bEine Seite rückwaerts
d / uEine halbe Seite vor / zurück
j / kEine Zeile vor / zurück
gAn den Anfang der Datei
GAn das Ende der Datei
NgZu Zeile N springen (z. B. 42g)
/patternVorwaerts suchen
?patternRückwaerts suchen
n / NNächster / vorheriger Treffer
&patternNur Zeilen anzeigen, die pattern enthalten
m<Buchstabe>Marke setzen
'<Buchstabe>Zur Marke springen
=Aktuelle Position anzeigen (Zeile, Byte, Prozent)
hHilfe anzeigen
qPager verlassen

Wer vi oder Vim kennt, fühlt sich sofort heimisch — j/k für Zeilen, g/G für Datei-Anfang/Ende und //? für Suche sind identisch.

Wichtige Optionen

less lässt sich beim Aufruf vielfältig konfigurieren. Die wichtigsten Schalter im Alltag:

OptionWirkung
-NZeilennummern anzeigen
-SLange Zeilen abschneiden statt umbrechen
-RRohe ANSI-Escape-Sequenzen darstellen (Farben aus grep --color, git, ls)
-FAuto-Quit, wenn Inhalt auf einen Bildschirm passt
-XBildschirm beim Beenden nicht zurücksetzen
-iSmart-Case: Suche case-insensitive, wenn Pattern klein geschrieben ist
-IStrikt case-insensitive — Großschreibung im Pattern wird ignoriert
+GDirekt ans Ende der Datei springen
+/patternDatei öffnen und beim ersten Treffer von pattern positionieren
+FLive-Tail-Modus (siehe nächster Abschnitt)
Bash Log mit Zeilennummern und Farben anzeigen
less -N -R /var/log/nginx/access.log
Bash Direkt zur ersten ERROR-Zeile springen
less +/ERROR app.log

Suchen tiefer

Die Suche in less ist mehr als nur „nächstes Vorkommen finden”. Patterns sind POSIX-Extended-Regex — also Klammern, Alternation, Quantifizierer, Anker, alles dabei.

Bash Regex-Suche im Pager
/^(ERROR|WARN).*timeout

Diese Suche im interaktiven Pager findet alle Zeilen, die mit ERROR oder WARN beginnen und das Wort timeout enthalten. Mit n springst du zum nächsten, mit N zum vorherigen Treffer. ?pattern sucht in die andere Richtung — nach oben.

Sehr nützlich ist &pattern: Statt zwischen Treffern zu springen, filtert less die Anzeige und zeigt nur noch Zeilen, die das Pattern matchen. Mit & ohne Argument hebst du den Filter wieder auf — perfekt für interaktives Eingrenzen in großen Logs.

Marken funktionieren wie ein Lesezeichen-System: m gefolgt von einem Buchstaben merkt sich die aktuelle Position, ' gefolgt vom selben Buchstaben springt zurück. Praktisch beim Vergleichen weit entfernter Stellen — etwa Stack-Trace oben und Konfiguration weiter unten.

Live-Tail mit F

Eine der mächtigsten Funktionen: less kann eine Datei wie tail -f live verfolgen. Du startest den Modus entweder beim Aufruf mit +F oder mitten in der Sitzung durch Drücken von F (Shift+f).

Bash Log live verfolgen
less +F /var/log/syslog

Solange du im Follow-Modus bist, erscheinen neue Zeilen am unteren Rand. Mit Ctrl+C brichst du den Modus ab und landest wieder im normalen Pager — du kannst nach oben scrollen, suchen, springen. Mit erneutem F setzt du das Mitlesen fort. Diese Kombination ersetzt die typische Workflow-Schleife „tail -f starten, mit Ctrl+C abbrechen, mit less öffnen, suchen, wieder zu tail -f wechseln”.

less als MANPAGER und Default-Pager

Die meisten Werkzeuge, die längere Ausgaben produzieren — man, git log, git diff, systemctl status — leiten ihre Ausgabe automatisch an einen Pager weiter. Welcher Pager genutzt wird, regeln zwei Umgebungsvariablen:

VariableBedeutung
PAGERStandard-Pager für alle Werkzeuge
MANPAGERSpeziell für man-Pages (fällt sonst auf PAGER zurück)
LESSDefault-Optionen für less selbst
Bash less als Standardpager mit komfortablen Defaults
export PAGER=less
export LESS='-R -F -X -i'

Diese Defaults bedeuten: ANSI-Farben durchreichen (-R), bei kurzem Inhalt automatisch beenden (-F), Bildschirm nicht zurücksetzen (-X), case-insensitive bei kleingeschriebenen Patterns (-i). Eine sehr verbreitete Kombination — viele Distributionen liefern ähnliche Defaults aus.

Git nutzt less ebenfalls, hat aber eigene Vorgaben über core.pager. Anpassen lässt sich das mit git config --global core.pager 'less -R -F -X'.

Es gibt auch Alternativen, falls less zu spartanisch ist:

ToolCharakter
batcat/less-Hybrid mit Syntax-Highlighting und Git-Integration
mostPager mit mehreren Fenstern und farbiger Anzeige
moarModerner Pager in Go, schöne Defaults, gute Suche

In Skripten und SSH-Sitzungen bleibt less aber gesetzt — es ist überall verfügbar und stabil.

Stolperfallen

Mit -X bleibt der Output nach dem Beenden im Terminal stehen

-X verhindert, dass less den alternativen Bildschirmpuffer nutzt — der Inhalt der letzten Sitzung bleibt nach dem Quit sichtbar. Praktisch für kurze Lookups, aber störend bei großen Dateien: Ein 10.000-Zeilen-Log überflutet beim Beenden den Scrollback. Wer den klassischen „Bildschirm wird sauber” haben will, lässt -X weg.

Locale-Probleme bei -R mit fehlerhaften ANSI-Sequenzen

-R reicht ANSI-Escape-Sequenzen unverändert durch, vertraut also dem Inhalt. Enthält eine Datei Bytes, die wie Steuersequenzen aussehen — etwa Binärdateien oder kaputte UTF-8-Streams — kann das Terminal in einen seltsamen Zustand geraten (Farben kleben, Cursor verschwindet). Mit reset stellst du den Terminalzustand wieder her. Für fragwürdige Inhalte ist -r (raw, ohne Annahmen) oder gar kein Raw-Modus sicherer.

less +F in einer Pipe verhält sich anders als bei einer Datei

Bei less +F datei.log wartet der Pager auf neue Zeilen am Dateiende. Bei cmd | less +F hängt der Modus jedoch von cmd ab: Schließt cmd die Pipe, beendet sich auch der Follow-Modus. Manche Programme buffern ihre Ausgabe zudem (line- vs. block-buffer), sodass Zeilen nicht sofort ankommen. Mit stdbuf -oL cmd | less +F erzwingst du Line-Buffering.

-F mit -X als cat-mit-Pager-Komfort

Die Kombination less -FX ist beliebt: Passt der Inhalt auf einen Bildschirm, beendet sich less sofort und lässt den Output stehen — wie cat. Ist die Datei länger, springt der Pager ein. Das ist die Idee hinter dem häufig empfohlenen LESS=-FRX-Default. Achtung: Auf manchen älteren less-Versionen hat -F einen Bug, bei dem der erste Bildschirm nicht angezeigt wird, wenn der Inhalt knapp drüber liegt — Update auf eine aktuelle Version (mind. 530) löst das.

Git nutzt less mit eigenen Defaults

git log, git diff und git show rufen less über die Konfiguration core.pager auf — und überschreiben dabei meist LESS. Standardmäßig setzt Git intern LESS=FRX, was zu seltsamen Überraschungen führen kann (z. B. „kurze Diffs verschwinden ohne Spur”). Mit git config —global core.pager ‘less -R’ setzt du explizite eigene Defaults und umgehst das Auto-Quit.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Textverarbeitung

Zur Übersicht