可在 macos 的 iterm2 中通过触发器实现“宏指令式文件移动”:输入形如 echo "[move:src→dst]" 的命令,触发器自动执行 mv 操作;需安装 iterm2 和 lrzsz,并配置正则匹配与静默执行。
在 macos 中,原生“终端”不支持类似 ide 那样的“宏指令触发器”,但你可以通过 iterm2 + lrzsz + 触发器(triggers) 的组合,实现“输入特定字符序列后自动执行文件移动操作”的效果——这本质上是用终端触发器模拟“宏指令”行为。关键不在“移动文件本身”,而在于让终端识别某段输出或输入,并自动调用 shell 命令完成 mv/cp 等动作。
前提:改用 iTerm2 并安装 lrzsz
原生 Terminal.app 不支持基于正则的自动响应式触发器,必须使用 iTerm2:
- 从 iterm2.com 下载并安装最新版 iTerm2
- 安装
lrzsz(用于后续传输逻辑,也常作为触发器载体):brew install lrzsz - 确保你的 shell(zsh 或 bash)已就绪,且有基本权限执行
mv
配置 iTerm2 触发器自动执行 mv 命令
触发器不能直接“监听你敲的命令”,但可以监听 命令执行后的输出内容,再触发后台动作。典型做法是:先输出一个带标记的提示行(如 [MOVE:~/Downloads/file.zip→~/Desktop]),再让触发器捕获它并运行真实 mv。
- 打开 iTerm2 → Preferences → Profiles → Default → Advanced → Triggers → Edit
- 点击 + 添加新规则
-
Regular expression 填入:
\[MOVE:([^→\]]+)→([^→\]]+)\]
(匹配形如[MOVE:~/a.txt→~/b/]的字符串) - Action 选 Run Silent Coprocess(⚠️不是 “Run Command”)
-
Parameters 填入:
sh -c 'mv "$1" "$2"' _ \1 \2
(\1和\2分别对应正则中两个捕获组)
日常怎么“调用”这个移动宏?
你不需要写完整脚本——只需在终端里输入一行带标记的 echo,触发器就会悄悄执行移动:
- 例如,想把
report.pdf从下载目录移到桌面:echo "[MOVE:~/Downloads/report.pdf→~/Desktop/]" - iTerm2 捕获该行后,自动运行:
mv ~/Downloads/report.pdf ~/Desktop/ - 整个过程无回显、不打断当前会话,就像按了一个“移动宏键”
进阶:绑定到快捷键(真·自定义功能键)
若希望一键触发,可结合 macOS 键盘设置 + iTerm2 快捷键:
- 在 iTerm2 → Keys → Key Bindings → Presets 中,添加新快捷键(如 ⌘+Shift+M)
- 动作设为 Send Text,内容填:
echo "[MOVE:~/Downloads/→~/Desktop/]" - 之后按 ⌘+Shift+M,就等效于“执行一次桌面移动宏”











