Eu apenas tentei passar um padrão de pesquisa começando com $
menos:
less +/'\$l' myfile.pl
e eu tenho
There is no -l option ("less --help" for help)
Depois de ler o manual, tentei a opção -p
alternativa
less -p'\$l' myfile.pl
e deu o mesmo erro.
Então eu descobri que (nb o espaço depois -p
)
less -p '\$l' myfile.pl
funciona, ou seja, abre o arquivo sem mensagem de erro e pula para a primeira ocorrência de $l
.
A variante de opção longa --pattern=$l
não funciona
less --pattern='\$l' myfile.pl
There is no -l option ("less --help" for help)
Considerando que o espaço em vez de =
obras
less --pattern '\$l' myfile.pl
Isto é
less -V
less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman
no openSUSE Leap 42.3
Agora a pergunta: isso é um bug?
De
man less
:Em seguida, precisamos escapar da barra invertida e do dólar, então
Isso é causado por um recurso . De
man less
:Então você poderia fazer:
Para começar
less
, procurandopattern
sem distinção entre maiúsculas e minúsculas.--use-backslash
pode ser usado para permitir\
escapar disso$
.Agora, embora faça sentido para a
$LESS
variável, faz pouco sentido para argumentos para opções na linha de comando. Nisso, pode ser visto como um bug que você pode querer relatar.Observe também que esse
$
processamento só ocorre quando isso$
ocorre no mesmo argumento que contém a opção que explica a discrepância entre seu-p '\$l'
vs-p'\$l'
e--pattern '\$l'
vs ,--pattern='\$l'
causando confusão e mais justificativas de que pode ser visto como um bug.Observe que você também terá problemas para:
Where
less
procura em"foo"
vez de" foo"
(novamente, use-p ' foo'
em vez). Consulte ascan_option()
função naoptions.c
fonte para obter detalhes.