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?
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.
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/
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.
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:
Tente usar vim como seu CLI? Basta selecionar a saída de algumas linhas para cima e usá-lo:!.
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