Wie können Sie "less" ausführen und ein Suchmuster automatisch ausführen lassen?

14

Ich versuche unter lessLinux zu laufen und möchte, dass es sofort nach dem Start nach etwas sucht.

Im Grunde ist es so:

$ less

Drücken Sie dann '/', geben Sie ein Suchmuster wie ein "^commit \w+$", drücken Sie die Eingabetaste und drücken Sie 'n', um nach jedem nachfolgenden Ergebnis zu suchen.

Ich möchte weniger starten und dann nach einem Muster suchen. Die Manpage enthält anscheinend nichts über das Beginnen mit einem Muster, aber vielleicht können Sie ihm Befehle wie Vim senden.

Neil
quelle
1
Genial, fügen Sie dies in Ihre Git-Konfiguration ein: core.pager = less -cFRX --pattern='^commit'und Sie werden in der Lage sein, mit der Taste 'n' sofort zum nächsten Commit zu gelangen.
Neil

Antworten:

8

Von der manSeite:

   -ppattern or --pattern=pattern
          The  -p  option  on the command line is equivalent to specifying
          +/pattern; that is, it tells less to start at the  first  occur-
          rence of pattern in the file.

Dies funktioniert erwartungsgemäß mit der neuesten Version von less( 436 ).

goldPseudo
quelle
17

Sie können mit + beliebige Befehle senden. Z.B:

less +/pattern

-p PATTERN(wie von nik gepostet) entspricht +/PATTERN.

Matthew Flaschen
quelle
2
Ich bevorzuge diese Antwort, weil sie vollständiger ist. Die Option +/patternist gleichbedeutend mit --pattern=pattern, kann aber mehr, z. B. um weniger am Ende einer Datei zu beginnen, tun less +G. Die +Option gibt Ihnen alles -p|--patternhat und der gesamte Satz von anderen Befehlen in weniger zu laufen, so dass ich sagen , nicht die Mühe , zu erinnern -pund einfach zu verwenden , +/suchen so wie man es von innen weniger.
DrStrangepork
4

Du meinst wie?

less -p MUSTER Dateiname

Das steht im Handbuch.

nik
quelle
4

Es gibt zwei Möglichkeiten, dies zu tun. Wie alle anderen erwähnten, können Sie die -p/ --pattern-Optionen verwenden:

less -p<pattern>
less --pattern=<pattern>

Ihr Muster muss in Anführungszeichen gesetzt werden, da es ein Leerzeichen enthält.

Es gibt jedoch tatsächlich einen zweiten Weg, dies zu tun:

LESS=-p<pattern> less
LESS=--pattern=<pattern> less

Die zweite Methode hat einen entscheidenden Vorteil. Es kann mit anderen Befehlen verwendet werden, die weniger für die Paginierung verwenden !:

LESS=-p"^       read \[" man bash

Dies kann im wahrsten Sinne des Wortes erweitert werden, um die Bash-Manpage nach allen eingebauten Befehlen zu durchsuchen. Ich habe eines Tages ein wenig mitgerissen und Mann für bash builtins "repariert" .

Adam Stewart
quelle
3

Es ist in der Tat etwas in der weniger Manpage.

Du könntest es versuchen :

less -p<pattern>

oder

less --pattern=<patern>
Slubman
quelle
0

Eine andere Möglichkeit ist, wenn Sie den lessthen-Typ &und den patternvon Ihrem Interesse ausführen .

Auf diese Weise können Sie nur die Zeilen abrufen, die Sie patterninteressieren, nicht alle Zeilen. Die Bedeutung zeigt nur die übereinstimmenden Zeilen .

&/ <pattern_of_interest>
Dan Art
quelle