Назад | Перейти на главную страницу

stdout в буфер копирования экрана GNU

Есть ли в GNU Screen команда для прямого вывода стандартного вывода в буфер копирования

Я много работал с файлами, здорово копировать и вставлять имена файлов, которые я хочу, в команды

например

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

Я знаю, что есть более простые способы сделать это с помощью сценария bash, но часто мне нужна специализированная информация с экрана терминала, и было бы здорово просто ввести

ls | grep cal > To_GNU_SREEN_COPY_:) or something

Решение dennis ниже работает

вам может потребоваться установить буферный файл в вашем .screenrc bufferfile / tmp / screen-exchange

Вот один из способов:

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

Буфер копирования / прокрутки GNU-screen находится в реестре .

Чтобы отправить строку в буфер копирования / прокрутки из оболочки в сеансе экрана, вы можете использовать register команда так:

screen -X register . 'Hello World'

Однако, если эта команда запускается из сценария, что вполне вероятно, вам необходимо указать имя сервера экрана.

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

Эта команда также извлечет значение из переменной оболочки без необходимости эха:

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

Указание окна не требуется, но вы бы сделали это так.

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