EDITAR abril de 2015: Se você tiver essa mesma pergunta, recomendo também verificar http://xiki.org/
Eu sei que não é assim que os terminais funcionam, mas geralmente me vejo desejando que exista uma maneira fácil de usar texto (copiá-lo, modificá-lo etc.) que já esteja no histórico da janela do terminal a partir 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á esteja na tela algumas linhas acima. Posso pegar o mouse e selecioná-lo, mas odeio isso. O que realmente desejo neste momento é que todo o meu terminal se torne um buffer gigante do Vim, tudo isso: os prompts, os comandos que digitei e a saída desses comandos. Tudo. E então eu pulei algumas linhas, talvez edite um pouco e puxe um pouco de texto. Em seguida, retorne ao modo bash shell e cole o que eu puxei na linha de comando atual.
Eu sei que existem 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ê deve planejar antecipadamente ou reexecutar o comando do seu histórico (supondo que a saída não mude entre as invocações).
Para alcançar o mouse e selecione o texto a copiar. Manco, irritante, eu gostaria de não ter feito isso (este não é o site de troca de pilha da GUI, é? =)
Para usar a opção "Exportar texto como ..." do meu aplicativo de 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 executar a etapa de salvar em um arquivo em disco?
Então a pergunta é: O que você faz nessa situação? Existe algum truque, ferramenta, recurso de shell que possa ser útil nesse cenário? Você se resigna a usar o mouse ou redigitar o que precisar digitar?
Pode ser que o problema seja que eu não estou fazendo as coisas 'da maneira unix', mas vamos lá, é 2010 e não consigo copiar facilmente algum texto a algumas linhas do meu cursor?
fonte
Respostas:
Você pode usar o script (use -f para garantir que ele libere todas as vezes) e 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#
Outros multiplexadores de terminal certamente possuem recursos mais avançados.
fonte
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 obviamente era para ser reconfigurado. Além disso, o modo de buffer padrão é o Emacs, mas você pode configurá-lo para o Vi.
Confira o tmux, é realmente um ótimo multiplexador de terminal moderno. Além de trabalhar com o buffer, você pode dividir a tela em várias janelas, conectar-se à mesma sessão a partir de vários terminais, etc.
No OpenBSD, o tmux tornou-se parte do sistema base.
Veja a página de manual do tmux para mais detalhes. Veja também as capturas de tela em http://tmux.sourceforge.net/
fonte
No emacs, o Mx shell manipula a edição da saída anterior. Você pode copiar e colar facilmente a saída de comandos anteriores ou qualquer parte do seu buffer, como um buffer comum. Tenho certeza de que deve haver um equivalente ao vim.
fonte
eshell
podem ser acessados .Como mencionado aqui, o Emacs '
eshell
pode ser seu termo padrão + shell. :) Em seguida, você usaria as teclas normais de navegação de texto lá, no mínimo. Se você aprendeu mais teclas especiais, os seguintes recursos do Emacs 'eshell
podem ser acessados:fonte
Eu uso o urxvt (rxvt-unicode) e existe um pacote chamado urxvt-keyboard-select que pode ser exatamente o que você deseja, se você pode 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
fonte
Tente usar o vim como sua CLI? Basta selecionar a saída de algumas linhas e passar por:!.
fonte