在非图形控制台 (<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