Como você executa `less` e executa um padrão de pesquisa automaticamente?

14

Estou tentando rodar lessno Linux e quero que procure algo imediatamente após o lançamento.

É basicamente como fazer isso:

$ less

Em seguida '/', pressione , digite um padrão de pesquisa como "^commit \w+$", pressione Enter e pressione 'n'para encontrar cada resultado subsequente.

Eu gostaria que menos fosse lançado e, em seguida, procure um padrão. Não parece haver nada na página de manual sobre como começar com um padrão, mas talvez você possa enviar comandos como o Vim.

Neil
fonte
1
Impressionante, coloque isso na sua configuração do git: core.pager = less -cFRX --pattern='^commit'e você poderá ir para o próximo commit com a tecla 'n' imediatamente.
Neil

Respostas:

8

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

Isso funciona como esperado, usando a versão mais recente do less( 436 ).

goldPseudo
fonte
17

Você pode usar + para enviar comandos arbitrários. Por exemplo:

less +/pattern

-p PATTERN(conforme publicado por nik) é equivalente a +/PATTERN.

Matthew Flaschen
fonte
2
Eu prefiro esta resposta, porque é mais completa. A opção +/patterné equivalente a --pattern=pattern, mas pode fazer mais, como iniciar menos no final de um arquivo less +G. A +opção fornece tudo o -p|--patternque você faz, além de todo o conjunto de outros comandos para rodar em menos, por isso digo que não se incomode em lembrar -pe use apenas +/para pesquisar da mesma forma que faria de dentro de menos.
DrStrangepork
4

Você quer dizer como?

nome do arquivo -p PATTERN

Isso está no manual.

nik
fonte
4

Na verdade, existem duas maneiras de fazer isso. Como todo mundo mencionou, você pode usar as opções -p/ --pattern:

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

Seu padrão terá que ser colocado entre aspas, pois contém um espaço.

No entanto, existe realmente uma segunda maneira de fazer isso:

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

O segundo método tem uma vantagem distinta. Pode ser usado com outros comandos que usam menos para paginação !:

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

Isso pode literalmente ser estendido para pesquisar na página de manual do bash todos os comandos internos. Eu fiquei um pouco empolgado um dia e "consertei" o homem para bash builtins .

Adam Stewart
fonte
3

De fato, há algo na página menos manual.

Você poderia tentar :

less -p<pattern>

ou

less --pattern=<patern>
slubman
fonte
0

Outra opção é quando você executa o lesstipo then &e o patternde seu interesse.

Dessa forma, você pode obter apenas as linhas de seu patterninteresse, e não todas. O significado mostra apenas as linhas correspondentes .

&/ <pattern_of_interest>
Dan Art
fonte