öffnen Tags

öffnen Kategorien

Vom WebReader vorlesen lassen

a bit more less

20. Dec 2009, 03:19

Ich denke jeder Linux/Unix Nutzer konnte schon einmal einen Blick auf den Pager less erhaschen. Wer es nicht kennt, es ähnelt more, kann aber ein bisschen mehr ;-)
Da man im allgemeinen ziemlich oft damit arbeitet, hab ich über die Jahre ein paar Tricks auf geschnappt, die ich den Unwissenden nun gern vermitteln möchte.

Wie man ein File ließt weiß sicher jeder, für alle anderen sei die man-Page an's Herz gelegt. Was less außerdem so drauf hat, folgt!

Hotkeys

less hört natürlich nicht nur auf SPACE um weiter zu blättern, man kann mit dem Slash (/) auch nach regulären Ausdrücken im Dokument suchen, zum Beispiel findet

1
/([0-9]{1,3}.){3,3}[0-9]{1,3}

alle IP-Adressen. Mit n wird das nächste gesucht, mit N das vorherige Vorkommen.

Via Fragezeichen (?) kann außerdem sofort rückwärts gesucht werden und mir einem Kaufmannsund (&) werden alle Zeilen ausgeblendet, die den Suchbegriff nicht enthalten (mit &[ENTER] lässt man sich wieder alle Zeilen anzeigen, der Filter wird gelöscht).

