Sammlung nützlicher Tipps zur Verwendung des Befehls `less(1)`
(blog.thechases.com)- Mit den verschiedenen Funktionen und Tastenkombinationen des Befehls
lesslassen 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,:dist 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,-Nusw.) und das Ausführen externer Befehle (!) kann die Umgebung sofort angepasst werden, ohnelesszu beenden
Mit mehreren Dateien arbeiten
lessist nicht nur ein Werkzeug für das Ende einer Pipeline, sondern kann mehrere Dateien direkt als Argumente öffnen- Beispiel:
less file1 file2 file3
- Beispiel:
- Auch während der Ausführung kann mit dem Befehl
:e file.heine neue Datei hinzugefügt werden - Mit
:nkann zur nächsten Datei, mit:pzur vorherigen Datei und mit:xoder:rewindzur ersten Datei gewechselt werden - Mit dem Befehl
:dkann die aktuelle Datei aus der Liste entfernt werden
Navigationsfunktionen
- Gibt man Zahl + G wie
3141Gein, springt man zu einer bestimmten Zeilennummer - Mit Zahl + % wie
75%springt man zu einer prozentualen Position in der Datei - Mit
/Mustererfolgt eine Vorwärtssuche, mit?Mustereine Rückwärtssuche, mitn/Nspringt man zum nächsten/vorherigen Treffer!Musterfindet Zeilen ohne Übereinstimmung,*sucht über mehrere Dateien hinweg,@startet die Suche ab der ersten Datei,@*durchsucht alle Dateien vollständig
Filterfunktionen
- Mit
&Musterwerden nur Zeilen angezeigt, die dem Muster entsprechen; funktioniert ähnlich wie ein internesgrep - Mit
&!Musterwerden 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
moein Lesezeichen im Abschnitt OPTIONS und mitmeim Abschnitt EXAMPLES setzen, dann mit'o,'edorthin springen
- Beispiel: Mit
- 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+busw. können benutzerdefinierte Klammerpaare festgelegt werden
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,!bcusw.)
Umgebungsvariablen und weitere Funktionen
- Häufig verwendete Optionen können in der Umgebungsvariable
$LESSgespeichert werden- Beispiel:
LESS="-RNe"→ Farben anzeigen, Zeilennummern anzeigen, am Dateiende automatisch beenden
- Beispiel:
- Mit dem Befehl
vwird die aktuelle Datei im Editor$VISUALgeöffnet - Mit dem Befehl
ooderOkann aus der Standardeingabe gelesener Inhalt in eine Datei gespeichert werden lessunterstützt eine aufctagsbasierende Tag-Sprung-Funktion, wird aber eher selten verwendet
1 Kommentare
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 alstailStartet man mit
less +F, folgt es einem Eingabestream oder einer Datei in Echtzeit. Mit<C-c>stoppt man das Folgen und kann wie in normalemlessnavigieren; mitF(großgeschrieben) wird das Folgen wieder aufgenommenkubectl logs | less +F) und<C-c>drückt, wird der gesamte Pipe-Prozess beendet, sodass man das Folgen mitFnicht wieder aufnehmen kann. Inlessgibt es mit<C-x>eine Alternative zum Stoppen des Folgens, aber die meisten Shells fangen diese Taste abtailkann 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 nochtailDie Option
-Xoder--no-initsorgt 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-Xnur gelegentlich nutzen möchte, kann man sich diesen Tipp im Thread ansehen-Ebeendet 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 merkenBeim 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ützlichEs gibt zwei nützliche Tipps
Die Option
-Lüberspringt die Vorverarbeitung der Eingabedatei und verhindert so, dass Logdateien mit rotierenden Namen wielogfile.1,logfile.2fälschlich mitnroffverarbeitet werdenAußerdem kann man bei der Suche als erstes Zeichen
Ctrl-Reingeben, um nach einer wörtlichen Zeichenkette statt mit regulärem Ausdruck zu suchenMit der Datei
~/.lesskeylassen sich Tastenbelegungen festlegen. Ich habesso belegt, dass es rückwärts scrollt, und blättere mitdundsschnell einhändig vor und zurückIm standardmäßigen
lessauf macOS fehlt diese Funktion, man muss es also über Homebrew installieren (Beispielkonfiguration, Erklärung dazu)Nebenfalls mit next-file. Dass macOS kein lesskey hat, ist wirklich lästigmanauf OpenBSD übergibt Tags anless, sodass man mit:t testdirekt 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 Programmmandoc(mdoc-Dokumentation)Man kann
lessso konfigurieren, dass es mit^qbeendet wird, ohne den Bildschirm zu löschen, während normalesqwie bisher beendet und danach den Bildschirm löschtlessmuss dafür ohne-Xgestartet werden, und das ist besonders nützlich, wenn man frühere Ausgaben wie beigit lognachschlagen möchtelesshat auch eine Funktion, um an externe Befehle zu pipen.Man kann zum Beispiel mit
maeine Markierung setzen und mit|aden 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
-janpassen, wie viele Zeilen unterhalb des oberen Bildschirmrands Suchtreffer angezeigt werdengit log. Nach Auswahl eines Commits führe ich per Shortcutgit showaus oder erledige direkt fixup-Arbeiten.Mit dem Debug-Trap von
bashundkeyd-application-mappererkenne ich den gerade laufenden Befehl, extrahiere den jeweiligen Commit-Hash und verarbeite ihn per SkriptDie Regex-Engine von
less(1)ist viel zu langsam. Bei großen Dateien suche ich mitgrepoderripgrepund leite das Ergebnis dann zur Ansicht anlessweiterMit der Taste
skann man Pipe-Daten in eine Datei speichern. Das ist viel bequemer als Copy-and-Pastelessan und speichere sie nur dann mits, wenn das Ergebnis nützlich ist.Man könnte auch
teeverwenden, aber das hinterlässt immer eine Datei und ist deshalb unnötig ineffizient, wenn man sie gar nicht braucht