Não há recurso para capturar a saída da tela na maioria dos emuladores de terminal. Eu pareço lembrar o autor do xterm (o emulador de terminal de “referência”) afirmando que seria difícil de implementar. Mesmo que isso fosse possível, o shell teria que acompanhar onde o último prompt havia sido.
Assim, você não vai mais ter que executar o comando novamente, a menos que você use um mecanismo manual específico do terminal, como copiar e colar com o mouse no xterm ou com o teclado na Tela.
Seria altamente impraticável para o shell capturar automaticamente a saída de comandos, porque não é possível distinguir entre comandos que possuem terminal complexo e interações do usuário de comandos que simplesmente exibem caracteres imprimíveis.
Você pode executar novamente o comando e capturar sua saída. Existem várias maneiras de fazer cada um. Para reexecutar o comando, você pode usar:
-
!!
de substituição do histórico - mais conveniente para digitar; -
fc -e -
, que pode ser usado em uma função.
Para capturar a saída, você pode usar a substituição de comandos ou uma função como a seguinte:
K () {
lines=("${(f@)$(cat)}")
}
!! |K
Isso define a matriz lines
como a saída do comando que é canalizado para ela.