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:
-
crie o pipe nomeado com mkfifo /tmp/myPipe
-
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 >
- 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.