Isso é causado por um recurso . De man less
:
Some options like -k or -D require a string to follow the option letter. The string for that option is considered to end when a dollar sign ($) is found. For example, you can set two -D options on MS-DOS like this:
LESS="Dn9.1$Ds4.1"
Então você poderia fazer:
LESS='ppattern$i' PAGER=less man less
Para iniciar less
, procurando por pattern
sem diferenciação de maiúsculas e minúsculas.
--use-backslash
pode ser usado para permitir que \
escape desse $
.
Agora, embora faça sentido para a variável $LESS
, faz pouco sentido para argumentos para opções na linha de comando. Nisso, pode ser visto como um bug que você pode querer denunciar.
Observe também que o processamento de $
ocorre apenas quando o $
ocorre no mesmo argumento que contém a opção que explica a discrepância entre o -p '\$l'
vs -p'\$l'
e --pattern '\$l'
vs --pattern='\$l'
causando confusão e mais justificativa de que isso pode ser visto como um bug.
Note que você também terá problemas para:
less -p' foo'
Em que less
procura "foo"
em vez de " foo"
(use novamente -p ' foo'
). Veja a função scan_option()
em options.c
na fonte para detalhes.