本文向大家分享一个可以在电脑端和移动端共享文件的工具——sharing。

每个程序员可能都遇到过这样的场景:正在 Linux 办公电脑上紧张地写代码,突然需要把一些文件传到手机上,但是公司的安全策略限制了常用即时通讯软件的使用,网页版微信也无法登录……这时候,一个叫做 Sharing 的命令行工具就能派上大用场。

前言

sharing 是一个命令行工具,无需额外的客户端应用程序即可将目录和文件从 CLI 共享到 iOS 和 Android 设备。

为什么会有这种需求呢?

一个真实的场景:我们使用 Ubuntu 系统办公,由于是办公电脑,没有安装类似 QQ、微信这类聊天软件。网页版微信也被限制登录,只有一个飞书,发送图片还会被加上水印。

当遇到一张好看的图片想保存到手机上时,我竟然找不到一个便捷的方法……

当我发现 sharing 这个工具后,再也没有这种烦恼,于是我也想推荐给大家使用,如果你们也有这种困扰的话。

成功安装 sharing 后,敲入 sharing 文件所在路径 回车就会在终端展示一个二维码,然后掏出你的手机,扫码二维码就能访问这个路径下的文件,比如图片,长按保存即可。

blog.axiaoxin.com$ sharing ~/图片/BingWallpaper
Scan the QR-Code to access '/blog.axiaoxin.com/图片/BingWallpaper' directory on your phone
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
█ ▄▄▄▄▄ █▀█ █▄█▄▀▀▄▀▄▀█ ▄▄▄▄▄ █
█ █   █ █▀▀▀█ ▀▄▀▀▀ ▄ █ █   █ █
█ █▄▄▄█ █▀ █▀▀█ ▀█ █▄██ █▄▄▄█ █
█▄▄▄▄▄▄▄█▄▀ ▀▄█▄█ █▄█ █▄▄▄▄▄▄▄█
█▄ ▄▄▄█▄ ▄▄▀▄▀ ▀▄▄▄█▀▄▄▀▄▀▄█▄▀█
███▄▄▀ ▄▀▄█▄█▀█▀ ▄█▀▀ ▀▀▄ ██▀██
█▀ ▀▀█▄▄ █▄▄█▄ ▀█▄ ▀▀▄ ▀▄▀▄ █▀█
█▀ █▄▀█▄█  █ ▄██ ██▄▀█▀ ▀██▄▀██
█▀ █ ▀▀▄▄  ▀▄▀▄▀█▄ ▀ ▄▄▀█▀▀ █▀█
█ ██▀▄▀▄▄▄▄ █▀██▄ ████ ██▀▄▄▀██
█▄████▄▄█▀█▄█▄▄▀▄▄▄▀▀ ▄▄▄ ▀   █
█ ▄▄▄▄▄ █▄█▀ ▄▄▄▄▀██▄ █▄█ ▄▄▀▀█
█ █   █ █ ▀█▄▀▀█▄▄ ▄▀▄ ▄ ▄▄▄  █
█ █▄▄▄█ █ ▄▀█▀ ▄ ▄██ ▀▄ ▀▄▄█ ██
█▄▄▄▄▄▄▄█▄▄▄█▄█▄▄▄▄▄██▄▄▄▄▄▄███

or access this link: https://192.168.0.2:7478?time=1678978575806

Press ctrl+c to stop sharing

一、什么是 Sharing?—— 文件共享的新方式

Sharing 是一款基于 Node.js 的命令行工具,旨在帮助用户在不同操作系统之间(如 Linux、Windows、macOS)实现文件、目录、剪贴板内容的共享和接收。用户无需在手机端安装额外应用,只需在电脑上安装 Sharing,并在终端执行相应命令即可生成二维码,供手机扫描以访问共享内容。

Sharing 主要功能亮点

Sharing 工具主要提供以下几种功能:

  • 共享文件或目录:直接将指定文件或目录分享至移动设备。
  • 共享剪贴板内容:可将复制到剪贴板的文本内容生成二维码,手机扫码即可读取。
  • 接收文件:通过生成二维码,允许从手机上传文件至指定目录。
  • 基本身份验证:为共享内容设置用户名和密码,确保内容安全。
  • SSL 支持:可启用 SSL 加密传输,保障文件传输过程中的数据安全。

