Terminal com o botão “repetir por último” [duplicado]

2

Eu estou freqüentemente compilando coisas e repetindo o mesmo comando várias vezes, então eu gostaria de me beneficiar da minha "memória visual" e ter um tipo de botão "repetir o último comando" anexado a um terminal. Mais precisamente, aqui está como eu vejo:

  • Meu terminal "especial" seria como um emulador de terminal padrão, com uma linha de entrada extra na parte inferior, que teria um botão de "execução" anexado a ele. Clicar no botão executaria o comando sem apagando-o.
  • Talvez até mesmo um número arbitrário de tais comandos possa ser empilhado (desde que eu precise alternar entre 2 ou 3 comandos).

Eu sei que posso usar apenas Enter com o teclado para refazer o último comando, mas o que acontece é que esqueci que tinha que digitar outro comando ( para consertar algo, ou qualquer outra coisa) então não trará o comando correto do histórico. Então, em vez de um reflexo, eu tenho que realmente ler (pelo menos skim) o comando antes de pressionar Enter.

Existe tal engenhoca em algum lugar? Eu freqüentemente uso vários terminais precisamente para ter certeza de que cada um sempre tenha o comando "certo" como último, mas minhas habilidades de Alt + Tab geralmente me fazem a tab na janela errada. E eu preciso de informações de terminal, como o ambiente e o cwd, então não posso simplesmente tentar e "integrar" no meu editor de código. Quero dizer, usando Alt + F2 e então Enter não funcionaria (já que eu também preciso ler a saída do terminal). Eu só quero ser capaz de usar o melhor do teclado e da memória visual (via cliques) ao mesmo tempo.

    
por anol 18.07.2012 / 18:02

4 respostas

2

Eu acho que a expansão da história pode ser muito útil aqui. Por exemplo, digitar !p executará o último comando iniciando com 'p'. Da mesma forma, !vi executará o último comando, começando com 'vi' e assim por diante. Mais informações aqui . Se não tiver certeza de qual deles foi o último, você pode definir a opção histverify ( shopt -s histverify ) do shell, portanto, você ainda poderá editar (ou inspecionar) o comando antes de executá-lo. Mais sobre este aqui .

Como alternativa, você pode usar a funcionalidade de pesquisa de histórico. No bash, pressione Ctrl+R e digite o comando que você deseja encontrar no histórico (começando com o mais recente que corresponda aos critérios). Atingir Ctrl+R repetidamente, trará de volta comandos mais antigos que correspondam aos seus critérios. Mais informações aqui e aqui

Se você estiver interessado, você pode modificar o inputrc de sua linha de leitura, de forma que as setas para cima / para baixo façam a busca por você. Mais informações aqui e aqui .

    
por 18.07.2012 / 21:45
1

Dê uma olhada na funcionalidade de histórico do seu shell. No meu zsh:

!!

repete o último comando.

Digite history para ver as últimas entradas.

Para obter o buffer desejado no shell:

man zshzle

ou

man readline

Além disso, você pode aba expandir as conclusões

make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it

use curingas, expansões ... nem um pouco do seu caso de uso está fora dessa funcionalidade.

    
por 19.07.2012 / 08:15
0

Usando zsh você pode fazer exatamente isso com Esc + A . Digite um comando e pressione Esc + A ao invés de Enter . O comando será executado e o mesmo comando estará no buffer de linha após a conclusão do comando.

    
por 18.07.2012 / 21:22
-2

Parece que você precisa de uma resposta muito simples. Já que você mencionou Alt + Tab , eu suponho que você esteja usando janelas (X). Você realça o comando com o mouse antes de pressionar "Enter". Ele é copiado automaticamente para a placa de clipe quando você o realça. Para colá-lo, pressione o botão do meio do mouse (roda de rolagem) ou digite Shift + Inserir .

    
por 18.07.2012 / 20:41