Respostas:
Pressione Ctrl+ Re digite ssh
. Ctrl+ Riniciará a pesquisa do comando mais recente para o antigo (pesquisa reversa). Se você tiver mais de um comando que começa com ssh
, pressione Ctrl+ Rrepetidamente até encontrar a correspondência.
Depois de encontrar a correspondência, você pode pressionar Enterpara executar o comando ou o cursor esquerda / direita para selecionar apenas o texto do comando.
Não há opção reversa padrão para Ctrl+ Rinverter a direção da pesquisa, mas aqui você encontrará algumas sugestões.
Eu faço uma ligeira variação do que foi dito acima, funciona bem para mim (se você está se referindo ao seu histórico do bash
Na minha pasta pessoal, crio um arquivo chamado
.inputrc
Por dentro vai isso
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Nota: o item acima parece não funcionar mais na versão 14.04, portanto, é o mesmo -
"\e[A":history-search-backward
"\e[B":history-search-forward
Em seguida, digitar o comando anterior que desejar e usar os botões page up / page dn pesquisam o histórico, sempre começando com page up
Aqui está outro método usando comandos clássicos (com maior probabilidade de funcionar em distribuições). O histórico de comandos é armazenado no arquivo .bash_history
no diretório inicial, para que você possa fazer isso:
grep "ssh" ~/.bash_history
Não esqueça a -i
bandeira se precisar de uma pesquisa sem distinção entre maiúsculas e minúsculas.
history | grep ssh
mostrará apenas o ssh da sessão temporária, então eu iria para esta resposta.
Encontrei a seguinte função em algum lugar da Internet e a usei com grande efeito. Coloque isso no seu ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Agora re-carregar seu shell: exec bash
. Agora você tem um novo comando, que pode ser usado assim:
hgrep ssh
Ele mostrará uma lista de comandos correspondentes do seu histórico. Para executar um comando, digite !
seguido pelo número do comando. Aqui está um exemplo:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
Eu gosto mais dessa abordagem do que Ctrl+ Rporque ela permite pesquisas muito mais flexíveis e posso ver vários resultados ao mesmo tempo.
Se você usa shell no Emacs ( M-x shell
), pode usá- M-r
lo (é equivalente a Ctrl+ Rem um terminal ).
O histórico é bom, mas limitado - prefiro configurar meu ambiente bash para registrar todos os comandos que já executei, além do diretório em que foram executados. Em seguida, executei um comando para listar todos os comandos Eu corri no diretório atual, que eu posso canalizar para grep etc - é chamado de 'prato' veja:
https://github.com/wolfwoolford/dish
Se você quiser ir direto ao assunto, basta fonte isso no seu .bashrc ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Também existe um comando realmente útil que você obtém de graça chamado 'dishg' - ou dish global - que imprime todos os comandos já executados, independentemente do diretório. Obviamente, este só é útil quando usado com grep e tail, etc ...
Uso-o há anos e é literalmente a primeira coisa que instalo sempre que configuro uma nova caixa. Ele registra os comandos que você executa nos arquivos de texto em um diretório oculto (~ / .dish). Nunca tive problemas com espaço em disco ...
Queria escrever isso como um comentário em @ssmy, mas não conseguiu obter a formatação no comentário para cooperar.
Após pesquisar o histórico, history | grep ssh
você pode executar o comando que deseja, digitando seu número anexado com um ponto de exclamação, por exemplo !42
.
Exemplo:
$ história | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $! 42