在 Linux 服务器和本机之间共享剪贴板

鸟哥今天发表了一篇文章《使用OSC52实现iTerm2远程pbcopy》,讲解了如何用 PHP 程序在服务器上拷贝数据到本机/当前电脑剪贴板的方法。 正好这两天也有同事问到我怎么实现这个能力,所以这里整理一下。

目的:能够在服务器上复制文本到当前电脑的剪贴板内,即共享剪贴板。

注意,这个能力是服务器进程直接能操控当前电脑的剪贴板,而不是直接用鼠标在终端模拟器上选择复制。 不同之处在于,终端里面全部是字符,用鼠标选择复制,可能会选中不想要的字符,比如 VIM 的行号等。 再比如文件太长的时候,不易用鼠标直接选择所有文本。

实现方式在鸟哥的文章里面已经比较详细地说明了,而且写了一个兼容性脚本。 但是由于我的服务器上没有 PHP,所以我把它改成了 Bash 脚本。没有做完整的兼容性测试,有问题再修复。

Gist 地址:https://gist.github.com/movsb/30beb738148f971865c1d28947fed9e5

#!/bin/bash

set -euo pipefail

t=$(cat <&0 | base64 --wrap=0)
if [ ! -z ${STY+x} ]; then
    echo -ne "\eP\e]52;c;$t\a\e\\"
elif [ ! -z ${TMUX+x} ]; then
    echo -ne "\ePtmux;\e\e]52;c;$t\a\e\\"
else
    echo -ne "\e]52;c;$t\a"
fi

写入到标准输入的东西会全部复制到当前电脑的系统剪贴板。

同时,别忘了开启 iTerm2 的:PreferencesGeneralSelectionApplication in terminal may access clipboard.

如果文章有帮助到你,请我喝杯冰可乐吧~

发表于:2020年5月22日 ,阅读量:281 ,标签:linux · 剪贴板 · iTerm2