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