less 모드 - [ ] 또는 $로 끝남

less 모드 - [ ] 또는 $로 끝남

인용하다Bash 내장 명령에 대한 별도의 매뉴얼 페이지를 얻을 수 있습니까?:

bashman () { man bash | less -p "^       $1 "; }

이 함수는 필요한 bash 수동 인수 섹션으로 직접 이동합니다.

수동 이름과 수동 매개변수를 동적으로 허용하기를 원하므로 이 함수를 다음과 같이 변경했습니다.

function superman () {
    man "$1" | less -p "^[ ]+[-]*$2[ ]"
}

다음과 같은 경우에 완벽하게 작동합니다.

$ 슈퍼맨 배쉬 유형

필요한 매뉴얼 페이지 섹션으로 이동합니다.

여기에 이미지 설명을 입력하세요.

하지만 개행 문자로 끝나는 부분에는 작동하지 않습니다. 다음과 같이 변경해야 합니다.

function superman () {
    man "$1" | less -p "^[ ]+[-]*$2$"
}

그런 다음 실행 하여 매개변수 $ superman gcc Wall로 이동합니다 .Wall

여기에 이미지 설명을 입력하세요.

어떻게 결합 [ ]하고 $될 수 있나요 [ ] OR $? 즉"적어도 하나의 공백" 또는 "줄바꿈"으로 끝납니다..

나는 그것을 시도했지만 $ man gcc | less -p "^[ ]+[-]*Wall[ |$]"작동하지 않습니다.

정규 표현식이 OR [ ]이면 [ ]해결할 수 없다고 믿기 때문에 끝까지 원치 않는 점프를 허용 하지만 실제로는 시작 부분은 허용하지 않습니다.$

여기에 이미지 설명을 입력하세요.

[답변 주셔서 감사합니다]

최종 양식을 여기에서 공유하고 싶습니다.

function superman () {
    if [[ "$1" == "-I" || "$1" == "-i" ]]; then
        man "$2" | less -I -p "^[ ]+-*$3( |=|,|$|\[)"
    else
        man "$1" | less -p "^[ ]+-*$2( |=|,|$|\[)"
    fi
}

superman -i gcc wl내가 실행하면 -Wl,option작동합니다 . 이는 대소 문자를 구분하지 않고 섹션으로 이동한다는 것을 의미합니다. 요청 -Wl,option에서 . 요구 에서 및 요구 에서gcc,scaletempomplayer[scalemplayer=

나는 info또한 버전을 썼다:

function superinfo () {
    if [[ "$1" == "-I" || "$1" == "-i" ]]; then
        info "$2" | less -I -p "^ *‘*'*-*\** *$3’*( |=|,|$|\[|:|')"
    else
        info "$1" | less -p "^ *‘*'*-*\** *$2’*( |=|,|$|\[|:|')"
    fi
}

superinfo gcc _HPPA, superinfo -i gcc werror, superinfo -i gcc wl, superinfo -i mplayer scaletempo, superinfo -i mplayer stats및 를 사용 superinfo -i ls -f하여 테스트합니다 superinfo -i bash -a(여기서 빼기 기호를 사용하면 큰 차이가 납니다). of는 유니코드 왼쪽 작은따옴표를 사용합니다.-fls

답변1

[정규식에서 대괄호의 의미를 잘못 이해하신 것 같습니다 . ]패턴에 주의하세요.

^[ ]+[-]*Wall[ |$]

[ ](단일 공백)과 정확히 동일하고 와 [-]정확히 동일합니다 -. 그리고 패턴의 마지막 부분에서는 "either or " [foo|bar]를 의미하지 않습니다 .foobar

당신이 찾고 있는 것은 ( |$)이것 또는 다른 것을 일치시키기 위한 구문입니다. (달러 기호로 인해 큰따옴표 대신 작은따옴표나 백슬래시를 사용하여 패턴의 해당 부분을 인용해야 합니다.)

[thing]문자 클래스를 나타냅니다. t, h, 또는 i와 일치합니다 .ng

답변2

[ ]그리고 어떻게 결합하나요 $?

([ ]|$)또는( |$)

관련 정보