Para alguns projetos, geralmente digito alguns comandos, como por exemplo:
cd an/extremely/long/path/in/which/I/have/some/kinda/project
e
./runmyproject --with some --command line --options set
Vendo que sou muito preguiçoso, tento evitar digitar esses comandos na íntegra repetidamente. Portanto, é claro que posso usar muito a tecla up-up para encontrar esses comandos, mas muitas vezes também tenho tantos comandos no meio, que a pesquisa leva mais tempo do que apenas digitando-a.
Agora me pergunto se existe algum tipo de utilitário que possa sugerir um comando completo que eu uso muito, quando ainda não o digitei. Para que eu possa, por exemplo, digitar 'cd an /' e que já sugira o resto do caminho, porque eu o usei muito no mês passado.
Eu encontrei algo chamado Bash Smart Complete. Mas isso é um pouco "burro", pois não olha para os comandos que usei antes. Eu também encontrei esta resposta SO , que sugere colocar os comandos que eu uso muito em um arquivo. Isso, no entanto, não é responsivo o suficiente, pois eu precisaria criar um novo arquivo para ele sempre que iniciar novos projetos ou alterar pastas ou argumentos de programas.
Alguém conhece outra utilidade ou outra maneira de conseguir isso? Ou alguém saberia como eu poderia alterar o Bash Smart Complete para que ele possa examinar os comandos que usei, digamos no mês passado, e concluir o comando que se encaixa e foi mais utilizado no mês passado?
[EDIT] Abaixo estão algumas respostas realmente ótimas. Eu não marquei nenhuma como uma resposta definitiva ainda. Não porque eu não goste das respostas, sim, mas porque nenhuma delas é uma vencedora absoluta. Eu acho que o Finalterm é um ótimo projeto. Infelizmente, ainda é um pouco áspero nas bordas. Por exemplo; ainda não suporta copiar e colar. Eu ficaria de olho nesse projeto, porque, quando amadurecer, acho que será um ótimo aplicativo de terminal. Quanto às outras respostas; eles sugeriram a criação de um alias, que não é o que eu quero fazer, porque cria trabalho extra em vez de tirar o trabalho, ou usar Ctrl + R, que é brilhante (eu não sabia disso!). Algumas pessoas sugeriram usar Ctrl + R, então não posso destacar uma resposta sobre a outra.
Então, por enquanto, definitivamente estou usando Ctrl + R e, no futuro, devo usar o Finalterm.
Obrigado por todas as ótimas respostas pessoal!
fonte
zsh
. Oferece tudo o que você está pedindo e muito mais. Movendo-se do bash para o zshRespostas:
Se os comandos são frequentemente usados, eles são gravados no histórico de comandos que o bash rastreia
.bash_history
.Agora o truque: você pode reverter a pesquisa neste histórico para executar novamente os comandos pressionando CTRL-r .
No modo de pesquisa inversa do histórico, o bash mostra, ao vivo, enquanto você digita , o comando mais recente do histórico que começa com a entrada especificada. Em seguida, pressione enter para aceitar e executar o comando proposto. Continue pressionando CTRL-R para alternar para comandos mais antigos com o mesmo prefixo.
Isso está embutido no bash, não há necessidade de personalizar scripts ou instalar software :) É um dos recursos mais úteis do bash, imho.
fonte
Cole (Ctrl-Shift-V) o seguinte em uma tela do terminal:
Saia (Ctrl-D) da tela do terminal e abra o Terminal novamente.
Agora você pode apenas digitar o primeiro par de caracteres e pressionar Cima ou Baixo para rolar pela lista filtrada
fonte
Termo Final
Existe um termo final muito promissor chamado App Terminal . Entre seus muitos recursos, ele também possui um histórico de comandos de lembrete, para que você possa selecioná-lo. Aqui estão mais alguns recursos:
Você pode ler mais sobre isso neste artigo .
Aqui está o site dos criadores. http://finalterm.org/
Para instalá-lo
Atenção
Eu disse que é promissor. O único problema é que está na versão 0.1. Então, algumas coisas gostam
vim
enano
ainda não funcionam bem. Também notei que ele ainda não suporta Drag-and-Drop e copia e cola. Mas tem o recurso que você solicita. À medida que o software amadurece, ele se tornará um dos melhores terminais para o desktop.Captura de tela
Aqui está a função em ação:
Espero que isto ajude.
* Estou no Saucy, e é por isso que tenho experiência com salamandras :)
fonte
Use um
alias
para todo o seu comando ou adicione o diretório ao seu$PATH
. Além disso, você não precisa alterar os diretórios para onde o executável (ou script, ou o que for) deve executá-lo, por isso é bastante simples. Ambos os métodos exigem que você reinicie o terminal que está usando antes que as alterações entrem em vigor.Veja como criar um
bash
alias
para o seu exemplo (adicione a seguinte linha ao seu~/.bashrc
arquivo):Dessa forma, tudo que você precisa fazer é
runmyproject
entrar no terminal onde quer que esteja, sem precisar especificar opções / argumentos.Como alternativa, você pode adicionar o caminho do projeto à sua
$PATH
variável de ambiente. Para fazer isso, adicione as seguintes linhas no seu~/.bashrc
arquivo:Nesse caso, você ainda precisará especificar suas opções / argumentos para o seu executável ao executá-lo.
fonte
Quando me vejo frequentemente tendo que mudar para um diretório como este:
Eu faria isso apenas uma vez:
E a partir de então, use:
Quando se trata de:
Eu usaria a pesquisa do histórico do bash. No prompt de comando, pressione Ctrl-R e digite 'runmy'. Voila, todo o comando com todas as opções como ele foi inserido pela última vez está ali para ser reinserido. Se eu não gostasse das opções que usei da última vez e quisesse ver os comandos anteriores, continuaria pressionando Ctrl-R para percorrer todos os comandos anteriores que continham "runmy".
A pesquisa de histórico do Ctrl-R também pode ajudar com o comando 'cd', se você não gostar da idéia do link simbólico. É provável que [Ctrl-R] / proj traga de volta o último comando que você usou para fazer o cd nesse diretório.
Em vez de adicionar um alias ou alternar para um shell especial, eu sempre prefiro aprender a usar os recursos do bash projetados para ajudar com esse tipo de coisa. Dessa forma, posso usar os mesmos recursos em máquinas remotas ou se precisar sentar no terminal de um colega.
fonte
pressione control + r no teclado - ele colocará você no modo de histórico reverso e você poderá digitar a parte que conhece e todo o comando será exibido
Existem outras maneiras listadas aqui
http://www.talug.org/events/20030709/cmdline_history.html
Eu tendem a usar o controle R mais embora
fonte
Tente isso ... Isso funciona para todos os comandos do seu arquivo de histórico ... é o mesmo que Ctrl+ R, mas acho que é mais intuitivo :)
editar
/etc/inputrc
descomente ou adicione essas duas linhas
logout / login
tente escrever algum comando listado no histórico ...
gostar...
escrever
e pressione
Page Upou Page Dnnavegar pelo seu arquivo de histórico em busca de comandos que começam com "ls"
Se você fez tudo certo, deve concluir automaticamente seu comando ...
fonte