如何将GNU Screen复制缓冲区复制到剪贴板?

问题描述 投票:58回答:7

使用GNU Screen时,我们可以使用Ctrl+a+[命令使用回滚缓冲区,也称为“复制模式”。

在那里我们可以通过按space选择文本并再次按space将文本复制到复制缓冲区。

有没有办法将此文本从屏幕复制缓冲区复制到X剪贴板?

在我的情况下,我使用Ubuntu 12.04与gnome和Xorg。

linux terminal copy-paste gnu-screen gnome-terminal
7个回答
40
投票

您可以使用xselpbpaste等CLI剪贴板工具和cat实用程序从STDIN中获取内容。 Linux上使用xsel的步骤如下:

  1. 将文本从屏幕会话复制到GNU屏幕复制缓冲区。
  2. 在screen:cat | xsel -b中运行此命令
  3. 如果xsel没有报告任何错误,现在将屏幕的复制缓冲区转储到STDIN:Ctrl+a+]
  4. 发送EOF到cat终止它:Ctrl+d

此时,屏幕复制缓冲区的内容应该在剪贴板中。

编辑:与所有X程序一样,xsel需要知道如何联系您的X服务器以访问剪贴板。您应该正确设置DISPLAY环境变量。


11
投票

有一种更简单,更少手动的方法来做到这一点。在屏幕.rc文件中,添加以下行:

bindkey -m ' ' eval 'stuff \040' 'writebuf' 'exec sh -c "/usr/bin/pbcopy < /tmp/screen-exchange"'

如何使用复制功能:

  1. screen -c path/to/screen/config.rc
  2. 按Ctrl + A然后按Esc进入复制模式。
  3. 向上滚动文本缓冲区,找到要留下开始标记进行复制的位置,然后点击空格。
  4. 向下滚动并选择要复制的文本。当你完成后,再次击中空间。
  5. 该文本现在将在您的剪贴板中。

10
投票

这个答案适用于OS X.

使用copy mode将所需文本复制到GNU Screen粘贴缓冲区后,执行以下操作:

  1. 在任何屏幕窗口中,键入pbcopy <enter>
  2. 然后使用GNU Screen paste commandCtrl-a ]将文本粘贴到终端中,除非您更改了转义键)。
  3. 如果文本没有以换行符结尾,请按<enter>插入一个。
  4. 最后,按Ctrl-d使pbcopy将文本推送到系统剪贴板。

然后,您可以像往常一样使用Command-v或等效的菜单选项将文本粘贴到OS X中的其他位置。


9
投票

此答案仅适用于最终目标是立即粘贴复制的缓冲区内容的情况。

最简单的方法是将屏幕分成两个区域。您可以通过按CTRL + a然后执行此操作|'这不是我。这是键盘上的PIPE标志'

按CTRL + a然后按TAB切换到第二个区域,CTRL + a然后c以在第二个区域中创建一个新会话。

如果要从nano复制并粘贴到终端,请在左侧区域打开nano文件,按CTRL + a然后按ESC,滚动到复制位置的起点并点击SPACE,通过滚动到文本选择文本终点并再次点击SPACE以标记副本。

现在,您所要做的就是按CTRL + a然后选择TAB切换到右侧区域并按CTRL + a然后按]。

您的文本将写入命令行。请注意,如果要直接写入文件,还可以检查硬拷贝选项。


0
投票

如果您当前已连接到服务器,请退出ssh终端会话。

如果您在Mac OS上使用XQuartz,在服务器上使用xsel。您应该通过在xQuartz应用程序菜单中选择“首选项”来更新XQuartz粘贴板设置。

XQuartz settings:

enter image description here

ssh进入远程机器并尝试运行:

xsel -p <<<"THIS IS A TEST".

按cmd + v并输出“这是测试”。


-1
投票

如果您要复制的只是一些信息,只需用鼠标突出显示它,然后将其粘贴到您想要的位置。

如果您正在尝试获取大量信息,则可以将屏幕会话记录到文件中,然后您可以从文件中复制或清理一下并使用它来执行操作说明


-3
投票

终于今天我找到了一个鼠标解决方案:

按住Ctrl键并用鼠标右键单击。复制/粘贴上下文菜单显示。

https://michalzuber.wordpress.com/2015/01/28/gnu-screen-copy-paste-with-mouse/的一些屏幕

© www.soinside.com 2019 - 2024. All rights reserved.