Comando shell para colocar linha recente de saída na linha de comando atual

1

Os shells têm um recurso útil em que pressionar a seta para cima do teclado substitui o conteúdo da linha de comando atual pelo anterior comando que foi inserido. (E se você fizer isso de novo, o comando antes disso, e assim por diante.)

Eu gostaria de um recurso semelhante, em que pressionar (outro botão) substitui o conteúdo da linha de comando atual pela <última> última linha de saída do comando anterior (e, se você fizer isso novamente, a linha anterior de saída e assim por diante.)

Existe algum shell que forneça um recurso como esse?

A motivação é que você geralmente quer executar um comando e, em seguida, executar outro comando com parte da saída dos comandos anteriores como entrada. (Não, eu não quero fazer nada envolvendo a saída de um comando para o próximo. Estou procurando uma experiência interativa , onde você executa o primeiro comando, veja sua saída e, em seguida, obter uma linha dessa saída em seu próximo comando, sem ter que alcançar o mouse para fazer um copiar-e-colar desajeitado.)

    
por HighCommander4 06.10.2017 / 18:32

2 respostas

3

Se você executar seu shell em screen , poderá usar o modo de rolagem de screen para conseguir isso. Usando as atalhos de teclado padrão:

  • Ctrl Um Esc entra no modo de rolagem;
  • as teclas de movimento se movem para cima e para baixo;
  • Y copia a linha atual para o buffer de colagem e deixa o modo de rolagem;
  • Ctrl Um ] cola o buffer.

A documentação (executar man screen ) fornece muito mais detalhes e descreve os outros recursos do modo de rolagem (incluindo pesquisas, cópias parciais, etc.).

tmux sem dúvida tem recursos semelhantes.

    
por 06.10.2017 / 18:40
0

Se eu leio isso corretamente, você quer pegar a última linha da saída de um comando e executá-lo como um novo comando. Assim:

$ $( /path/to/command_generator | tail -n1 )

Ou, se for o conteúdo de um arquivo no disco:

$ $( tail -n1 /path/to/RUNME.txt )

Se você quiser editá-lo antes da execução, use vipe , que é uma ferramenta para editar o conteúdo de pipelines em andamento:

$ $( /path/to/command_generator | vipe )
    
por 06.10.2017 / 18:39