如何将本地连接服务器中的文件内容复制到本机的剪贴板

因为任务需要通过了跳板机连接到服务器,修改代码测试代码用原生的VIM很不方便,因此想怎么把服务的代码内容方便的复制到本机,网上相关的介绍内容不太多,不过看到有内容介绍vim插件之类的,碰巧看到一个命令,来自:https://www.zhihu.com/question/21132618

bash 复制代码
echo -ne "\033]52;c;$(echo -n hello | base64)\a"

然后发现运行真的可以将hello这个字符串复制到本机的剪贴板,因此就启发到将一个文件内容复制到本机的剪贴板的命令如下:

bash 复制代码
echo -ne "\033]52;c;$(cat data_infer.py | base64)\a"

在终端运行该命令就可以将data_infer.py文件中的内容复制到本机剪贴板了。继续查阅了一下这个命令的具体含义:

1. echo -ne

  • echo 是一个用于输出字符串的命令。通常用于打印文本到标准输出(终端)。
  • -n 选项表示 不 输出换行符。默认情况下,echo 命令会在输出的文本后面加一个换行符,-n 选项用来禁止这个行为。
  • -e 选项允许 echo 启用特殊字符(转义序列),例如 \n(换行)、\t(制表符)和 \033(表示 ESC 字符)等。

2. \033]52;c;... \a

这个部分是一个 ANSI 转义序列,用于与终端进行交互,特别是在某些支持剪贴板操作的终端中,将内容复制到剪贴板。

  • \033 :是转义字符,表示 ESC ,通常用于表示终端控制序列的开始。可以用 \e 或 \x1b 代替。
  • ]52;c; :这是特定的 ANSI 转义序列的格式,用于向剪贴板发送数据。具体来说,52 是控制序列标识符,c 是指定的剪贴板类型,表示将数据发送到剪贴板。
  • $(cat data_infer.py | base64) :这一部分是命令替换,会将 cat data_infer.py | base64 命令的输出插入到转义序列中。
  • \a :表示 BEL 字符,通常用于结束转义序列。这告诉终端,"转义序列的结束已经到达"。

3. $(cat data_infer.py | base64)

这一部分是 命令替换 ,它的作用是运行 cat data_infer.py | base64 命令,并将其输出替换到命令中的这个位置。

  • cat data_infer.py :该命令读取 data_infer.py 文件的内容。
  • | :管道符,它将 cat 命令的输出(即 data_infer.py 文件的内容)传递给后续的命令。
  • base64 :该命令将输入的内容进行 Base64 编码。Base64 编码是一种将二进制数据(例如文件内容)转换为可打印字符的编码方式。这在传输数据时非常常见,因为它能够将二进制数据转换成文本形式,避免出现不可打印的字符。

整体流程

  1. 读取文件内容 :cat data_infer.py 会将 data_infer.py 文件的内容读取出来。
  2. 进行 Base64 编码 :base64 会将文件内容编码为 Base64 字符串。
  3. 将 Base64 编码的内容插入转义序列 :命令替换 $(...) 将 Base64 编码后的内容插入到字符串 \033]52;c;$(cat data_infer.py | base64)\a 中,生成一个完整的转义序列。
  4. 发送到终端 :echo -ne 会打印该转义序列,并将数据复制到剪贴板。"\033]52;c;... \a" 这一部分告诉终端将 Base64 编码的内容发送到剪贴板。
相关推荐
anxiao_m13 分钟前
内外网文件交换如何兼顾安全与效率?2026企业工具选型攻略
运维·服务器·安全
青瓦梦滋20 分钟前
【在线五子棋对战】在线用户
服务器·网络·网络协议
程序员-Benothing27 分钟前
Linux编码转换命令:iconv、dos2unix、base64、md5sum
linux·运维·服务器
RoboWizard37 分钟前
搭配W790芯片组的超频服务器内存(架构选型)FAQ合集
运维·服务器·架构
2402_8828938639 分钟前
Linux 进程概念详解(上)—— 从冯诺依曼体系到僵尸进程与孤儿进程
linux·运维·服务器
qetfw44 分钟前
Debian iptables 防火墙:默认拒绝、SNAT 与 DNAT 验证
linux·服务器·debian·php
格物致胜工业数智技术1 小时前
皮尔磁纸板进料安全方案运维实录:O300传感器用了三年的个人体会
运维·安全
夜之眷属1 小时前
服务启动即崩:InetAddress.getLocalHost() 抛 UnknownHostException 排查记
java·运维·后端·docker
可涵不会debug1 小时前
实测ToDesk新终端:跨端会话恢复+多终端并行,远程Vibe Coding的完整体验报告
运维·电脑
xixiaoyunya1 小时前
实验室检测数据内网自动化备份方案:满足合规可追溯的落地实践
服务器·网络·自动化