Wenn ihr euch nicht nur Logs anguckt, sondern auch Quellcodes, ist die Klammersetzung nicht immer einfach zu überblicken. Auch hier hilft less! Steht in der ersten Zeile eine Klammer ({, ( oder [) kann man die dazugehörige Taste drücken und springt zur passenden geschlossenen Klammer. Funktioniert ebenso im umgekehrten Fall. Sind mehrere Klammern dieser Sorte in der Zeile, kann man vorher eine Zahl eingeben, die die Klammer spezifiziert.

Mit r wird der Screen neu bemalt, ist ganz nützlich wenn man auf einer virtuellen Konsole arbeitet und der Kernel seine Fehler dort hinloggt oder ein anderer Widersacher per write das Terminal verhunzt hat.

less kann sich übrigens auch als tail verkleiden, mit F springt man an das Ende der Datei und less wartet auf weiteren Input um diesen sofort anzuzeigen. Mit EOF (Control + D) kann dieser Modus wieder beendet werden.

Um die Datei unter einem anderen Namen zu speichern kann man s [NEW NAME] benutzen.

Ein simples Gleichheitszeichen (=) eingetippt zeigt zudem ein paar Informationen über die aktuelle Datei an.

Zum Schluss seien noch die beiden meist genutzen Hotkeys angemerkt, G springt zum Dateiende, g zum Anfang. Man kann vorher auch eine Zeilenzahl eintippen, zu dieser wird dann gesprungen.

Pager collaborate

less kann Dateien schön anzeigen, filtern und vieles mehr, was fehlt ist das Anpassen. Um ein File zu ändern benötigt man weiterhin einen Editor, dieser kann jedoch mit v direkt aus less heraus aufgerufen werden. Dabei wird der Standard-Editor aus der Umgebungsvariablen $VISUAL bzw. wenn diese nicht gesetzt ist $EDITOR verwendet.

Eventuell ist ein Editor zu viel des Guten, daher ist auch das Weiterleiten der Datei an ein Shell-Kommando möglich. Mit einem Ausrufezeichen (!) kann man diesen Befehl angeben und landet in einer "Zwischen-Shell", die diesen Befehl ausführt (mit [ENTER] kehrt man in den Pager zurück). Ein Prozentzeichen (%) wird dabei durch den aktuellen Dateinamen ersetzt. Beispielsweise öffnet das Folgende Kommando das selbe File in einem neuen less, in dem doppelte Zeilen nicht mehr vorkommen:

1
! uniq % | less

Wenn man das less danach nicht benötigt ist die Pipe nach less natürlich Quark. Verlässt man das neue less, kann man wieder zu dem vorherigen less zurückkehren.

Startschalter

Auch bei less lassen sich einige Parameter auf der Kommandozeile vordrehen. Die für mich essentiellen sind im folgenden zusammengefasst:

Am wichtigsten ist wohl das -i! Ist es im Kommando dabei wird fast jede Suche in less case insensitive ausgeführt, also keine Beachtung der Groß- und Kleinschreibung. Wieso fast? Gibt man im Suchmuster einen Großbuchstaben ein, wird wieder case sensitive gesucht. Mit -I im Befehl wird in jedem Fall case insensitive gesucht.

Interessant ist auch das -m, damit erhält man einen more-typischen Promt, also wieviel Prozent des Files schon gesichtet wurden. Wer noch mehr Informationen benötigt kann -M benutzen, hier teilt less mit wie das File heißt, welche Zeilen man gerade sieht (Bildschirmstart - Ende), wieviele Zeilen das Dokument gesamt bereit hält und eben auch einen prozentualen Überlick wie bei more.

Nächstes Feature ist das -j[N], wobei das [N] eine Zahl repräsentieren soll. Diese Zahl bestimmt die Zeilen, die vor der bei einer Suche gefundenen Zeile zusätzlich angezeigt werden sollen. Oft möchte man eben auch die zwei Zeilen davor sehen um den Kontext zu verstehen, dabei hilft eben ein -j2.

Außerdem kann man per Kommandozeile ein paar weitere Optionen mitgeben, mit +666 springt less gleich zur Zeile 666 und mit +/openmoko springt man sofort zum ersten Auftreten von openmoko, die weiteren openmoko's werden gehighlighted. Mit dem Plus lassen sich auch alle anderen internen Kommandos per Befehl mitgeben!

Ein -f zwingt (force) less das folgende File zu öffnen, sei es ein Verzeichnis oder ein Binary oder ein Device.

Andere Formate

Wer jetzt denkt dass less nur ASCII-Files sinnvoll darstellen kann, der irrt!
less kann ebenfalls eine ganze Menge andere Dateiformate wie PDF oder TAR, sogar komprimiert! Alles was man dafür tun muss ist folgendes in die Bash eintippen:

1
eval "$(lesspipe)"

Dies lässt sich natürlich auch prima in die .bashrc aufnehmen. lesspipe ist ein kleines AddOn für less, welches viele verschiedene Dateitypen behandeln kann. Ohne weiteres lassen sich damit folgende Formate öffnen (in Klammern die Programme die dafür benötigt werden):

  • .gz, .Z (gzip)
  • .bz2 (bzip2)
  • .zip (unzip)
  • .tar (tar)
  • .a (ar)
  • .rpm, .spm (rpm, rpm2cpio, cpio)
  • .deb (dpkg, dpkg-deb)
  • .doc (antiword)
  • .html (lynx)
  • .pdf (pdftotext)
  • .rtf (unrtf)
  • .dvi (dvi2tty)
  • .ps (ps2ascii, gs)

Es gibt weitere Extensions, welche zum Beispiel auch Bilder in ASCII-Art umwandeln und dann anzeigen können, solche sind für den allgemeinen Gebrauch aber nicht all zu wichtig und werde ich hier nicht erläutern. Wer derartiges benötigt sucht's sich selbst heraus oder besorgt sich ein X.

Defaults

Nun, da die meisten Leute zu viele Informationen für zu wenig naturgegebenen Vorratsspeicher besitzen (wem es anders geht bitte melden!), gibt less einem die Möglichkeit oft genutzte Knöpfe per Vorgabe zu drücken. Dieses funktioniert per Umgebungsvariable, sie nennt sich $LESS. Möchte man beispielsweise immer case insensitive suchen, dabei 3 Zeilen über der Fundstelle angezeigt bekommen und Tabs sollen 4 statt 8 Spaces breit sein, setzt man die Variable auf:

1
export LESS="-Ij3x4"

Tags: Debian Linux Software Unix

Kategorien: Betriebssystem Linux Software Unix

© 2009-2018 by Martin Scharm