如何在iTerm2中自动捕获上一条命令的输出内容?
实现iTerm2快捷键复制上一条命令及完整输出
核心思路
利用iTerm2官方Python API读取当前会话的命令历史,提取上一条命令及其对应输出,再通过系统工具复制到剪贴板,最后绑定自定义快捷键实现一键操作。
步骤1:编写Python脚本
创建适配iTerm2 API的Python脚本,用于提取并复制目标内容:
import iterm2 import subprocess async def main(connection): app = await iterm2.async_get_app(connection) current_window = app.current_window if not current_window: return current_session = current_window.current_tab.current_session if not current_session: return # 读取会话历史,反向查找第一条带命令的条目 history_entries = await current_session.async_get_history() target_content = None for entry in reversed(history_entries): if entry.command: # 拼接命令本身和对应输出 target_content = f"{entry.command}\n{entry.output}" break if target_content: # 调用macOS剪贴板工具pbcopy完成复制 subprocess.run(["pbcopy"], input=target_content.encode("utf-8")) iterm2.run_until_complete(main)
步骤2:配置iTerm2脚本与快捷键
- 打开iTerm2,进入
偏好设置 > 脚本 > 新建脚本,选择Python类型,将上述代码粘贴后保存为CopyLastCommandAndOutput.py - 进入
偏好设置 > 按键,点击+添加新快捷键绑定 - 在
动作下拉菜单中选择调用脚本,选中刚才保存的脚本文件 - 设置你偏好的快捷键(例如
Cmd+Shift+Alt+C,避免与默认快捷键冲突)
注意事项
- 脚本依赖iTerm2的Python API,首次打开脚本面板会自动配置运行环境
pbcopy是macOS原生工具,无需额外安装;Linux系统可替换为xclip等对应剪贴板命令- 若需处理多行命令或复杂输出,可调整历史条目的筛选逻辑,比如通过提示符特征精准定位命令起始行
内容的提问来源于stack exchange,提问作者StevieD
相关产品推荐
相关产品推荐

