如何在控制台和 X 会话之间复制/粘贴?

如何在控制台和 X 会话之间复制/粘贴?

在非图形控制台 (<Ctrl><Alt><F...>) 和 X 会话之间复制/粘贴的最快方法是什么?

现在 :

  • 我用鼠标在控制台上选择文本(我已经安装了 gpm)
  • 然后我将文本粘贴到临时文件中
  • 最后我切换到 x 会话,打开临时文件,然后复制/粘贴其内容

有没有更简单的方法来做到这一点?非 X 控制台和 X 会话的主要选择是否可以合并?理想情况下,我想在控制台中选择文本,然后切换到 X 会话并粘贴它(单击鼠标中键)。这可以做到吗?

答案1

实现此类目标的“最佳”方法几乎可能是基于意见。

我更喜欢的方式是使用积压本机终端的。

知道 tty[N] 的积压可以通过 /dev/vcs[N] 访问,我只需cat /dev/vcs[N]从我的 Xterm 中启动并根据显示的结果执行任何我想要的操作。

当然,如果您的 Xterm 用户与您要转储的 tty 的所有者不同,您可能需要使用 sudo。


顺便说一句,正如评论中明智地报告的那样,由于没有换行符,您可能会对格式感到恼火。man vcs将为您提供可能的解决方法:

Note that the output does not contain newline characters, so some
processing may be required, like in
 
fold -w 81 /dev/vcs3 | lpr
 
or (horrors)
 
setterm -dump 3 -file /proc/self/fd/1

答案2

您可以做的另一件事是使用屏幕。它创建一个虚拟终端,该终端可以从任何 tty/pty 分离并重新连接到另一个终端。

因此,对于您的用例,将启动屏幕控制台上的会话:

~ $ screen -L -S TestTerm

并且,澄清一下,“-L" 打开日志记录,这会在您启动的目录中创建一个日志文件屏幕来自,和“-S” 给出屏幕session 一个名称,可以帮助您在列出所有会话时辨别哪个会话是哪个会话屏幕会议与“-ls”。

现在,如果您必须从控制台运行该应用程序,请运行该应用程序,并在其运行时按“(Ctrl+A)+(Ctrl+D)”从控制台分离屏幕会议。然后进入桌面,打开终端并运行:

~ $ screen -ls
There is a screen on: 
    10296.TestTerm  (Detached)
1 Socket in /tmp/screen/S-ChennyStar.

现在,您已经获得了 PID 和名称屏幕会话,因此将其重新附加到您的 xterm:

~ $ screen -d -r 10296.TestTerm

并且,澄清一下,“-d” 告诉屏幕如果会话仍附加在其他地方,则将其分离,并且“-r” 告诉屏幕将会话重新附加到当前终端。

根据您要复制的输出量,重新附加时输出可能已超出初始终端缓冲区。但是,如果输出那么多,日志文件也将包含您的所有输出。

希望有帮助。

答案3

您可以使用 来xsel设置 X 中的剪贴板,并且可以设置DISPLAY变量来告诉它要连接到哪个 X。只要您使用相同的用户帐户,从终端启动的程序在连接到 X 时应该没有问题(如果DISPLAY已设置)。

some command | DISPLAY=:0 xsel -ib

然后粘贴。

答案4

一个好的选择是安装bsdutils和使用script

sudo apt install bsdutils

并运行

$ script
Script started, file is typescript
$ type commands
get output
...
$ exit

之后,您可以从另一个地方(例如终端窗口)读取命令和输出,以less -R处理 ANSI 格式,但它cat也可以使用。

$ less -R typescript

相关内容