Usando texto da saída dos comandos anteriores

16

EDIT abril de 2015: Se você tiver essa mesma pergunta, recomendo verificar também o link

Sei que não é assim que os terminais funcionam, mas muitas vezes eu achei que havia uma maneira fácil de usar o texto (copiá-lo, modificá-lo etc.) que já está no meu histórico de janela de terminal de alguma saída de comando anterior. / p>

Eu imaginei assim:

Estou no meu bash shell prestes a digitar um comando e percebo que preciso digitar algo que já está na tela algumas linhas acima. Eu posso pegar o mouse e selecioná-lo, mas eu odeio isso. O que eu realmente desejo neste momento é que todo o meu terminal se torne um gigantesco buffer Vim, tudo isso: os prompts, os comandos que eu digitei e a saída desses comandos. Tudo. E então eu poderia pular algumas linhas, talvez editar um pouco e arrancar um texto. Em seguida, retorne ao modo de shell bash e cole o que quer que eu tenha puxado para a linha de comando atual.

Eu sei que há algumas opções:

  • Naturalmente, canalize o texto que eu preciso diretamente da saída de algum comando para um arquivo, ou direto para o próximo comando. Mas para isso você tem que planejar com antecedência ou re-executar o comando a partir do seu histórico (supondo que a saída não irá mudar entre invocações).

  • Para alcançar o mouse e selecione o texto a ser copiado. Lame, chato, eu gostaria de não ter feito isso (esse não é o site do stackexchange da GUI, é? =)

  • Para usar a opção "Exportar texto como ..." do aplicativo Terminal (do Mac OS X) e salvar o texto do terminal em um arquivo. Em seguida, abra o arquivo e trabalhe com ele. Quase, mas por que passar pela etapa de salvar em um arquivo no disco?

Então a pergunta é: o que você faz nessa situação? Existe algum truque, ferramenta, recurso de shell que poderia ser útil neste cenário? Você apenas se resigna a usar o mouse ou redigite o que for necessário digitar?

Pode ser que o problema seja que eu não estou fazendo as coisas 'da maneira unix', mas vamos lá, isso é 2010 e eu não posso copiar facilmente algum texto a algumas linhas do meu cursor?

    
por Sergio Acosta 12.08.2010 / 11:34

6 respostas

4

Você pode usar o script (use -f para ter certeza de que ele limpa toda vez) e você pode ter toda a saída em um arquivo.

Use um multiplexador de terminal (tela, tmux etc). Por exemplo, para tela link

Command: copy Enter copy/scrollback mode. This allows you to copy text from the current window and its history into the paste buffer. In this mode a vi-like full screen editor is active, with controls as outlined below.

Outros multiplexadores de terminal certamente possuem recursos mais avançados.

    
por 12.08.2010 / 11:52
5

No tmux (um multiplexador de terminal) você pode pressionar Ctrl + A- [para alternar para o modo de buffer Vi, onde você pode navegar pela tela, rolar o buffer para frente e para trás, copiar texto etc. O atalho padrão é realmente Ctrl + B- [mas isso obviamente foi feito para ser reconfigurado. Além disso, o modo de buffer padrão é o Emacs, mas você pode configurá-lo para ser o Vi.

Confira o tmux, ele realmente é um ótimo multiplexador de terminal moderno. Além de trabalhar com buffer, você pode dividir a tela em várias janelas, conectar-se à mesma sessão a partir de vários terminais, etc. Para maior conveniência, você pode até mesmo fazer o seu shell de login se você disser qual é o seu shell real.

No OpenBSD, o tmux era mesmo parte do sistema básico.

Veja man page para o tmux para mais detalhes. Veja também capturas de tela no link

    
por 12.08.2010 / 13:54
4

No emacs, edição Mx shell da saída anterior. Você pode copiar facilmente colar a saída de comandos anteriores ou qualquer parte do seu buffer, como um buffer regular. Tenho certeza de que deveria haver um equivalente vim.

    
por 12.08.2010 / 11:55
1

Como mencionado aqui, o eshell do Emacs pode ser seu termo padrão + shell. :) Então você usaria o texto usual navegando lá como um mínimo. Se você aprendeu mais chaves especiais, então os seguintes recursos do eshell do Emacs podem ser acessados:

por 21.03.2011 / 08:31
1

Eu uso o urxvt (rxvt-unicode) e há um pacote chamado urxvt-keyboard-select que pode ser exatamente o que você quer, se você pode instalar o urxvt. As informações do pacote Archlinux (que contém ponteiros) estão aqui:

link

Fonte original: link

    
por 01.09.2011 / 22:46
1

Tente usar o vim como seu CLI? Basta selecionar a saída de algumas linhas e enviá-la:!.

    
por 09.02.2018 / 17:26