2021 年 11 月,Python 版 trzsz 工具
-
背景:在 iTerm2 中使用 rz sz 又卡死了,才想起当前是 tmux 环境,然后 kill 并重登录,真的很浪费时间。
-
原因:rz sz 在传输时会有一些特殊字符,tmux 的存在导致传不过去。
-
解法:如果先将文件 Base64 编码再传输,就可以顺利穿过 tmux 了。
-
结果:写了个小工具 trzsz ( trz / tsz ) 自用,接着在 GitHub 上开源分享出来:https://github.com/trzsz/trzsz
2022 年 2 月,TypeScript 版 trzsz.js 库
2022 年 3 月,Go 版 trzsz 工具
2023 年 5 月,实现 ssh 客户端
-
背景1: Windows 中的 ConPTY 和 ConHost 存在性能问题,导致 Go 版 trzsz 只有几十 K 的速度。
-
背景2: 有网友来咨询 trzsz.js 的问题,他用的是 Go [wails](https://github.com/wailsapp/wails),才知道 Go 有强大的 ssh 库,可以把 Go 版 trzsz 改造成一个库让他接入。
-
背景3: 在 ssh 登录不常用的服务器时,总是不能准确地记住别名是什么,然后就是 cat ~/.ssh/config,很不丝滑。
-
结果:把 Go 版 trzsz 改造成一个库,自己写一个 ssh 客户端,完全兼容原生 ssh 的,然后定制自己想要的功能,顺便解决 trzsz 在 Windows 慢的问题,叫 trzsz-ssh ( tssh ):https://github.com/trzsz/trzsz-ssh
2024 年 1 月,tssh 率先突破 1k star
-
trzsz-ssh ( tssh ) 是以上几个最后开源的,却是最先达到 1k star 的,为期不到一年。
-
trzsz-ssh ( tssh ) 也支持原生 zmodem ( rz / sz ),只要有本地 shell 的终端就能使用。凡是没有原生支持 rz / sz 的终端,配合 tssh 使用大概率会有惊喜。
-
截止到现在,star 和 fork 数量的汇总 https://github.com/trzsz
- Python 版 958 star 48 fork
- TypeScript 版 177 star 14 fork
- Go 版 752 star 46 fork
- tssh 1000 star 62 fork
总结与感想
- 最后说明一下,以上其实省略了大量的优化过程,那是用很多很多的周末堆起来的……