![menos padrão - termina com [] ou $](https://rvso.com/image/97017/menos%20padr%C3%A3o%20-%20termina%20com%20%5B%5D%20ou%20%24.png)
Referir-seposso obter páginas de manual individuais para os comandos internos do bash:
bashman () { man bash | less -p "^ $1 "; }
Esta função irá pular diretamente para a seção de parâmetros manuais do bash desejada.
Quero fazer com que ele aceite qualquer nome manual e parâmetro manual imediatamente, então mudo esta função para:
function superman () {
man "$1" | less -p "^[ ]+[-]*$2[ ]"
}
Funciona perfeitamente com:
$ superman tipo bash
E vá para a seção da página de manual desejada:
Mas não funciona na seção que termina com nova linha. Eu preciso mudar para:
function superman () {
man "$1" | less -p "^[ ]+[-]*$2$"
}
Então run $ superman gcc Wall
poderá pular para Wall
o parâmetro:
Como combinar [ ]
e $
ser [ ] OR $
? ou sejatermina com "pelo menos um espaço" OU "nova linha".
Eu tentei $ man gcc | less -p "^[ ]+[-]*Wall[ |$]"
, mas não funciona.
Observe que aceito esse salto indesejado, que termina com, [ ]
mas não é realmente o início da seção, porque acredito que é insolúvel se regex for [ ]
OR $
:
[Obrigado pelas respostas]
Quero compartilhar meu formulário final aqui:
function superman () {
if [[ "$1" == "-I" || "$1" == "-i" ]]; then
man "$2" | less -I -p "^[ ]+-*$3( |=|,|$|\[)"
else
man "$1" | less -p "^[ ]+-*$2( |=|,|$|\[)"
fi
}
Isso funcionará se eu executar, superman -i gcc wl
o que significa que não faz distinção entre maiúsculas e minúsculas para pular para -Wl,option
a seção. -Wl,option
de gcc
exigir ,
. scaletempo
de mplayer
exigir [
e scale
de mplayer
exigir=
Escrevi para info
a versão também:
function superinfo () {
if [[ "$1" == "-I" || "$1" == "-i" ]]; then
info "$2" | less -I -p "^ *‘*'*-*\** *$3’*( |=|,|$|\[|:|')"
else
info "$1" | less -p "^ *‘*'*-*\** *$2’*( |=|,|$|\[|:|')"
fi
}
Testado com superinfo gcc _HPPA
, superinfo -i gcc werror
, superinfo -i gcc wl
, superinfo -i mplayer scaletempo
, superinfo -i mplayer stats
, superinfo -i ls -f
e superinfo -i bash -a
(com sinal de menos faz grande diferença aqui). MARCA DE CITAÇÃO ÚNICA ESQUERDA do Unicode ’
usada por -f
of ls
.
Responder1
Acredito que você esteja enganado sobre o significado dos [
colchetes ]
em uma expressão regular. Observe seu padrão:
^[ ]+[-]*Wall[ |$]
[ ]
é exatamente igual a (um único espaço) e
[-]
é exatamente igual a -
. E na parte final do padrão, [foo|bar]
não significa “um foo
ou outro bar
”.
O que você está procurando é ( |$)
. Essa é a sintaxe para combinar uma coisa OU outra coisa. (Você também precisará citar essa parte do padrão com aspas simples ou uma barra invertida em vez de aspas duplas, por causa do cifrão).
[thing]
denota uma classe de caracteres: corresponde a t
, h
, i
, n
ou g
.
Responder2
Como combinar
[ ]
e$
?
([ ]|$)
ou( |$)