$로 시작하는 검색 패턴을 명령줄에서 less로 전달하는 방법

$로 시작하는 검색 패턴을 명령줄에서 less로 전달하는 방법

$방금 less로 시작하는 검색 패턴을 전달해 보았습니다.

less +/'\$l' myfile.pl

알겠어요

There is no -l option ("less --help" for help)

설명서를 읽은 후 대체 -p옵션을 시도했습니다.

less -p'\$l' myfile.pl

같은 오류가 발생했습니다.

그런 다음 발견했습니다. (뒤의 공백에 유의하십시오 -p.)

less -p '\$l' myfile.pl

작동합니다. 즉, 오류 메시지 없이 파일을 열고 첫 번째 항목으로 이동합니다 $l.

긴 옵션 변형이 --pattern=$l작동하지 않습니다

less --pattern='\$l' myfile.pl
There is no -l option ("less --help" for help)

=그리고 일 보다는 공간

less --pattern '\$l' myfile.pl

이것은

less -V
less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

openSUSE Leap 42.3에서

이제 질문은 이것이 버그입니까?

답변1

에서 man less:

   --use-backslash
          This option changes the interpretations of options which  follow
          this one.  After the --use-backslash option, any backslash in an
          option string is removed and the following  character  is  taken
          literally.   This  allows a dollar sign to be included in option
          strings.

그런 다음 백슬래시와 달러를 피해야 합니다.

less --use-backslash +'/\\\$l' myfile.pl

답변2

이 작업은특징. 에서 man less:

일부 옵션(예: -k 또는 -D)에는 옵션 문자 뒤에 문자열이 필요합니다. 옵션의 문자열은 달러 기호($)가 발견되면 종료된 것으로 간주됩니다. 예를 들어 MS-DOS에서는 다음과 같이 두 개의 -D 옵션을 설정할 수 있습니다.

LESS="Dn9.1$Ds4.1"

그래서 당신은 이것을 할 수 있습니다 :

LESS='ppattern$i' PAGER=less man less

첫째, 검색에서는 대소문자를 구분하지 않습니다 less.pattern

--use-backslash\탈출 하는데 사용될 수 있다$.

이제 변수에 대해서는 의미가 있지만 $LESS명령줄의 옵션에 대한 인수에는 거의 의미가 없습니다. 이 경우 신고할 수 있는 버그로 간주될 수 있습니다.

또한 처리는 $vs 와 vs 의 차이점을 설명하는 옵션이 포함된 매개 $변수와 동일한 매개변수에서 발생하는 경우에만 발생하므로 혼란이 발생하고 오류로 간주될 수 있는 더 많은 이유가 있습니다.-p '\$l'-p'\$l'--pattern '\$l'--pattern='\$l'

다음과 같은 문제도 발생할 수 있습니다.

less -p' foo'

대안을 less찾을 위치 (다시 대안 사용) 자세한 내용은 소스 코드의 함수를 확인하세요 ."foo"" foo"-p ' foo'scan_option()options.c

관련 정보