stdout para o buffer de cópia de tela do gnu

3

Existe um comando no GNU Screen para direcionar a saída padrão para o buffer de cópia

Eu tenho feito muito trabalho com arquivos, é ótimo copiar e passar os nomes de arquivos que eu quero para os comandos

por exemplo,

ls | grep proc

$ ls | grep cal
calendar.inc-gen.php

// enter copy mode
$^a y 
// backward search for gen_chg
? cal
// start region
SPC
//goto to end of file by forward search php
php
// done 
ENT
// type command line
$ git rm ^p
// creates
$ git rm calendar.inc-gen.php

Estou ciente de que há maneiras mais fáceis de fazer isso com um script bash, mas muitas vezes me vejo precisando de uma informação especializada a partir da tela do terminal e seria ótimo apenas digitar

ls | grep cal > To_GNU_SREEN_COPY_:) or something

A solução de Dennis abaixo funciona

você pode precisar configurar o arquivo buffer em seu .screenrc     bufferfile / tmp / screen-exchange

    
por Fire Crow 18.07.2009 / 02:34

2 respostas

3

Aqui está uma maneira:

echo -n cal* > /tmp/screen-exchange
screen -X readbuf    # or press Ctrl-a <
git rm ^a]           # type "git rm" then press Ctrl-a ]
    
por 18.07.2009 / 04:06
2

O Buffer de Cópia / Scrollback da tela gnu está localizado no registro .

Para enviar uma string para o buffer Copy / Scrollback de um shell dentro da sessão de tela, você pode usar o comando register da seguinte forma:

screen -X register . 'Hello World'

No entanto, se este comando estiver sendo executado a partir de um script, como provavelmente é o caso, será necessário especificar o nome do servidor de tela.

screen -S "1234.pts-1.localhost" -X register . 'Hello World'

Este comando também extrairá o valor de uma variável shell sem a necessidade de eco:

x='Hello World'
screen -S "1234.pts-1.localhost" -X register . $x

A especificação da janela não é necessária, no entanto, é assim que você faria.

y='Goodbye World'
screen -S "1234.pts-1.localhost" -p 2 -X register . $y
# Walk into the ocean.... fade to black....  roll credits
    
por 07.03.2014 / 09:43