인용하다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
,
scaletempo
mplayer
[
scale
mplayer
=
나는 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는 ’
유니코드 왼쪽 작은따옴표를 사용합니다.-f
ls
답변1
[
정규식에서 대괄호의 의미를 잘못 이해하신 것 같습니다 . ]
패턴에 주의하세요.
^[ ]+[-]*Wall[ |$]
[ ]
(단일 공백)과 정확히 동일하고 와
[-]
정확히 동일합니다 -
. 그리고 패턴의 마지막 부분에서는 "either or " [foo|bar]
를 의미하지 않습니다 .foo
bar
당신이 찾고 있는 것은 ( |$)
이것 또는 다른 것을 일치시키기 위한 구문입니다. (달러 기호로 인해 큰따옴표 대신 작은따옴표나 백슬래시를 사용하여 패턴의 해당 부분을 인용해야 합니다.)
[thing]
문자 클래스를 나타냅니다. t
, h
, 또는 i
와 일치합니다 .n
g
답변2
[ ]
그리고 어떻게 결합하나요$
?
([ ]|$)
또는( |$)