"중괄호 확장"(대소문자 무시) 문자열이 포함된 Bash 매뉴얼 페이지의 모든 행을 표시하는 명령은 무엇입니까?
man -wK . | grep "[Bb]race [Ee]xpansion"
일련의 "연결을 끊을 수 없습니다" 오류가 발생하려고 했습니다 .
man -s1 -Kw --regex 'brace expansion'
그런 다음 쿼리를 읽은 후 명령을 사용하여 검색을 시도했습니다.하이픈이 포함된 패턴을 매뉴얼 페이지에서 검색하는 방법은 무엇입니까?
나는 돌아왔다:
/usr/share/man/man1/bash.1.gz
인쇄 파일을 사용해 보았 cat
더니 이상한 기호가 모두 표시되었습니다.
답변1
이 명령을 실행하면 man bash
일반적으로 시스템의 기본 호출기에서 문서가 열립니다. less
특정 패턴과 일치하는 줄로 이동하려면 를 입력하면 됩니다 /<pattern>
. 예를 들어 매뉴얼 페이지에 들어간 직후 다음을 입력합니다.
/brace expansion
그러면 나타나는 첫 번째 위치로 자동으로 이동해야 합니다. 거기에서 버튼을 눌러 n
이후 이벤트로 이동할 수 있습니다.
파일 확장자는 또한 .gz
파일이 gzip을 사용하여 압축되었음을 의미합니다. 파일을 직접 읽을 수는 없습니다.
답변2
검색 결과(시스템의 매뉴얼 페이지 소스 파일)는 각 페이지를 읽기 위해 로컬 모드에서 man에게 다시 전달될 수 있습니다.
man -wK --regex 'Brace Expansion' | sort -u | xargs man -l -P cat | grep -inF 'Brace Expansion'
기본적으로 man 명령 검색에 사용되는 정규식은 대소문자를 구분하지 않습니다. 검색 결과 목록이 정렬되고 모든 중복 항목이 제거됩니다. 그런 다음 man 에게 다시 전달된 값을 사용합니다 xargs
. cat
호출기를 사용하면 처리된 각 매뉴얼 페이지를 표준 출력으로 인쇄할 수 있습니다. 이 시점에서 데이터는 grep이 작동할 수 있는 일반 텍스트 스트림입니다.
옵션은 시스템의 MANPATH 를 구문 분석하는 대신 파일을 직접 구문 분석하여 로컬 모드를 활성화하는 데 사용됩니다 -l
.man
호출기를 로 설정하는 -P cat
옵션 입니다 . 이는 처리된 매뉴얼 페이지가 를 사용하여 표시된다는 의미입니다 .man
cat
cat
대소문자를 구분하지 않는 검색 옵션입니다 -i
. grep
이 -n
옵션은 줄 번호를 인쇄합니다(편의를 위해 추가되었습니다). 이 -F
옵션은 패턴이 고정 문자열임을 지정합니다.
답변3
원래 질문에 따라 다음 명령은 "중괄호 확장"이 포함된 bash 매뉴얼 페이지의 모든 줄을 표시합니다.
for page in $( man -k bash | awk '{print $1}' ); do
zgrep -i -n 'brace expansion' $(man -w $page) /dev/null
done
먼저 설명에서 "bash"에 해당하는 매뉴얼 페이지 목록을 얻은 다음 검색된 목록을 반복하고 일치하는 "중괄호 확장" 문자열을 검색합니다. zgrep(1)은 자동으로 파일의 압축을 풀어줍니다 ;)