$
방금 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