Você pode combinar os recursos de pesquisa de história e histórico existentes do Bash. Pressione Ctrl-R para iniciar a busca inversa incremental, depois comece a digitar a parte do caminho com maior probabilidade de ser única.
Você pode continuar digitando letras até voltar ao comando cd
mais recente envolvendo esse diretório, ou pressionar Ctrl-R novamente para voltar ao histórico para o próximo comando mais recente combinando com o que você digitou até agora.
Eu faço isso o tempo todo.
Na verdade, eu dou um passo adiante. Uma vez que eu comece a descobrir sequências de comandos que valem a pena manter na história, mas não vale a pena se comprometer com um shell script, eu começo a encadear com &&
e ;
combinators para que eu possa inverter a busca por uma substring daquele comando longo Digite e execute toda a seqüência de uma só vez.
Por exemplo, aqui está como eu construo e executo um dos meus programas durante o desenvolvimento:
$ ( cd .. ; make install ) && ./start_my_program
Eu faço isso no diretório de instalação, que está abaixo do diretório de origem de nível superior. Envolvendo o cd
, compilar e instalar parte em um sub-shell, eu garanto que não importa o que aconteça durante esse processo, eu acabo voltando ao meu shell normal sem nada mudar. Somente se isso for bem sucedido (& &) eu inicio o programa construído e instalado. Eu posso encontrar isto na minha história com apenas um Ctrl-R então s t a , sendo isto tudo que eu geralmente precisa encontrar exclusivamente esta seqüência de comando.
Outro exemplo de como eu uso isso é a sequência que entra na construção de RPMs para esse mesmo programa. A maior parte do trabalho tedioso está nos scripts de shell, mas ainda existem alguns comandos que eu normalmente teria que digitar para fazer todo o trabalho de construir e implantar os RPMs construídos, que agora raramente tenho que redigitar, porque Bash mantém na história para mim.
Combine tudo isso com export HISTSIZE=bignum
e shopt histappend
e você acabou de criar uma memória de comando elephantine.
Outra solução que codifiquei está em minha resposta para outra pergunta aqui . Ele pode ter que ser adaptado para seus propósitos, e ele só lida com os comandos cd
, enquanto a opção de pesquisa de histórico funciona em todos os lugares e para todos os comandos.