无头服务器上的xclip


27

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

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

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

我试图在没有x的无头服务器(ubuntu 13.04)上使用它。它与错误不起作用:

Error: Can't open display: (null)

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

Answers:


29

剪贴板由X服务器提供。服务器是否无头无所谓,重要的是本地图形会话可用于远程计算机上运行的程序。由于X的网络透明设计,这才有可能。

我假设您正在从运行Linux的计算机上使用SSH连接到远程服务器。确保在客户端配置和服务器配置中都启用了X11转发。在客户端配置,你需要有线路ForwardX11 yes~/.ssh/config默认情况下有它,或者通过选项-Xssh命令只为这届会议。在服务器配置,你需要有行X11Forwarding yes/etc/ssh/sshd_config(这是默认存在在Ubuntu)。

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

如果通过其他方式进行连接,则可能会或可能不会实现X11转发。如果您的客户端运行的是Windows,则PuTTY支持X11转发;如果您的客户端运行Windows,则PuTTY支持X11转发。您必须在Windows计算机(例如Xming)上运行X服务器。


+1个出色的答案,但是正如我提到的,该服务器没有运行x,因此Nykakins答案更为相关。
阿纳克

@ Anake恐怕您误解了我的答案。远程显示不涉及远程计算机上运行的任何X服务器。您确实需要xclip安装程序和支持库,但这并不涉及安装X服务器。
吉尔(Gilles)'所以

2
只是想知道...从OSX客户端连接到无头Ubuntu服务器时此方法是否有效?
2013年

3
这对我不起作用。我要从mac-> linux服务器。X11Forwarding yes在服务器上的sshd_config中,-X当我ssh到服务器时我通过了。Error: Can't open display: (null)cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
chovy

1
好的,我认为它可以工作,因为pbcopy已经可以在我的Mac本地工作。如何在Mac上启动x服务器,该如何设置$DISPLAY
chovy

4

Bash本身没有剪贴板。这是X功能。xclipt只是一个命令行界面,如您所见,它需要display。一种解决方法是只使用一个临时文件:

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

4
我不明白。
chovy

我认为您结合了不同职位的两个不同答案。
markroxor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.