Como selecionar e copiar o conteúdo do terminal (ATL + CTRL + F1)

4

Quando no 'terminal de nível inferior' (não sei como isso é chamado), o que é aberto é pressionando Ctrl + Alt + F1 , como posso copiar o conteúdo do comando que usei lá, já que não há mouse e não posso mover meu cursor para a linha de comando?

    
por silkAdmin 25.10.2011 / 13:48

5 respostas

9

Você poderia apenas redirecionar a saída para um arquivo com > ou &> ... Foi-me pedido para movê-lo de comentários para respostas, então aqui está.

A propósito, algumas notas:

Colocar > entre um comando e um nome de arquivo sobrescreverá o conteúdo atual do arquivo com saída padrão.

Colocar >> anexa a um arquivo.

Colocando um & antes que o redirecionador também detecte erros padrão (no Bash > 4).

    
por RobotHumans 25.10.2011 / 14:55
5

O último histórico de comandos usado é normalmente armazenado no seu arquivo histórico ( .bash_history ). Você pode abrir este arquivo com o editor de sua escolha e copiar o conteúdo.

Quanto à manipulação da linha de comando da janela do console, você pode confiar nas funções de edição de linha de comando do shell bash. Eles são discutidos na seção READLINE da página de manual do Bash ( man bash ). Mas eles não permitem que você cole a parte copiada em um editor.

Outra maneira de contornar isso é usar o utilitário screen . Existem vários tutoriais introdutórios na Web. A tela tem uma função de copiar e colar:

  1. Pressione CTRL + A e depois ESC para entrar no modo de cópia.
  2. Ao mover as teclas do cursor, você pode posicionar o primeiro caractere da região selecionada e, em seguida, pressionar Espaço . Você agora definiu a primeira marca.
  3. Mova o cursor para o final do texto que você deseja selecionar e pressione Espaço . Você agora copiou a região selecionada no buffer.
  4. Para colar o buffer, pressione CTRL + A e, em seguida, ] .
por lgarzo 25.10.2011 / 14:59
4

Para enviar a saída de um comando para um arquivo, você pode usar o redirecionamento.

Por exemplo, você poderia enviar seu comando dmesg para um arquivo com

dmesg > ~/Documents/output.txt

Em seguida, a saída será gravada no arquivo em vez da tela. Quando você voltar para a GUI, você pode encontrar o arquivo na sua pasta Documentos e acessar o conteúdo.

    
por Kris Harper 25.10.2011 / 14:40
3

Existem várias maneiras de contornar isso. O mais simples é com xclip e eu salvei para o último.

A resposta de hbdgaf apresenta uma solução - redirecionamento. Aqui estão duas variações sobre o tema - redirecionamento com pipe nomeado e byobu . Primeiro, não requer instalação de software adicional, enquanto byobu precisa ser instalado.

Opção 1: pipe nomeado

Quando você executa um comando e usa o pipeline | para redirecionar sua saída para outro comando, isso é chamado de pipe anônimo - ele existe por um determinado período de tempo. O pipe nomeado, por outro lado, é um tipo especial de arquivo, no qual os dados são inseridos e, em seguida, apagados.

Aqui estão os passos para que funcione:

  1. crie o pipe nomeado com mkfifo /tmp/myPipe

  2. execute o comando desejado e redirecione a saída para /tmp/myPipe . Por exemplo, sudo apt-get install byobu > /tmp/myPipe . Observe que o comando aguardará até você liberar a saída de myPipe . Use & para fazê-lo aguardar em segundo plano e continuar usando o terminal, como sudo apt-get install byobu > /tmp/myPipe & . Observe também que stdout irá para o pipe, mas stderr irá para a tela. Se você quer stderr e stdout no pipe, use &> em vez de >

    1. volte para a GUI e libere a saída desse pipe com cat /tmp/myPipe . Agora você pode copiar a saída com mouse e teclado.

Opção 2: sessão compartilhada no byobu

Quanto ao byobu , a idéia básica é que ele cria uma sessão compartilhada. Você inicia o byobu no terminal TTY e GUI e vê a mesma saída lá e ali. Eu sugeriria o lançamento do TTY primeiro, porque dessa forma é mais limpo. Então, digamos que eu lance o byobu em TTY2, execute df;free , vá para a GUI, inicie gnome-terminal , então chame byobu e voila - eu vejo a mesma saída que vi no TTY!

Opção 3: xclip, a maneira mais fácil

Suponha que eu queira copiar a saída do comando df . Tudo que eu tenho a ver com xclip é isso:

$ export DISPLAY=:0 ; df | xclip -sel clip

E ele já estará na sua área de transferência da GUI!

No entanto, há um pequeno problema - xclip não é um aplicativo nativo e precisa ser instalado via sudo apt-get install xclip

É claro que digitar tudo isso pode se tornar repetitivo, então você pode criar uma função .bashrc para fazer o trabalho. Simplesmente copie e cole a função abaixo no seu arquivo .bashrc , salve o arquivo, e agora cada vez que você logar, você tem um comando simples para copiar a saída para a área de transferência

function toClipboard
{
  export DISPLAY=:0
  "$@" | xclip -sel clip

}

E você o executaria como $ toClipboard df -h , então observe que você pode executar o comando com parâmetros.

Opção 4: script

Existe um comando chamado script que tem exatamente esse propósito - registre o que você vê na linha de comando em um arquivo. Você pode executá-lo primeiro e, em seguida, digitar saída em seu shell e, em seguida, sair; ou você pode chamar a tela com --command flag, como script --command "df -h"

No entanto, há uma desvantagem - o arquivo de saída pode conter caracteres especiais. Reencha aqui as informações sobre como limpar a saída

Opção 5: / dev / vcsX

Como mostrado por Giles no site da U & L, é possível descartar o conteúdo de tty no stdout de outro terminal . Suponha que queremos despejar o tty2. O comando para isso é

 cat /dev/vcs1

O retorno desse método é que, se o terminal estiver configurado para um determinado nível de linhas de rolagem, você poderá obter apenas uma saída parcial.

    
por Sergiy Kolodyazhnyy 03.12.2015 / 17:23
3
sudo apt-get install gpm

O GPM é exatamente o que você precisa & amp; muito útil. Enquanto no console ( ctrl+alt+f1 ), você pode copy arrastando o botão esquerdo do mouse e, em seguida, paste clicando no botão direito do mouse.

    
por Pad 12.03.2013 / 12:01