Existe uma maneira melhor de procurar um comando no meu arquivo de histórico do que o grep? Eu tenho alguma idéia de como o comando começa, mas não sei até que ponto a história está lá.
update: anteriormente era específico do zsh, mas devido a respostas sobrepostas, sinta-se à vontade para responder a qualquer shell (ou modo (vi / emacs)) aqui, observe se é específico.
shell
command-history
xenoterracida
fonte
fonte
<kbd>Ctrl+R</kbd>
. fonte da respostaAo usar o Bash, digite Control- Re comece a digitar. Digitação Control- Rrepetidamente após a inserção de algum texto, você retornará às linhas de comando correspondentes.
fonte
Não tenho certeza se isso vai ajudar, mas eu gosto de usar ctrl- re comece a digitar o comando. Ele deve passar por sua história e apresentar a primeira partida. Para alternar entre as partidas, basta pressionar ctrl- rnovamente.
fonte
Se você adicionar o seguinte a
~/.inputrc
e reinicie 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 digitado.
(Alguns podem preferir usar
\e[A
e\e[B
, que substituirá o normal Upe as Downações, em vez de vincular novas chaves.)fonte
Alt + Up
eAlt + Down
. Dependendo da emulação do teclado, o emulador de terminal usa essas combinações que podem ser mapeadas para\E[A
e\E[A
(por exemplo, KDE Konsole com Linux Key Bindings) ou\E[1;3A
e\E[1;3B
(por exemplo, XFCE Terminal ou KDE Konsole com X Free 4 Bindings).O prompt interativo invocado por Ctrl- R, que já havia sido mencionado, é a maneira mais conveniente. Além disso, é popular remapear Upe Downas teclas de seta para pesquisar no histórico um prefixo atualmente na linha de comando, no entanto, isso requer algumas alterações no
~/.inputrc
arquivo .A solução clássica e menos interativa é usar a expansão do histórico do shell. Digitando
irá executar o último comando que começa com
foo
eirá executar o último comando que contém
foo
. Mais informações sobre a expansão do histórico podem ser encontradas no manual de referência do Bash , supondo que seu shell seja Bash ou compatível.fonte
Se você adicionar
stty -ixon
ao seu~/.bashrc
arquivo, então Ctrl- sirá na direção oposta a Ctrl- r.fonte
C-s
para esse fim, mas meu terminal ficou congelado ; cuidado! (Bem, eu ainda não empregou qualquerstty ixon
, não sei o que isso é para.)C-q
irá "descongelar". Ele eC-s
são os caracteres de controlo de fluxo de software habituais que já foram úteis para interromper manualmente (pausa) o fluxo de saída, quando foram usadas as ligações em série lentas. Agora, a saída é tão rápida na maioria dos casos que o que você deseja ver quando pressionaC-s
já rolou.stty -ixon
desativa o controle de fluxo do software.Se você digitar
!ls
, o bash examinará seu histórico e executará o comando mais recente que começa com "ls"fonte
pode ser específico do zsh. Ao pesquisar essa resposta , descobri
vi-history-search-backward
qual permite pesquisar /no modo vi (no qual não mencionei que estava), você pode usar ne Npesquisar para frente e para trás, respectivamente (depois de pressionar enter).fonte
Estou surpreso que isso não tenha sido mencionado - mas você pode selecionar o modo vi no bash ou no ksh fazendo o seguinte:
... ou usando isso como o conteúdo de
~/.inputrc
(para GNU readline usado em programas como o bash):Depois disso, você pode usar Escpara entrar no modo de comando e kvoltar no histórico e javançar. Você também pode pesquisar usando /para pesquisar normalmente e ?pesquisar ao contrário.
Se você usar
~/.inputrc
, isso funcionará não apenas no GNU bash, mas em qualquer coisa que use a linha de leitura do GNU, como CLISP e possivelmente programas como o shell de comando do MySQL e o shell do CPAN.fonte
Para avançar ao usar a pesquisa reversa (com o comando Ctrl-R):
Abra o seu arquivo .bashrc:
sudo gedit ~/.bashrc
adicione esta linha (a letra "f" pode ser substituída por outra ainda não usada pelo sistema)
source ~/.bashrc
ou. ~/.bashrc
Agora você pode avançar na história com o atalho: Ctrl + f
Trabalhando no Ubuntu 18.04 LTS
fonte
Eu uso as duas seguintes na maioria das vezes.
Mas observe que os dois pesquisam caracteres iniciais.
fc -e - <SPACE>
<first few char for your previous >
isso para executar o último comando correspondente a essa sequência.Não consegui encontrar algo como Ctrl+ Rno Bash para o meu ksh e tcsh.
fonte
set -o emacs
propósito, isso está no modo.Existe uma maneira de usar Ctrl- Rcom o tcsh . Adicione o seguinte no seu
~/.cshrc
:bindkey "^r" i-search-back
(é apenas um sinal de sinal de intercalação e a letra r)Essa é a maior economia de tempo para mim.
fonte
resposta semelhante a @ephemient, mas você pode colocar no seu .bashrc
digite parte da frase e use a seta para cima / para baixo para procurar as opções mais recentes correspondentes. Este é o comportamento padrão do matlab.
Para a maioria das pessoas, se você deseja portar suas configurações para um novo sistema, é mais fácil lembrar-se de capturar apenas o
~/.bashrc
que você precisa~/.inputrc
fonte
Sim, existe, pelo menos se você estiver usando o zsh. Apenas comece a digitar o comando e pressione M-p( ESC p) e ele encontrará comandos anteriores que correspondem ao que você digitou. Pressione novamente para encontrar a próxima partida.
fonte