Pasteboard-Viewer自动化脚本:使用AppleScript和Shell脚本批量处理剪贴板数据
【免费下载链接】Pasteboard-Viewer📋 Inspect the system pasteboards on macOS项目地址: https://gitcode.com/gh_mirrors/pa/Pasteboard-Viewer
Pasteboard-Viewer是一款专业的系统剪贴板查看工具,专为macOS开发者设计。这款强大的剪贴板嗅探工具不仅提供了直观的图形界面,还支持通过自动化脚本进行批量处理。本文将详细介绍如何利用AppleScript和Shell脚本结合Pasteboard-Viewer实现剪贴板数据的自动化处理,大幅提升工作效率。📋
为什么需要剪贴板自动化处理?
在日常开发工作中,我们经常需要处理剪贴板数据:复制代码片段、提取文本内容、分析数据结构等。手动操作不仅效率低下,还容易出错。通过自动化脚本,您可以:
- 批量处理多个剪贴板项目
- 自动提取特定格式的数据
- 定时清理剪贴板历史
- 将剪贴板内容保存到文件
- 与其他工具集成实现工作流自动化
Pasteboard-Viewer的核心功能
Pasteboard-Viewer支持多种剪贴板格式,包括文本、RTF、图片、文件URL等。通过查看 Pasteboard.swift 文件,您可以了解其核心数据结构:
struct Type_: Hashable, Identifiable { let item: Item let xType: XPasteboard.PasteboardType var id: String { "\(item.id)-\(xType.rawValue)" } var title: String { xType.rawValue } }使用AppleScript自动化Pasteboard-Viewer
基础AppleScript脚本
AppleScript是macOS上强大的自动化语言,可以直接控制Pasteboard-Viewer。以下是一个基础示例:
tell application "Pasteboard Viewer" activate -- 获取当前剪贴板内容 set clipboardContent to get pasteboard items -- 处理每个项目 repeat with item in clipboardContent display dialog "剪贴板项目: " & (item as string) end repeat end tell高级自动化示例
结合macOS的Shortcuts应用,您可以创建更复杂的自动化工作流。Pasteboard-Viewer提供了三个主要的App Intent:
- 获取剪贴板项目- 通过 GetPasteboardItemsIntent 实现
- 获取剪贴板内容为文件- 通过 GetPasteboardContentsAsFilesIntent 实现
- 清空剪贴板- 通过 ClearPasteboardIntent 实现
Shell脚本集成方案
基础Shell脚本
通过Shell脚本,您可以批量处理剪贴板数据:
#!/bin/bash # 清空剪贴板历史 osascript -e 'tell application "Pasteboard Viewer" to clear pasteboard' # 等待新内容 sleep 2 # 处理剪贴板内容 pbpaste > clipboard_content.txt echo "剪贴板内容已保存到 clipboard_content.txt" # 分析内容类型 pbpaste -Prefer txt > clipboard_text.txt pbpaste -Prefer rtf > clipboard_rtf.txt定时任务自动化
使用cron或launchd创建定时任务,自动清理剪贴板:
# 每天凌晨3点自动清空剪贴板 0 3 * * * osascript -e 'tell application "Pasteboard Viewer" to clear pasteboard'实用自动化脚本合集
1. 剪贴板内容监控脚本
#!/bin/bash # 监控剪贴板变化并记录日志 previous_content="" while true; do current_content=$(pbpaste 2>/dev/null) if [ "$current_content" != "$previous_content" ]; then echo "$(date): 剪贴板内容已更新" >> clipboard_log.txt echo "$current_content" >> clipboard_history.txt previous_content="$current_content" fi sleep 1 done2. 批量格式转换脚本
#!/bin/bash # 批量转换剪贴板格式 for format in "public.rtf" "public.html" "public.plain-text"; do pbcopy -pboard general -type "$format" > "clipboard_${format}.txt" echo "已保存 $format 格式内容" done3. 开发调试辅助脚本
#!/bin/bash # 开发调试时使用的剪贴板分析工具 echo "=== 剪贴板分析报告 ===" echo "生成时间: $(date)" echo "" echo "1. 剪贴板类型:" pbpaste -Prefer txt > /dev/null 2>&1 && echo "✓ 支持纯文本" pbpaste -Prefer rtf > /dev/null 2>&1 && echo "✓ 支持RTF格式" pbpaste -Prefer html > /dev/null 2>&1 && echo "✓ 支持HTML格式" echo "" echo "2. 内容预览:" pbpaste | head -20高级应用场景
场景一:代码片段管理
#!/bin/bash # 自动保存复制的代码片段 timestamp=$(date +"%Y%m%d_%H%M%S") content=$(pbpaste) if [[ "$content" =~ ^(function|def|class|import|export) ]]; then echo "$content" > "code_snippets/snippet_${timestamp}.js" echo "代码片段已保存" fi场景二:数据提取自动化
#!/bin/bash # 从剪贴板提取URL和邮箱 pbpaste | grep -oE '(https?://[^[:space:]]+|mailto:[^[:space:]]+)' > extracted_data.txt echo "已提取 $(wc -l < extracted_data.txt) 个链接和邮箱"场景三:跨应用工作流
#!/bin/bash # 将剪贴板内容发送到其他应用 content=$(pbpaste) # 发送到Notes应用 osascript <<EOF tell application "Notes" tell account "iCloud" tell folder "剪贴板存档" make new note with properties {name:"$(date)", body:"$content"} end tell end tell end tell EOF性能优化技巧
- 缓存机制:Pasteboard-Viewer内置了缓存机制,避免频繁访问系统剪贴板
- 异步处理:使用后台进程处理大量数据
- 内存管理:及时清理不再需要的数据
#!/bin/bash # 优化性能的脚本示例 # 使用临时文件处理大数据 temp_file=$(mktemp) pbpaste > "$temp_file" # 处理文件内容 process_content "$temp_file" # 清理临时文件 rm "$temp_file"安全注意事项
⚠️重要提示:
- 剪贴板可能包含敏感信息,请妥善处理
- 自动化脚本应运行在受信任的环境中
- 定期检查脚本权限设置
- 避免在公共计算机上保存剪贴板历史
故障排除
常见问题解决
- 权限问题:确保Pasteboard-Viewer有剪贴板访问权限
- 脚本执行失败:检查AppleScript语法和路径
- 性能问题:减少不必要的剪贴板访问
调试技巧
# 启用详细日志 set -x # 执行脚本 ./clipboard_automation.sh # 查看执行过程总结
通过结合Pasteboard-Viewer和自动化脚本,您可以构建强大的剪贴板处理工作流。无论是日常开发调试还是批量数据处理,这些脚本都能显著提升您的工作效率。🎯
核心优势:
- ✅ 完全自动化,减少手动操作
- ✅ 支持多种数据格式
- ✅ 易于集成到现有工作流
- ✅ 开源免费,可自由定制
开始尝试这些自动化脚本,让剪贴板处理变得更加高效和智能!🚀
【免费下载链接】Pasteboard-Viewer📋 Inspect the system pasteboards on macOS项目地址: https://gitcode.com/gh_mirrors/pa/Pasteboard-Viewer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考