
Existe uma maneira melhor de pesquisar um comando em meu arquivo de histórico do que grep? Tenho alguma ideia de como o comando começa, mas não sei até que ponto ele está na história.
atualizar:anteriormente era específico do zsh, mas devido à sobreposição de respostas, sinta-se à vontade para responder por qualquer shell (ou modo (vi/emacs)) aqui, apenas observe se é específico.
Responder1
Ctrl+ Rgeralmente é a melhor maneira, poisdescritor disse. Você também pode usar !string
, que executa o comando mais recente começando com string
, ou !?string?
, que executa o comando mais recente que contém string
.
(Acho que essa é a única coisa relevante para esta questão, mas abordei muito mais comandos de histórico emesta resposta)
Responder2
Ao usar o Bash, digite Control- Re comece a digitar. Digitar Control- Rrepetidamente após inserir algum texto o levará de volta às linhas de comando correspondentes.
Responder3
Se você adicionar o seguinte a~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
e reiniciar o Bash, você pode começar a digitar e, em seguida, usar Page Upe Page Downpara retroceder e avançar no histórico de linhas começando com o mesmo prefixo que acabou de digitar.
(Alguns podem preferir usar \e[A
and \e[B
, que substituirá as ações Upand normais Downem vez de vincular novas chaves.)
Responder4
O prompt interativo invocado por Ctrl- R, já mencionado, é a forma mais conveniente. Além disso, é comum remapear Upe Downusar teclas de seta para pesquisar no histórico um prefixo atualmente na linha de comando, no entanto, isso requer algunsalterações no ~/.inputrc
arquivo.
A solução clássica e menos interativa é usar a expansão do histórico do shell. Digitando
!foo
irá executar o último comando que começa com foo
e
!?foo
executará o último comando que contém foo
. Mais informações sobre a expansão do histórico podem ser encontradas noManual de referência do Bash, assumindo que seu shell seja Bash ou compatível.