Есть ли в 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