Che*_*tar 13 x11 tty clipboard console virtual-consoles
在非图形控制台 (<Ctrl><Alt><F...>) 和 X 会话之间复制/粘贴的最快方法是什么?
现在 :
有没有更简单的方法来做到这一点?非 X 控制台和 X 会话的主要选择是否可以合并?理想情况下,我想在控制台中选择文本,然后切换到 X 会话并粘贴它(单击鼠标中键)。这可以做到吗?
MC6*_*020 16
实现此类目标的“最佳”方法几乎可能是基于意见的。
我更喜欢的方式是使用本机终端的积压。
知道 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
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以做的另一件事是使用screen。它创建一个虚拟终端,可以从任何 tty/pty 分离并重新连接到另一个终端。
因此,对于您的用例,将在控制台上启动屏幕会话:
~ $ screen -L -S TestTerm
Run Code Online (Sandbox Code Playgroud)
并且,为了澄清,“ -L ”打开日志记录,这会在您启动屏幕的目录中创建一个日志文件,“ -S ”为屏幕会话提供一个名称,可以帮助您在列出所有屏幕时辨别哪个会话是哪个会话与“ -ls ”的会话。
现在,如果您必须从控制台运行该应用程序,请运行该应用程序,并在其运行时按“(Ctrl+A)+(Ctrl+D)”从屏幕会话中分离。然后进入桌面,打开终端并运行:
~ $ screen -ls
There is a screen on:
10296.TestTerm (Detached)
1 Socket in /tmp/screen/S-ChennyStar.
Run Code Online (Sandbox Code Playgroud)
现在,您已经有了屏幕会话的 PID 和名称,因此将其重新附加到您的 xterm:
~ $ screen -d -r 10296.TestTerm
Run Code Online (Sandbox Code Playgroud)
并且,为了澄清,“ -d ”告诉screen分离会话(如果它仍然附加在其他地方),“ -r ”告诉screen将会话重新附加到当前终端。
根据您要复制的输出量,重新附加时输出可能已超出初始终端缓冲区。但是,如果输出那么多,日志文件也将包含您的所有输出。
希望有帮助。
您可以使用 来xsel设置 X 中的剪贴板,并且可以设置DISPLAY变量来告诉它要连接到哪个 X。只要您使用相同的用户帐户,从终端启动的程序在连接到 X 时应该没有问题(如果DISPLAY已设置)。
some command | DISPLAY=:0 xsel -ib
Run Code Online (Sandbox Code Playgroud)
然后粘贴。
一个好的选择是安装bsdutils和使用script
sudo apt install bsdutils
Run Code Online (Sandbox Code Playgroud)
并运行
$ script
Script started, file is typescript
$ type commands
get output
...
$ exit
Run Code Online (Sandbox Code Playgroud)
之后,您可以从另一个地方(例如终端窗口)读取命令和输出,以less -R处理 ANSI 格式,但它cat也可以使用。
$ less -R typescript
Run Code Online (Sandbox Code Playgroud)