¿Cómo ejecutas `less` y haces que ejecute un patrón de búsqueda automáticamente?

14

Estoy tratando de ejecutar lessen Linux, y quiero que busque algo inmediatamente después del lanzamiento.

Básicamente es como hacer esto:

$ less

Luego presione '/', escriba un patrón de búsqueda como "^commit \w+$", luego presione Intro y presione 'n'para encontrar cada resultado posterior.

Me gustaría que se lanzara menos y luego buscar un patrón. Parece que no hay nada en la página del manual sobre comenzar con un patrón, pero tal vez pueda enviarle comandos como Vim.

Neil
fuente
1
Impresionante, pon esto en tu configuración de git: core.pager = less -cFRX --pattern='^commit'y podrás ir al siguiente commit con la tecla 'n' de inmediato.
Neil

Respuestas:

8

De la manpágina:

   -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.

Esto funciona como se esperaba utilizando la última versión de less( 436 ).

goldPseudo
fuente
17

Puede usar + para enviar comandos arbitrarios. P.ej:

less +/pattern

-p PATTERN(según lo publicado por nik) es equivalente a +/PATTERN.

Matthew Flaschen
fuente
2
Prefiero esta respuesta, porque es más completa. La opción +/patternes equivalente a --pattern=pattern, pero puede hacer más, como comenzar menos al final de un archivo, hacer less +G. La +opción le da todo lo que -p|--patternhace más el conjunto completo de otros comandos para ejecutar en menos, así que le digo que no se moleste en recordar -py solo use +/para buscar como lo haría desde adentro.
DrStrangepork
4

¿Te refieres a?

less -p PATTERN filename

Eso está en el manual.

nik
fuente
4

En realidad, hay dos formas de hacer esto. Como todos los demás mencionaron, puede usar las opciones -p/ --pattern:

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

Su patrón tendrá que estar entre comillas ya que contiene un espacio.

Sin embargo, en realidad hay una segunda forma de hacer esto:

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

El segundo método tiene una clara ventaja. ¡Se puede usar con otros comandos que usan menos para paginación !:

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

Literalmente, esto se puede extender para buscar en la página de manual de bash todos los comandos incorporados. Un día me dejé llevar un poco y "arreglé" a un hombre por basilderías .

Adam Stewart
fuente
3

De hecho, hay algo en la página de manual menos.

Tu podrías intentar :

less -p<pattern>

o

less --pattern=<patern>
slubman
fuente
0

Otra opción es que cuando ejecuta el lesstipo &y luego el patternde su interés.

De esta manera, puede obtener solo las líneas que le patterninteresan, no todas las líneas. El significado muestra solo las líneas coincidentes .

&/ <pattern_of_interest>
Dan Art
fuente