无头服务器上的 xclip

Ana*_*ake 33 server command-line bash

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

pwd | tr -d "\n" | xclip -selection c
Run Code Online (Sandbox Code Playgroud)

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

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

Error: Can't open display: (null)
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*il' 36

剪贴板由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 机器上运行 X 服务器,例如Xming

  • 这对我不起作用。我要从 mac -> linux 服务器。`X11Forwarding yes` 在服务器上的 sshd_config 中,当我通过 ssh 连接到服务器时,我通过了 `-X`。`错误:无法在`cat ~/.ssh/id_rsa.pub 上打开显示:(空)` | xclip -选择剪贴板` (5认同)
  • 只是想知道……当从 OSX 客户端连接到无头 Ubuntu 服务器时,这种方法是否有效? (2认同)

Nyk*_*kin 7

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

$ echo 123 > /tmp/fileDy7Dgv
$ tr -d '2' < /tmp/fileDy7Dgv
13
Run Code Online (Sandbox Code Playgroud)

  • 我不明白。 (12认同)