Questão Como pesquiso meu histórico de linha de comando para comandos que usei antes?


Além de visualizar o histórico, existe uma maneira de filtrar meu histórico?

Digamos que eu queira procurar por um comando que começou com "ssh"?


149
2017-11-02 01:25


origem




Respostas:


pressione Ctrl+R e digite ssh. Ctrl+R iniciará a pesquisa do comando mais recente para o antigo (pesquisa inversa). Se você tiver mais de um comando que comece com ssh, Pressione Ctrl+R de novo e de novo até encontrar a partida.

Depois de encontrar o jogo, você pode pressionar Entrar para executar o comando ou o cursor esquerdo / direito apenas para selecionar o texto do comando.

Não há opção reversa padrão para Ctrl+R para inverter a direção da pesquisa, mas Aqui você encontrará algumas sugestões sobre isso.


231
2017-11-02 01:32





Se você quiser apenas pesquisar seu histórico, pode simplesmente usar history | grep ssh, substituindo o ssh por qualquer coisa que você queira pesquisar.


77
2017-11-02 01:36



Eu uso este método, porque eu linkar para ver na lista todos os comandos que correspondem ao meu filtro. - Pisu


Pressionando Ctrl+R iniciará o modo "reverse-i-search", digitar "ssh" procuraria em seu histórico por comandos que contenham "ssh".


13
2017-11-02 01:33





Eu faço uma ligeira variação do acima, funciona bem para mim (se você está se referindo ao seu histórico bash

Na minha pasta pessoal eu crio um arquivo chamado

.inputrc

Dentro vai esta

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Nota: o acima não parece funcionar mais em 14.04, então isso faz a mesma coisa -

"\e[A":history-search-backward
"\e[B":history-search-forward

Então, digitando muito de um comando anterior, eu desejo e usando os botões page up / page dn, busco o histórico, sempre começando com page up


13
2017-11-02 01:42



se você tem permissões de root, você pode editar / etc / inputrc soo, isso funcionará para todos os usuários. - Wolfy
@doug, hmm .. Eu tenho o Ubuntu 15.04. Esta solução funciona, mas atrapalha as teclas Ctrl + LeftArrow / Ctrl + RightArrow. Problema parece com a criação de arquivo .inputrc e não com entradas nele. - Ravi
Não esqueça de religar .inputrc ou fechar o terminal - David Brossard


Aqui está outro método usando comandos clássicos (mais propensos a trabalhar em distros). O histórico de comandos é armazenado no arquivo .bash_history no seu diretório home, para que você possa fazer isso:

grep "ssh" ~/.bash_history

Não esqueça o -i sinalizar se você precisar de uma pesquisa insensível a maiúsculas e minúsculas.


5
2017-11-02 09:49





Eu encontrei a seguinte função em algum lugar da Internet e usei-a com grande efeito. Coloque isso no seu ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Agora recarregue seu shell: exec bash. Agora você tem um novo comando, que você pode usar 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 dessa abordagem melhor do que Ctrl+R porque permite pesquisas muito mais flexíveis e posso ver vários resultados de uma só vez.


2
2017-11-09 03:14





Coloque isso no seu ~/.bashrc :

alias hgrep = 'história | grep --color = auto '

exemplo:


2
2017-10-15 10:59





Se você usar shell no Emacs (M-x shell) você pode usar M-r (é equivalente a Ctrl+R em um terminal).


1
2017-08-26 15:33