Eu me vejo fazendo <command> --help | grep <feature>
muito, muitas vezes todos os dias. Fiquei me perguntando se era possível fazer algo assim se ^^
expande "--help | grep"
e então faço isso:
ls ^^ size
Isso executaria o seguinte:
ls --help | grep size
bash
bash-expansion
yukashima huksay
fonte
fonte
qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;}
# daí você pode: qh ls size, qh ls "something | another" etc. o (opcional)type -all "$1"
também adiciona as informações sobre $ 1: diz se você estará lançando um alias, uma função, um de comando, etc. e dá fora informação do homem "$ 1" se o comando $ 1 não tem o "help" opção (isso acontece às vezes)-a
, mas não diz nada sobre-l
ou-all
, mas a função funciona.Com
zsh
, você usaria um alias global :Com
bash
, você poderá usar a expansão do histórico, que ocorre com bastante antecedência na análise de sintaxe do shell, para que possa funcionar na substituição de um canal:Prepare a história com o texto que você deseja substituir e um caractere especial que você provavelmente não utilizará (como
£
aqui, no meu teclado):Em seguida, use a expansão do histórico para recuperar isso:
Ou você pode
readline
expandir--help|grep
com alguma tecla ou sequência de teclas pressionada. Para que isso se apliquebash
apenas (e não a outros aplicativos, como ogdb
uso de readline), você pode usar obind
comando bash builtin, que ébash
a API da configuraçãoreadline
, por exemplo~/.bashrc
:Ou adicione ao seu
~/.inputrc
(arquivo de configuração da 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 da chamada,readline
para que você não possa adicionar algumas$if
instruções para eles (eles seriam exibidosother
como todos os aplicativos que usam o 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.fonte
Você pode usar ligações de linha de leitura:
adicione uma linha como
ao 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
.fonte
Usando
less
para visualizar a mensagem de ajudaVocê pode achar útil ver o contexto circundante das linhas que correspondem à sua consulta de pesquisa.
A sintaxe para chamar essa
bash
função é semelhante à funçãoqh
na resposta de @ tgwtdt, com o primeiro argumento sendo o comando a ser examinado e o segundo argumento sendo o termo de pesquisa. Por exemplo:Isso abre a mensagem de ajuda completa
less
, destaca todas as instâncias do termo de pesquisa e rola para a primeira instância do termo de pesquisa. Você pode 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 voltar para uma instância anterior, pressioneN
. Use asHome
,End
,Page Up
,Page Down
,Up Arrow
, eDown Arrow
teclas para navegação geral. Pressioneq
ouQ
para sairless
e retornar à linha de comando.fonte
Gostei da solução do @tgwtdt, então a aprimorei 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).
fonte