Eu me pego fazendo <command> --help | grep <feature>
muito, muito frequentemente todos os dias. Eu queria saber se era possível fazer algo assim ^^
se expande para "--help | grep"
e então eu faço isso:
ls ^^ size
Isso executaria o seguinte:
ls --help | grep size
Você pode usar uma função bash para isso:
Coloque o seguinte em seu ~/.bashrc:
Quando você salva seu
bashrc
dosource ~/.bashrc
, então você pode fazer:Com
zsh
, você usaria um alias global :Com
bash
, você pode usar a expansão do histórico, que ocorre cedo o suficiente na análise da sintaxe do shell para funcionar na substituição de um canal:Prepare o histórico com o texto que você deseja substituir e um caractere especial que provavelmente não usará de outra forma (como
£
aqui que está no meu teclado):Em seguida, usando a expansão do histórico para recuperar isso:
Ou você poderia
readline
expandir--help|grep
o pressionamento de alguma tecla ou sequência de teclas. Para que isso se apliquebash
apenas (e não a outros aplicativos comogdb
o uso de readline), você pode usar obind
comando bash builtin, que ébash
a API para configurarreadline
, por exemplo, em seu~/.bashrc
:Ou adicione ao seu
~/.inputrc
(arquivo de configuração do readline):(existem outros shells como
rc
oues
que usam readline e onde fazer essa ligação pode fazer sentido, mas AFAICT, eles não definem arl_readline_name
variável antes de invocarreadline
, então você não poderá adicionar algumas$if
instruções para eles (eles apareceriamother
como todos os aplicativos que usam readline sem informar o nome do aplicativo)).Observe que você precisa inserir o segundo
^
dentro de meio segundo (por padrão) após o primeiro para que a substituição ocorra.Você pode usar ligações readline:
adicione uma linha como
para o seu ~/.inputrc
Em seguida, pressione ^X ^R no seu termo e a ligação será ativada.
A digitação
ls ^^
agora resultará emls --help | grep
.Usando
less
para visualizar a mensagem de ajudaVocê pode achar útil ver o contexto ao redor das linhas que correspondem à sua consulta de pesquisa.
A sintaxe para chamar esta
bash
função é semelhante à funçãoqh
na resposta de @tgwtdt, com o primeiro argumento sendo o comando para examinar e o segundo argumento sendo o termo de pesquisa. Por exemplo:Isso abre a mensagem de ajuda completa em
less
, destaca todas as instâncias do termo de pesquisa e rola para a primeira instância do termo de pesquisa. Você pode então pressionarn
para rolar para a próxima linha que contém o termo de pesquisa,n
novamente para a próxima e assim por diante. Para rolar de volta para uma instância anterior, pressioneN
. Use as teclasHome
,End
,Page Up
,Page Down
,Up Arrow
eDown Arrow
para navegação geral. Pressioneq
ouQ
para sairless
e retornar à linha de comando.Gostei da solução do @tgwtdt, então melhorei um pouco.
Isso faz a mesma coisa, mas faz um pouco para lidar com erros e também tenta processar embutidos.
qh usa () em vez de {}, então qh1() e out são locais (em um subshell).