이것매뉴얼 페이지를 열고 단일 명령 내에서 문자열을 검색하십시오.질문의 절반은 내가 하고 싶은 일을 다루고 있습니다.
man chmod를 수행한 다음 /a+x를 수행하여 a+x가 언급된 chmod 매뉴얼 페이지의 첫 번째 부분으로 이동하는 대신 특정 검색 문자열에 대한 매뉴얼 페이지를 여는 방법이 있는지 궁금합니다. vi(m)에서 이를 수행하고 vi +string filename.txt를 실행하는 방법.
선택한 답변은
man foobar | less +/searched_string
그러나 내가 시도할 때
man tmux | less +/^format
출시 횟수는 줄어들었지만 다시 돌아옵니다.
패턴을 찾을 수 없습니다(RETURN 누르기).
왜 패턴을 찾을 수 없나요?
운영 체제 - 우분투 15.10
% less --version
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman
답변1
환경 변수를 사용하여 LESS
실행 중인 개별 명령을 재정의합니다.
또한보십시오:
LESS='+/LESS[[:space:]]*Options' man less
LESS='+/\+cmd' man less
LESS='+/optional variable assignments' man bash
LESS=+/SIMPLE\ COMMAND\ EXPANSION man bash
나는 또한 얼마 전 메타 게시물에서 이에 대해 더 광범위하게 논의했습니다.
검색 패턴을 생성할 때 기억해야 할 한 가지: 긴 단락의 중간에서 여러 개의 연속 단어를 선택하면 크기가 다른 터미널에서 해당 매뉴얼 페이지를 볼 때 같은 줄에 있지 않을 수 있습니다. 예를 들어, 다음은 전체 화면 터미널에서 작동합니다(내 거모니터), 그러나 단어가 여러 줄에 걸쳐 분할되기 때문에 80열 터미널에서는 그렇지 않습니다.
LESS=+/allowing' a shell script' man bash
다음은 단어 간격이 처리되는 방식 으로 인해 man
터미널에서 신뢰할 수 없습니다 .
LESS=+/"The latest version" man bash
다음 두 명령은 동일한 위치에 도달하지만 이식성이 더 좋습니다.
LESS=+/^INVOCATION man bash
LESS=+/^BUG man bash
답변2
문제는 less를 시작하고 검색어를 옵션으로 전달할 때 검색이 대소문자를 구분한다는 것입니다.
따라서 해결책은 동일한 대소문자를 사용하는 검색 패턴을 사용하는 것입니다. 예를 들어 이런 직업은
man tmux | less +/^FORMAT
더 좋음 - 쉘 확장 방지
man tmux | less '+/^FORMAT'
또는 대안적으로
man tmux | less -p '^FORMAT'
배경
less/man을 사용하여 검색할 때마다 검색은 대소문자를 구분하지 않으므로 호출할 때 검색 매개변수를 전달할 때도 동일할 것으로 예상합니다.
Ubuntu에서 사용하는 man 버전에는 -i
대소문자를 구분하지 않는 검색 옵션이 덜 켜져 있기 때문인 것 같습니다.
따라서 이 옵션 없이 less를 호출하면 less라는 기본 동작이 적용되고 less를 검색하면 갑자기 대소문자가 구분됩니다.