나는 "역사 확장" 섹션(이벤트/단어/수정자)의 사용법을 기억하기 위해 종종 man bash를 참조합니다. 나는 내가 필요한 부분이 "역사 확장"이라는 것을 알았습니다. 그래서 정방향 검색 목록에 HISTORY EXPANSION
"/"를 입력합니다. 물론 less는 "HISTORY EXPANSION" 섹션으로 직접 이동하지 않고 해당 남자에서 해당 문자열이 나타나는 모든 항목을 표시합니다. 그래서 나는 다음과 같이 입력하는 것이 좋을 것이라고 생각했습니다.
/^HISTORY EXPANSION
이렇게 하면 "줄 시작" 기록 확장으로 이동할 수 있습니다.
일하지도 일 /^HISTORY EXPANSION
하지도 않는다/\^HISTORY EXPANSION
더 적은 수의 경우에도 마찬가지입니다.
/pattern
패턴이 포함된 N번째 줄을 파일에서 앞으로 검색합니다. N의 기본값은 1입니다. 패턴은 시스템 제공 정규식 라이브러리에서 인식되는 정규식입니다.
다른 사람들도 이 문제를 해결하고 있지만 목표는 다릅니다. https://stackoverflow.com/questions/14698364/what-is-the-regular-expression-library-supplied-by-my-system
이 단계를 따랐지만 여전히 내 컴퓨터에서 어떤 정규식 버전이 사용되고 있는지 확인할 수 없습니다. 이는 더 적은 바이너리에 대한 공유 라이브러리 종속성 출력입니다.
$ ldd /usr/bin/less
linux-vdso.so.1 => (0x00007ffc229cb000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f44968e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4496524000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4496b12000)
그렇다면 필요한 사람 부분으로 쉽게 이동할 수 있도록 검색 횟수를 줄여 줄의 시작 부분을 어떻게 표시합니까?
답변1
시행착오 끝에 인간은 공백으로 선을 들여쓰는 것처럼 보입니다. 이것이 내가 찾을 수 있었지만/^HISTORY EXPANSION
실패한 것입니다/^The history library
(이것은 확장된 역사 섹션의 첫 번째 문장입니다). 이것은 올바른 패턴입니다.
/^[[:space:]]{7}The history library...
우리가 볼 수 있듯이 man/less는 섹션 헤더가 아닌 모든 줄 앞에 7개의 "공백"(ascii 12월 코드 32)을 추가합니다(다른 사람들이 말한 대로 굵은 글씨로 표시됨). ). 이것이 모든 Linux 배포판/man 바이너리에서 작동하는지 확실하게 말할 수는 없지만 지금까지 테스트한 모든 것에서는 작동합니다. 요약하자면, (첫 번째 검색에서) man find 사용법에서 '-atime' 옵션에 대한 설명을 찾으려면
/^[[:space:]]{7}-atime
답변2
사람의 출력이 더 많이 진행되면 각각의 굵은 문자는 실제로 해당 문자이고 백스페이스가 뒤따른 다음 해당 문자가 반복되고 다음 문자로 이어집니다. 굵게 표시된 콘텐츠를 찾으려면 /^H..I..S..T를 검색하세요.
Stéphane이 지적한 기사에서도 찾을 수 있습니다.