二、如何安装 Sharing 工具

使用 Sharing 工具的前提是 Node.js 版本为 16.x 或更高,安装过程如下:

npm install -g easy-sharing

macOS 用户在运行时需注意将 sharing 命令替换为 easy-sharing,确保兼容性。

参考资料

三、使用 Sharing 工具共享文件与目录

Sharing 的使用流程非常简单,只需在终端中指定要共享的文件或目录路径即可。以下是几种常用的命令格式:

1. 共享文件或目录

sharing /path/to/file-or-directory

终端会生成一个二维码,手机扫码后即可查看并下载共享内容。值得注意的是,共享设备需连接至相同 Wi-Fi 网络;如果电脑拥有公共 IP 地址,则可以使用 --ip 参数指定 IP 地址:

sharing --ip 公共IP地址 /path/to/file-or-directory

2. 共享剪贴板内容

将要共享的文本内容复制到剪贴板,运行以下命令即可生成二维码,供手机扫描查看文本内容(目前不支持剪贴板图片共享):

sharing -c

3. 接收文件

允许手机将文件上传至指定的目录。运行以下命令后会生成二维码:

sharing /destination/directory --receive

第一个二维码用于上传文件,扫描后点击页面上的按钮,即可将文件上传至指定目录。第二个二维码用于访问目录,确认文件上传是否成功。

4. 启用基本身份验证

通过 -U-P 参数设置用户名和密码,确保只有授权用户能够访问共享内容:

sharing /path/to/file-or-directory -U 用户名 -P 密码

四、使用场景与优势

Sharing 工具适用于多种场景,尤其在以下情况下为用户提供了极大的便利:

  • 跨平台文件传输:无需在手机端安装额外客户端应用,简化了文件传输流程,适用于 iOS、Android、Linux、Windows 和 macOS。
  • 办公环境限制:在很多办公环境中,微信、QQ 等即时通讯软件无法使用,而 Sharing 工具可以完全绕过这些限制。
  • 简洁便捷:只需通过命令行操作和二维码扫描即可完成文件共享,适合习惯使用命令行工具的开发者和技术人员。
  • 轻量便捷:无需额外客户端,直接通过命令行操作即可实现文件共享。
  • 跨平台兼容:支持多种操作系统和移动设备。
  • 安全性保障:支持基本身份验证和 SSL 加密,适合在有安全需求的网络环境中使用。
  • 依赖 Node.js 环境:使用前需确保 Node.js 的安装和版本要求。

五、Sharing 的未来开发计划

根据 GitHub 项目页面上的信息,Sharing 未来将进一步丰富其功能,包括:

  • 压缩文件传输:通过 --zip 参数在传输前压缩文件,减少文件传输的带宽消耗。
  • 自签名证书创建:允许用户生成自签名证书,增强安全性。
  • 更新功能横幅截图:展示 --receive 接收文件的操作流程。

常见问题解答 (FAQs)

Q1:Sharing 工具的文件传输速度如何?

Sharing 基于网络连接速度,局域网传输速度通常较快;跨网络传输时则依赖网络带宽。

Q2:是否可以共享剪贴板的图片内容?

当前 Sharing 仅支持文本剪贴板内容的共享,图片暂不支持。

Q3:Sharing 是否支持多用户同时连接?

默认情况下 Sharing 支持单用户访问,但可以通过在不同端口运行多个实例来实现多用户访问。

Q4:可以在公网中使用 Sharing 吗?

可以,但需要有公网 IP 或使用端口映射,配合 –ip 参数指定 IP 地址即可实现。

七、总结

Sharing 是一款强大而灵活的命令行工具,为跨设备文件传输提供了极简且高效的解决方案。无论是需要在办公环境中传输文件,还是快速共享个人设备中的内容,Sharing 都能为用户提供便捷的文件共享体验。

通过二维码扫描、命令行操作以及多平台兼容性,Sharing 成为文件传输需求下的得力助手。对于常使用命令行的开发者,Sharing 更是必不可少的高效工具之一。


也可以看看