1 Punkte von GN⁺ 2026-01-04 | 1 Kommentare | Auf WhatsApp teilen
  • Mit den verschiedenen Funktionen und Tastenkombinationen des Befehls less lassen sich Dateinavigation, Suche, Filterung, Lesezeichen und das Umschalten von Optionen effizient erledigen
  • Mehrere Dateien können gleichzeitig geöffnet werden, und mit den Befehlen :n, :p, :e, :d ist das Wechseln, Hinzufügen und Entfernen von Dateien möglich
  • Mit den Such- (/, ?, n, N) und Filterfunktionen (&, &!) lassen sich bestimmte Muster schnell finden oder ausschließen
  • Mit Lesezeichen (m, ') und Klammerzuordnung wird die Navigation in langen Dokumenten oder Codedateien vereinfacht
  • Durch das Umschalten von Optionen während der Laufzeit (-S, -R, -N usw.) und das Ausführen externer Befehle (!) kann die Umgebung sofort angepasst werden, ohne less zu beenden

Mit mehreren Dateien arbeiten

  • less ist nicht nur ein Werkzeug für das Ende einer Pipeline, sondern kann mehrere Dateien direkt als Argumente öffnen
    • Beispiel: less file1 file2 file3
  • Auch während der Ausführung kann mit dem Befehl :e file.h eine neue Datei hinzugefügt werden
  • Mit :n kann zur nächsten Datei, mit :p zur vorherigen Datei und mit :x oder :rewind zur ersten Datei gewechselt werden
  • Mit dem Befehl :d kann die aktuelle Datei aus der Liste entfernt werden

Navigationsfunktionen

  • Gibt man Zahl + G wie 3141G ein, springt man zu einer bestimmten Zeilennummer
  • Mit Zahl + % wie 75% springt man zu einer prozentualen Position in der Datei
  • Mit /Muster erfolgt eine Vorwärtssuche, mit ?Muster eine Rückwärtssuche, mit n/N springt man zum nächsten/vorherigen Treffer
    • !Muster findet Zeilen ohne Übereinstimmung, * sucht über mehrere Dateien hinweg, @ startet die Suche ab der ersten Datei, @* durchsucht alle Dateien vollständig
    Anzeige

Filterfunktionen

  • Mit &Muster werden nur Zeilen angezeigt, die dem Muster entsprechen; funktioniert ähnlich wie ein internes grep
  • Mit &!Muster werden nur Zeilen angezeigt, die nicht dem Muster entsprechen; nützlich beim Durchsuchen von Logdateien

Lesezeichen und Klammerzuordnung

  • Mit m + Zeichen wird ein Lesezeichen gesetzt, mit ' + Zeichen springt man zu dieser Position
    • Beispiel: Mit mo ein Lesezeichen im Abschnitt OPTIONS und mit me im Abschnitt EXAMPLES setzen, dann mit 'o, 'e dorthin springen
  • Wenn sich eine Klammer wie (, [, { in der ersten Zeile des Bildschirms befindet, springt die Eingabe dieser Klammer zur passenden Gegenklammer
    • Umgekehrt springt man bei einer schließenden Klammer in der letzten Zeile zur öffnenden Klammer
  • Mit alt+ctrl+b usw. können benutzerdefinierte Klammerpaare festgelegt werden
Anzeige

Optionen umschalten und externe Befehle ausführen

  • Während der Ausführung können nach - Optionen eingegeben werden, um Einstellungen sofort zu ändern
    • -S: Zeilenumbruch umschalten
    • -G: Suchhervorhebung
    • -i/-I: Groß-/Kleinschreibung festlegen
    • -R: ANSI-Farben anzeigen
    • -N/-n: Zeilennummern anzeigen/ausblenden
  • Mit dem Befehl ! lassen sich externe Befehle ausführen (!date, !bc usw.)

Umgebungsvariablen und weitere Funktionen

  • Häufig verwendete Optionen können in der Umgebungsvariable $LESS gespeichert werden
    • Beispiel: LESS="-RNe" → Farben anzeigen, Zeilennummern anzeigen, am Dateiende automatisch beenden
  • Mit dem Befehl v wird die aktuelle Datei im Editor $VISUAL geöffnet
  • Mit dem Befehl o oder O kann aus der Standardeingabe gelesener Inhalt in eine Datei gespeichert werden
  • less unterstützt eine auf ctags basierende Tag-Sprung-Funktion, wird aber eher selten verwendet

1 Kommentare

 
GN⁺ 2026-01-04
Hacker-News-Kommentare
  • Überraschend, dass die follow-Funktion fehlte. Anfangs wirkt sie wie eine etwas seltsame UX, aber wenn man sich daran gewöhnt hat, ist sie oft besser als tail
    Startet man mit less +F, folgt es einem Eingabestream oder einer Datei in Echtzeit. Mit <C-c> stoppt man das Folgen und kann wie in normalem less navigieren; mit F (großgeschrieben) wird das Folgen wieder aufgenommen

    • Wenn man einer Pipe-Eingabe folgt (kubectl logs | less +F) und <C-c> drückt, wird der gesamte Pipe-Prozess beendet, sodass man das Folgen mit F nicht wieder aufnehmen kann. In less gibt es mit <C-x> eine Alternative zum Stoppen des Folgens, aber die meisten Shells fangen diese Taste ab
    • In tail kann man Enter drücken, um unter der letzten Zeile eine Leerzeile einzufügen. Das ist praktisch, um die Ergebnisse mehrerer Läufe voneinander zu trennen, und wegen dieser einen Funktion nutze ich immer noch tail
    • Statt „ein bisschen seltsam“ würde ich sagen, die UX ist schlecht. Es sollte kein Moduswechsel nötig sein; wenn neue Daten kommen, sollte einfach automatisch aktualisiert werden
    • Es wäre schön, wenn es einen Modus gäbe, in dem neue Ausgaben automatisch angehängt werden, während man gleichzeitig navigieren kann. So etwas wie ein Auto-Scroll-Toggle wie im Terminal würde völlig reichen
    • Früher dachte ich, „follow“ sei eine komplexe Funktion, die Dateideskriptoren speziell behandelt, aber tatsächlich ist es nur fortlaufendes Polling nach EOF. Das heißt, zwischen normalem Öffnen einer Datei und dem Follow-Modus gibt es keinen grundlegenden Unterschied, und Software kann leicht zwischen beidem wechseln
  • Die Option -X oder --no-init sorgt dafür, dass der Bildschirm beim Beenden nicht gelöscht wird. Ich bevorzuge es normalerweise, den Bildschirminhalt beizubehalten, damit ich vorherige Inhalte nachschlagen oder per Copy-and-Paste übernehmen kann

    • Wenn man das Verhalten von -X nur gelegentlich nutzen möchte, kann man sich diesen Tipp im Thread ansehen
    • Zusammen mit -E beendet es sich sofort, wenn die Ausgabe kleiner als die Terminalgröße ist. Ich verwende oft mehrere Optionen kombiniert als „less -SEXIER“. Lässt sich auch leicht merken
  • Beim Debuggen langer Logs filtere ich mit & nur die Teile heraus, die ich lesen will, und schließe mit &! unnötige Teile aus. Reguläre Ausdrücke werden auch unterstützt. Manchmal ist es langsam, aber für spontanes Filtern nützlich

  • Es gibt zwei nützliche Tipps
    Die Option -L überspringt die Vorverarbeitung der Eingabedatei und verhindert so, dass Logdateien mit rotierenden Namen wie logfile.1, logfile.2 fälschlich mit nroff verarbeitet werden
    Außerdem kann man bei der Suche als erstes Zeichen Ctrl-R eingeben, um nach einer wörtlichen Zeichenkette statt mit regulärem Ausdruck zu suchen

  • Mit der Datei ~/.lesskey lassen sich Tastenbelegungen festlegen. Ich habe s so belegt, dass es rückwärts scrollt, und blättere mit d und s schnell einhändig vor und zurück
    Im standardmäßigen less auf macOS fehlt diese Funktion, man muss es also über Homebrew installieren (Beispielkonfiguration, Erklärung dazu)

    • Ich belege N ebenfalls mit next-file. Dass macOS kein lesskey hat, ist wirklich lästig
  • man auf OpenBSD übergibt Tags an less, sodass man mit :t test direkt zu einem bestimmten Abschnitt springen kann. Eine interessante Funktion, aber praktisch nutze ich sie kaum.
    Die konsistente Oberfläche mit einfacher /-Suche ist intuitiver.
    BSD-Systeme verwenden übrigens das mdoc-Makroset, um semantisch strukturierte Dokumentation zu erstellen, und OpenBSD nutzt zum Rendern das Programm mandoc (mdoc-Dokumentation)

  • Man kann less so konfigurieren, dass es mit ^q beendet wird, ohne den Bildschirm zu löschen, während normales q wie bisher beendet und danach den Bildschirm löscht

    echo '^q toggle-option -redraw-screen\nq' >> ~/.config/lesskey
    

    less muss dafür ohne -X gestartet werden, und das ist besonders nützlich, wenn man frühere Ausgaben wie bei git log nachschlagen möchte

  • less hat auch eine Funktion, um an externe Befehle zu pipen.
    Man kann zum Beispiel mit ma eine Markierung setzen und mit |a den Inhalt von der aktuellen Position bis zu dieser Markierung an einen externen Befehl senden.
    Das ist nützlich, um Teile von News oder E-Mails zu speichern.
    Außerdem kann man mit der Option -j anpassen, wie viele Zeilen unterhalb des oberen Bildschirmrands Suchtreffer angezeigt werden

    • Ich nutze diese Pipe-Funktion auch in git log. Nach Auswahl eines Commits führe ich per Shortcut git show aus oder erledige direkt fixup-Arbeiten.
      Mit dem Debug-Trap von bash und keyd-application-mapper erkenne ich den gerade laufenden Befehl, extrahiere den jeweiligen Commit-Hash und verarbeite ihn per Skript
  • Die Regex-Engine von less(1) ist viel zu langsam. Bei großen Dateien suche ich mit grep oder ripgrep und leite das Ergebnis dann zur Ansicht an less weiter

  • Mit der Taste s kann man Pipe-Daten in eine Datei speichern. Das ist viel bequemer als Copy-and-Paste

    • Ich nutze diese Funktion auch oft. Ich schaue mir die Ausgabe eines lang laufenden Prozesses in less an und speichere sie nur dann mit s, wenn das Ergebnis nützlich ist.
      Man könnte auch tee verwenden, aber das hinterlässt immer eine Datei und ist deshalb unnötig ineffizient, wenn man sie gar nicht braucht