Usando texto da saída de comandos anteriores

Usando texto da saída de comandos anteriores

EDITAR abril de 2015: Se você tiver a mesma dúvida, recomendo verificar tambémhttp://xiki.org/


Eu sei que não é assim que os terminais funcionam, mas muitas vezes desejo que houvesse uma maneira fácil de usar texto (copiá-lo, modificá-lo, etc.) que já está no histórico da janela do meu terminal de alguma saída de comando anterior.

Eu imaginei assim:

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

Eu sei que existem algumas opções:

  • Naturalmente, canalize o texto necessário 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 executar novamente o comando do seu histórico (supondo que a saída não mude entre as invocações).

  • Para pegar o mouse e selecionar o texto a ser copiado. Coxo, irritante, eu gostaria de não ter feito isso (este não é o site GUI stackexchange, é? =)

  • Para usar a opção "Exportar texto como..." do aplicativo Terminal (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 questão é: o que você faz nesta situação? Existe algum truque, ferramenta ou recurso de shell que possa ser útil nesse cenário? Você simplesmente se resigna a usar o mouse ou digita novamente o que precisa digitar?

Pode ser que o problema seja que eu não estou fazendo as coisas 'do jeito Unix', mas vamos lá, estamos em 2010 e não consigo copiar facilmente algum texto a algumas linhas de distância do meu cursor?

Responder1

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

Responder2

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. [mas isso obviamente deveria ser reconfigurado. Além disso, o modo de buffer padrão é Emacs, mas você pode configurá-lo para ser Vi.

Confira o tmux, é realmente um excelente 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 comodidade, você pode até torná-lo seu shell de login se informar qual é o seu shell real.

No OpenBSD, o tmux passou a fazer parte do sistema básico.

Consulte a página de manual do tmux para obter mais detalhes. Veja também as capturas de tela emhttp://tmux.sourceforge.net/

Responder3

Você pode usar o script (use -f para garantir que ele seja liberado sempre) e você pode ter toda a saída em um arquivo.

Use um multiplexador de terminal (tela, tmux etc). Por exemplo, para tela http://web.mit.edu/gnu/doc/html/screen_11.html#

Comando: copiar Entra no modo copiar/rolar. Isso permite copiar o texto da janela atual e seu histórico para o buffer de colagem. Neste modo, um editor de tela inteira semelhante ao vi está ativo, com controles descritos abaixo.

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

Responder4

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

https://aur.archlinux.org/packages.php?ID=39950

Fonte original: http://www.github.com/muennich/urxvt-perls

informação relacionada