标准输出到 gnu 屏幕复制缓冲区

标准输出到 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

丹尼斯的解决方案如下

您可能需要在 .screenrc 缓冲文件 /tmp/screen-exchange 中设置缓冲文件

答案1

以下是一种方法:

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

答案2

gnu-screen 复制/回滚缓冲区位于寄存器.

要从屏幕会话中的 shell 向复制/回滚缓冲区发送字符串,可以使用register如下命令:

screen -X register . 'Hello World'

但是,如果此命令是从脚本运行的,则很可能需要指定屏幕服务器名称。

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

此命令还将从 shell 变量中提取值,而无需 echo:

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

相关内容