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.