web-development-kb-pt.site

Usando o texto da saída dos comandos anteriores

Editar abril de 2015: Se você tem essa mesma pergunta, recomendo também verificação http://xiki.org/


Eu sei que isso não é como os terminais funcionam, mas eu me vejo muitas vezes desejando que houvesse uma maneira fácil de usar texto (copiando-o, modificando-o, etc) que já está no histórico do meu terminal.

Eu imaginei assim:

Estou no meu shell de bash prestes a inserir um comando e percebo que preciso digitar algo que já está na tela algumas linhas acima. Eu posso alcançar o mouse e selecioná-lo, mas eu odeio isso. O que eu realmente desejo neste momento é que todo o meu terminal se tornou um buffer vim gigante, 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 edite um pouco e puxe um texto. Em seguida, retorne ao modo Bash Shell e cole o que eu for puxado para a linha de comando atual.

Eu sei que existem algumas opções:

  • Naturalmente, tire o texto que preciso diretamente da saída de alguns comando para um arquivo ou direto para o próximo comando. Mas para que você tenha que planejar antecipadamente ou reexecute o comando do seu histórico (supondo que a saída não será alterada entre invocações).

  • Para alcançar o mouse e selecione o texto para copiar. Lame, chato, eu gostaria de não ter que isso, (este não é o site da GUI Statackexchange, é? =)

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

Então a questão é: o que você faz nesta situação? Há algum truque, ferramenta, característica de shell que possa ser útil neste cenário? Você acabou de se renunciar a usar o mouse ou re-digitar tudo o que você precisa digitar?

Pode ser que o problema seja que eu não estou fazendo as coisas "o caminho do Unix", mas vamos, isso é 2010 e não posso copiar facilmente alguns texto algumas linhas longe do meu cursor?

16
Sergio Acosta

Você pode usar o script (use -f para certificar-se de que ele libera todas as vezes) e você pode ter toda a saída em um arquivo.

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

Comando: Copiar Digite o modo Copiar/ScrollBack. Isso permite que você copie o texto da janela atual e seu histórico no buffer de pasta. Neste modo, um editor de tela inteira VI é ativo, com controles conforme descrito abaixo.

Outros multiplexadores terminais certamente têm capacidades mais avançadas.

4
nc3b

No TMUX (um multiplexador de terminais), você pode pressionar Ctrl + A- [para alternar para o modo Buffer VI, onde poderá navegar pela tela, rolar o buffer para frente e para frente, copiar texto etc. O atalho padrão é realmente Ctrl + B- [Mas isso foi obviamente destinado a 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 grande multiplexador terminal moderno. Além de trabalhar com o buffer, você pode dividir a tela em várias janelas, conectar-se à mesma sessão de vários terminais etc. Para a maior conveniência, você pode até mesmo fazer seu shell de login se você disser o que é seu shell real.

No OpenBSD TMUX, fez parte do sistema base.

Veja a página Man para TMUX para mais detalhes. Veja também screenshots ON http://tmux.sourceforge.net/

5
zvolkov

No Emacs, M-X Shell Lidar com a edição da saída anterior. Você pode facilmente copiar a saída de comandos anteriores de pasta ou qualquer parte do seu buffer, como um buffer regular. Tenho certeza de que deveria haver um equivalente de vim.

4
elmarco

Como mencionado aqui, o Emacs 'eshell poderia ser o seu termo padrão + shell. :) Então você usaria as teclas de navegação de texto habituais lá no mínimo. Se você aprendeu mais chaves especiais, os seguintes recursos do Emacs 'eshell podem ser acessados:

1
imz -- Ivan Zakharyaschev

Tente usar vim como seu CLI? Basta selecionar a saída de algumas linhas para cima e usá-lo:!.

1
Stephen M. Webb

Eu uso urxvt (rxvt-unicode) e há um pacote chamado urxvt-keyboard - selecione 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á aqui:

https://aur.archlinux.org/packages.php?id=3995

Original fonte: http://www.github.com/muennich/urxvt-perls

1
Nobody