《iTerm2 rz/sz 文件传输配置》
1. 简介
在 iTerm2 中使用 rz / sz 可实现与远程服务器之间的文件上传下载(基于 ZModem 协议)。默认情况下 iTerm2 不支持 ZModem 弹窗,需借助触发规则调用脚本。
2. 安装依赖
brew install lrzsz
3. 放置触发脚本
将以下两个脚本放入 /usr/local/bin/(脚本来源于本周期的开源实现,见文末参考):
/usr/local/bin/iterm2-send-zmodem.sh/usr/local/bin/iterm2-recv-zmodem.sh
脚本大意:用 AppleScript 唤起 iTerm2 弹出对话框选择本地路径,然后调用 sz(上传)/ rz(下载)。
#!/bin/bash
# iterm2-send-zmodem.sh 示例
osascript -e 'tell application "iTerm2" to set thefile to choose file with prompt "Choose a file to send"' \
-e "do shell script (\"echo \" & (quoted form of POSIX path of thefile as Unicode text))"
# 选中后执行
# /usr/local/bin/sz "$FILE" -e -b
4. 配置触发规则
在 iTerm2 中设置:
iTerm2 -> Preferences -> Profiles -> Advanced -> Triggers
添加两条规则:
| 正则 | Action | 参数 |
|---|---|---|
rz waiting to receive.\*B0100 |
Run Silent Coprocess… | /usr/local/bin/iterm2-recv-zmodem.sh |
\*\*B0100 |
Run Silent Coprocess… | /usr/local/bin/iterm2-send-zmodem.sh |
设置好之后,远程主机执行:
sz filename # 下载:弹出窗口选择保存目录
rz # 上传:弹出窗口选择要上传的文件
5. 常见问题
- rz 卡死:多半是触发规则未正确配置,或脚本路径与规则中不一致,请对照第 4 节检查。
- 脚本不可执行:记得
chmod +x /usr/local/bin/iterm2-*-zmodem.sh。
6. 参考
脚本源码来自 Stack Overflow 上 osascript 的方案:
阅读 —
·
全站 —