《iTerm2 rz/sz 文件传输配置》

《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 的方案:

阅读 — · 全站 —
🎸 我的歌单 0 首