当前位置: 首页>>技术教程>>正文


无头服务器上的 xclip

, ,

问题描述

我一直在使用 xclip 来复制 bash 命令的输出,如下所示:

pwd | tr -d "\n" | xclip -selection c

这样我就可以将输出粘贴到另一个终端会话中。

我试图在我的无头服务器(ubuntu 13.04)上使用它,它是在没有 x 的情况下启动的。它不适用于错误:

Error: Can't open display: (null)

有没有解决的办法。我意识到看到该程序称为 xclip 可能是不可能的。

最佳答案

剪贴板由 X server 提供。服务器是否无头并不重要,重要的是您的本Map形会话可用于远程计算机上运行的程序。多亏了 X 的 network-transparent 设计,这才成为可能。

我假设您正在使用 SSH 从运行 Linux 的机器连接到远程服务器。确保在客户端配置和服务器配置中都启用了 X11 转发。在客户端配置中,您需要将 ~/.ssh/config 中的 ForwardX11 yes 行默认打开,或者将选项 -X 传递给该会话的 ssh 命令。在服务器配置中,您需要在 /etc/ssh/sshd_config 中有行 X11Forwarding yes(它在 Ubuntu 上默认存在)。

要检查是否启用了 X11 转发,请查看 DISPLAY 环境变量的值: echo $DISPLAY 。您应该会看到类似 localhost:10 的值(运行在远程计算机上的应用程序被告知连接到运行在同一台计算机上的显示器,但该显示器连接实际上是通过 SSH 转发到您的客户端显示器)。请注意,如果未设置 DISPLAY,则手动设置它是没有用的:如果转发到位,环境变量始终设置正确。如果您需要诊断 SSH 连接问题,请将选项 -vvv 传递给 ssh 以详细跟踪正在发生的事情。

如果您通过其他方式连接,您可能无法实现 X11 转发。如果你的客户端运行的是Windows,PuTTY支持X11转发;您必须在 Windows 机器上运行 X 服务器,例如 Xming

次佳答案

Bash 本身没有剪贴板。这是一个X功能。 xclip 只是一个命令行界面,如您所见,它需要 $DISPLAY 。一种解决方法是只使用一个临时文件(例如使用 tempfile 创建):

$ echo 123 > /tmp/fileDy7Dgv
$ tr -d '2' < /tmp/fileDy7Dgv
13

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12607.html,未经允许,请勿转载。