news 2026/9/10 2:25:39

用 Automator 在访达中一键新建文件:右键快速操作全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 Automator 在访达中一键新建文件:右键快速操作全攻略

用过 Mac 的人多少都遇到过这种尴尬:在访达里翻到某个目录,急着想新建一个文件记点东西,结果要么打开“文本编辑”先存草稿,之后还得移动文件;要么打开终端,cd 目录、touch 文件名,路径一长就得复制粘贴半天,碰到带空格的中文目录更是容易出错。实际上这个痛点完全可以用 macOS 自带的 Automator 解决,而且一套流程配好之后,在任意访达窗口里右键一下,当前目录的文件就建好了,甚至还能绑定快捷键实现全键盘操作。这篇文章我就把这套“在当前目录快速创建文件”的思路、完整实现、扩展用法和常见坑位一次讲透,看完你也能直接照着自己的习惯搭一套。

Automator 这个东西在 macOS 里一直存在,但说实话日常存在感很低,很多人根本没点开过。它本质上是一个可视化的工作流工具,把系统里的各种操作(文件、文本、脚本、App 动作)像积木一样拼在一起,生成一个独立应用、快速操作、文件夹操作或者打印插件。我们这里要解决的痛点就是“在访达当前目录下创建文件”,这个需求用 Automator 的“快速操作”类型最合适,既能塞进访达的右键菜单,又能自定义快捷键,灵活性最高。

1. 需求拆解与方案选型

1.1 这个需求到底卡在哪

先说清楚这个问题的本质。在 Windows 上右键“新建”几乎是刻进肌肉记忆的操作,但 macOS 的访达右键菜单默认没有这个选项。你可以在访达菜单栏的“文件”里新建文件夹,但“新建文件”这个动作确实是缺失的。很多人退而求其次用文本编辑,但这样会多出两步“保存并选择位置”的操作,而且默认保存格式还是 .rtf,不是纯文本;也有人选择去 App Store 装第三方工具,但为了一个右键新建文件的功能装一堆插件,多少有点杀鸡用牛刀。

更深一层的问题是:我们想要的不只是一个“空白文件”,最好是能直接在当前目录拿到一个可以命名的文件,然后立刻用默认编辑器打开。这在写代码的时候特别实用,比如你正在折腾一个脚本项目,需要在当前目录快速补一个 config.json、README.md 或者 .gitignore,用 Automator 一条工作流就能搞定,完全不用切窗口。

1.2 常见实现路径对比

在 Mac 上实现“当前目录创建文件”大约有四条路线,我全部试过,直接说结论。

一是用 Automator 做“快速操作”,这也是我推荐的一号方案。它的优势是原生、免费、能做右键菜单和快捷键,缺点是需要花十分钟配置一次,而且对没用过 Automator 的人有一点点学习成本。

二是用终端命令,比如建一个 shell alias 或者函数,配合 iTerm 的触发词。这个方案对鼠标操作不友好,你得先把目录切换到终端里,即使挂上pwd也无缝不了,而且普通用户记不住命令。

三是用 AppleScript 写一个脚本,再用第三方工具(比如 FastScripts、Alfred 的 workflow)挂到快捷键上。这个自由度最高,但前提是你已经有 Alfred 这类工具,或者愿意为快捷键效率去折腾 FastScripts,对纯小白不友好。

四是装第三方右键菜单工具,比如 New File Menu、iFolder 等。简单省事,但大部分需要付费,而且为了几个菜单项常驻一个状态栏 App,内存和整洁度都不划算。

所以我的最终选择是:用 Automator 创建“快速操作”,接收“文件夹”或“文件”对象,在 Shell 脚本里拿到当前目录后直接touch一个新文件。这套方案零依赖、纯原生、可维护,而且脚本逻辑完全可控,想怎么扩展怎么扩展。

2. 核心实现:创建你的第一个快速操作

2.1 创建快速操作的完整步骤

老规矩,先从实际操作开始。打开 macOS 自带的“自动操作”(Automator),可以按Command + 空格搜“自动操作”或者“Automator”启动。第一次打开会有一个选择文稿类型的弹窗,这里直接选“快速操作”。请注意,旧版系统里这个地方叫“服务”,新版叫“快速操作”,本质上是一个东西,只是换了个更直白的名字。

进入编辑界面后,界面分左右两栏。左侧是操作库,右侧是工作流编辑区。我们需要做三件事:

  1. 在顶部配置“工作流程收到当前”为“文件夹或文件”,位于“访达”。
  2. 从左侧搜索“Shell 脚本”,拖一个“运行 Shell 脚本”操作到右侧。
  3. 在“运行 Shell 脚本”里设置“Shell”为/bin/zsh,“传递输入”为“作为参数”,然后填脚本内容。

配置完只后按Command + S保存,名字取一个自己能认出来的,比如“在当前目录新建文件”。到这里,一个最基础的快速操作就建好了。你去访达里随便打开一个文件夹,右键任意文件或空白处(具体看下一节配置),在“快速操作”子菜单里就能看到它。

2.2 Shell 脚本的核心逻辑与参数解读

这一步是整个工作流的灵魂。快速操作把你在访达中选中的对象作为输入传给 Shell 脚本,脚本里常见的写法是:

for f in "$@"; do dir=$(dirname "$f") touch "$dir/未命名文件.txt" done

逐行拆一下。$@是 Shell 脚本里所有参数的集合,Automator 会把你在访达里选中的每一个文件夹或文件的路径作为参数传进来。for f in "$@"就是遍历这些路径。dirname命令是拿取某个路径所在的目录部分,比如你选中的是/Users/name/Desktop/test.txt,那么dirname "$f"的结果就是/Users/name/Desktop。最后touch "$dir/未命名文件.txt"在目标目录创建一个空文件。

这里有几个非常重要的细节,都是我在使用中踩过坑总结出来的。

第一,为什么要在“传递输入”里选“作为参数”而不是“到 stdin”?因为如果选“到 stdin”,脚本里接收路径的方式就变成了while read f; do ...这种逐行读取模式,处理带换行符的路径时容易出错。而“作为参数”模式下,Automator 会把每个路径都作为一个独立的参数传给脚本,路径里有空格、引号、中文都安全。

第二,为什么不直接touch 未命名文件.txt?因为快速操作执行时,Shell 脚本的工作目录(即当前目录)不一定是你在访达里看到的那个目录。它可能是/,也可能是其他系统目录。所以必须用dirname "$f"拿到绝对路径,再拼上文件名。这也是很多新手配置完后发现“文件建到了莫名其妙的位置”的根本原因。

第三,如果你只想在“当前目录”创建一次文件,而不是选中多少个对象就建多少个,那就别用for循环,只取第一个参数:

first="$1" dir=$(dirname "$first") touch "$dir/未命名文件.txt"

这样无论你在访达里选中了几个文件,都只创建一个新文件。

2.3 安装与右键菜单配置

脚本写好、保存之后,怎么让它出现在我们想要的位置?这里有一个 Automator 快速操作特有的机制:保存好的快速操作会自动安装到~/Library/Services/目录下,macOS 会在合适的上下文里自动识别它。但是这个“合适的上下文”不是自动完美匹配的,它取决于你在 Automator 编辑器顶部设定的“工作流程收到当前”。

我们设置为“文件夹或文件”,那么它的生效范围就是访达里的文件夹和文件对象。但这里有一个容易搞混的点:如果你在访达的“空白处”右键,macOS 并不总是把“当前文件夹”作为一个对象传给快速操作。空白处右键时菜单里可能根本不出现你的快速操作,或者出现后因为拿不到参数而报错。

这是 Automator 设计上的一个限制:访达本身并没有为“空白处右键”提供“当前目录”这个参数。我的解法是:在文件夹里的任意一个文件上右键(或者先 Command+A 全选再右键也行),你的快速操作就会收到至少一个“文件夹/文件”参数,脚本再用dirname拿到目标目录。如果你是强迫症,希望在任何空白处都能直接建文件,那需要走 AppleScript 获取“访达当前窗口的 target”,这个放到后面讲。

保存好之后,打开“系统设置”(System Settings)>“隐私与安全性”>“辅助功能”,确保你的终端或 Automator 相关进程被允许。这一步经常被忽略,但很多用户反映“快速操作点了没反应”就是因为没有给权限。

3. 实操进阶:快捷键绑定与多场景扩展

3.1 绑定全局快捷键的两种方式

快速操作建好之后,用鼠标点右键菜单还不是最快的操作方式。在自动化工具链里,键盘永远比鼠标快一步。绑定快捷键有两条路径。

路径一:在“系统设置”>“键盘”>“键盘快捷键”>“服务”里,找到“文件和文件夹”分类,你保存的快速操作会出现在这里(名字就是你在 Automator 里保存的名字)。点一下名字右侧的“无”,直接按下你想绑定的组合键,比如Control + Shift + Command + N,快捷键立刻生效。注意这里不要和系统已有快捷键冲突,比如Command + Shift + N在访达里是“新建文件夹”,你最好避开它。

路径二:如果你不想占用系统服务快捷键列表,也可以在 Automator 工作流里自建“获得指定的访达项目”或“获得当前文件夹”作为输入,然后绑定到第三方启动器如 Alfred 或 Raycast。但这属于另一个玩法了,这里不展开。

实际用下来,我会把Control + Shift + Command + N作为“在当前目录新建文件”的快捷键,避免和访达默认的“新建文件夹”搞混。此外,还可以设置第二个快速操作绑定Control + Shift + Command + M,用来“新建 Markdown 文件”。两个快捷键互不干扰,效率极高。

3.2 常用扩展:模板文件、日期命名、批量创建

一个固定的“未命名文件.txt”显然不够用,真正顺手的工作流要支持模板和灵活命名。这里分享一下我实际在用的几个变体。

变体一:新建 Markdown 文件。现在写文档、做笔记、写博客越来越离不开 Markdown,所以在当前目录快速建一个.md文件非常实用。脚本只需把touch的文件名后缀改成未命名.md,甚至可以顺便写入一个头部模板:

first="$1" dir=$(dirname "$first") file="$dir/未命名-$(date +%Y%m%d-%H%M%S).md" echo "# 标题" > "$file" echo "" >> "$file" echo "创建时间:$(date '+%Y-%m-%d %H:%M:%S')" >> "$file" open -a "Typora" "$file" 2>/dev/null || open -a "TextEdit" "$file"

这里加了几个小动作:用date +%Y%m%d-%H%M%S生成时间戳命名,避免文件重名;用echo往文件里写初始模板;最后用open -a尝试用指定编辑器打开这个新文件。如果你装了 Typora、VS Code 这类编辑器,把 App 名字换一下即可。这个“创建并打开”的体验非常接近 Windows 上右键新建后直接进入编辑的流畅度。

变体二:批量创建目录结构。写代码时经常会遇到“一个项目目录下要同时创建assetssrcdocsREADME.md”的场景。可以用一个快速操作接收文件夹,运行脚本:

for f in "$@"; do if [ -d "$f" ]; then target="$f" else target=$(dirname "$f") fi mkdir -p "$target/assets" "$target/src" "$target/docs" touch "$target/README.md" done

注意这里用-d "$f"判断传入参数是不是目录,如果是文件夹就直接用它作为目标目录,如果是文件就取它所在的目录。这个判断在使用快速操作时很关键,因为你可能选中文件夹,也可能选中文件夹里的文件。

变体三:带序号的文件。比如你正在整理一批素材,想连续创建素材-1.txt素材-2.txt…… 可以先写一个循环:

for f in "$@"; do dir=$(dirname "$f") i=1 while [ -e "$dir/素材-$i.txt" ]; do i=$((i+1)) done touch "$dir/素材-$i.txt" done

核心逻辑是用while [ -e ... ]判断文件是否已存在,如果存在就序号加一,直到找到一个不存在的序号。这个“自动找空位”的逻辑非常适合频繁创建同类文件的人。

3.3 使用文件夹操作实现自动监视

除了“快速操作”,Automator 还有另一种文稿类型叫“文件夹操作”(Folder Action)。它和快速操作的区别是:快速操作由你自己在某处手动触发,文件夹操作则是在某个特定文件夹里有内容变化时自动触发。

比方说你有一个Downloads下载文件夹,希望每有新文件下载完成时,自动在当天日期子文件夹里复制一份清单记录,这个需求就能用文件夹操作实现。创建方式是在 Automator 新建文稿时选“文件夹操作”,然后右键左侧文件列表,在选项里选择你要监视的文件夹,再拖入“运行 Shell 脚本”。脚本内容里同样可以使用类似逻辑,但注意此时$@传入的是“本次变化的文件/文件夹路径”,已经天然带了绝对路径。

这个场景放在本文里可能有点跳,但我想强调一点:Automator 的核心是“事件 + 动作”的拼装逻辑。你理解了$@dirnametouch这几个元素的组合,就不只是会复制我的脚本,而是能自己组合出适合不同场景的新工作流。

4. 常见问题与排查技巧实录

4.1 快速操作不显示、菜单灰置

这是我被问得最多的一个问题:按步骤配置完了,去访达右键却看不到“快速操作”菜单项,或者看到了但菜单是灰色的点不了。排查思路按顺序来。

第一,确认你的快速操作类型是“快速操作”而不是“应用程序”或“文件夹操作”。这个在 Automator 首页新建文稿时选错,后面怎么配置都白搭。第二,确认“工作流程收到当前”设置是否为“文件夹或文件”,并且“位于”是否为“访达”。如果你不小心把接收对象设成了“文本”,那在访达里右键当然不会出现。第三,确认文件是否真的保存到了~/Library/Services/下。可以在终端执行ls ~/Library/Services/看有没有对应的.workflow文件。没有的话建议重新保存一次。

如果菜单出现了但点不了,基本是权限问题。去“系统设置”>“隐私与安全性”>“辅助功能”里,把/System/Library/CoreServices/下的Automator相关进程打上勾。如果这里找不到,也可以直接把你用的终端 App(比如 iTerm 或 Terminal)加进去,因为快速操作本质上是通过系统调用执行脚本的。

4.2 文件建到了奇怪的位置

脚本执行了,但新建的文件跑到了根目录“/”或者用户主目录“~”,这基本上就是没有用dirname "$f"取路径,而是直接touch 文件名。原因之前说过,Shell 脚本的工作目录并不继承访达窗口。解决方法是坚持用"$@"参数形式,并且永远在脚本开头写明dir=$(dirname "$f")或类似逻辑。

另外还有一种“奇怪位置”的情况是:你在访达空白处右键触发了快速操作,但传进来的参数不是你想要的“当前目录”。这是因为空白处右键时 macOS 可能没有选中任何对象,Automator 实际上没有输入参数,导致脚本里$1为空,dirname ""执行出错,脚本默认在当前进程的目录里创建文件。解决办法是尽量避免空白处右键,改成在任意文件上右键触发。

4.3 快捷键不生效或被占用

在“系统设置”>“键盘”>“键盘快捷键”>“服务”里绑定快捷键后,过一会儿发现失灵了。先检查是不是和其他 App 的快捷键冲突。比如Control + Shift + Command + N在部分版本的 Safari 里有别的含义,可能会被优先拦截。可以换个更冷门的组合,比如Control + Option + Command + N,实测冲突概率低很多。

如果换了组合还是不行,去“系统设置”>“隐私与安全性”>“辅助功能”里检查是否有某个 App(比如截图工具、输入法)在后台拦截快捷键。还有一个隐蔽的问题:重启后“服务”里的自定义快捷键有时会被重置,需要重新设置一次。这种事情我遇到过两三次,后来习惯了,每次系统大版本升级后都会主动检查一下。

4.4 问题速查表

症状最可能的原因解决办法
右键没有快速操作子菜单快速操作类型选错或接收对象设错检查 Automator 顶部设置
菜单显示但点击无反应辅助功能权限未开启系统设置 > 隐私与安全性 > 辅助功能
文件建到了“/”或“~”脚本里没有用 dirname 获取目标目录统一用dirname "$f"拼接路径
同名文件被覆盖touch 不会覆盖,但如果脚本里用了>重定向会清空旧文件date +%swhile [ -e ]判断
快捷键无效被其他 App 抢占或系统重置换冷门组合键并检查权限
中文目录/文件名乱码脚本编码问题在 Automator 顶部“Shell”选/bin/zsh,文件保存为 UTF-8

5. 延伸思考与给新手的建议

5.1 从 Automator 到 Shortcuts 的迁移路径

很多用户不知道,macOS 从 Monterey 开始把 iOS 上的“快捷指令”(Shortcuts)App 搬到了 Mac 上,并且 Automator 官方也明确表示未来会逐渐被 Shortcuts 替代。那这里提到的快速操作还能用吗?答案是:能,而且短期内不会失效,但新学自动化的建议看一下 Shortcuts。

Shortcuts 里同样可以创建“快速操作”,接收访达的文件夹或文件,并且有专门的“打开文件夹”、“创建文件”等原生动作,比 Shell 脚本更直观。不过 Shortcuts 对“在 Shell 中执行命令”这种高级操作的支持不如 Automator 直接,你要是纯粹为了跑一段脚本,Automator 依然更顺手。我的建议是:如果你完全没接触过自动化,从 Shortcuts 入手更友好;如果你想要的是脚本灵活度,保留 Automator 的方案完全没问题。

5.2 原生工具优先,稳住基本功

在网上搜“mac os 下载软件”或者“mac os 镜像文件iso下载”这类关键词的人,往往会陷入一种“先折腾系统再折腾工具”的路径。但我个人的体会是:日常效率提升的优先级,应该远远高于频繁重装系统、折腾镜像文件这类高成本操作。一个简单的 Automator 工作流,配好一次能用好几年,这才是真正的“生产力”。

我的经验是,不要一开始就用复杂工具链。先掌握 Automator 里三个基本操作:拖入“运行 Shell 脚本”、理解"$@"参数、善用touchmkdir命令。就这三板斧,已经能覆盖当前目录建文件、批量创建目录结构、自动生成带时间戳的模板文件这几个高频需求。等你用顺手了,再慢慢扩展出更多的自动化流程,比如批量重命名、图片压缩、PDF 合并,用的都是同一套思维。

5.3 最后的彩蛋:找回“空白处右键新建”

前面提过,访达空白处右键默认不把“当前目录”作为参数传给快速操作,这个限制对很多人来说很膈应。这里给一个折中方案:用 AppleScript 获取访达当前窗口的路径,再交给 Shell 脚本执行。快速操作的“运行 Shell 脚本”里,可以改成先跑一小段osascript

dir=$(osascript -e 'tell application "Finder" to get POSIX path of (target of front window as alias)' 2>/dev/null) if [ -z "$dir" ]; then dir="$HOME/Desktop" fi touch "$dir/未命名文件.txt"

这段脚本通过 AppleScript 获取当前访达窗口正在浏览的目录,然后在这个目录下创建文件。如果取不到目录(比如访达没有打开任何窗口),就默认在桌面创建。这个写法避开了“需要选中文件才能触发”的限制,理论上任何位置都能用。不过要注意,快速操作在访达里触发时,系统仍需要有一个可接收对象的上下文,所以最好还是绑定快捷键来配合使用。

我自己目前的最终方案是:一个快捷键负责“新建空白 txt”,一个快捷键负责“新建带模板的 Markdown 并立刻打开”,然后配合第三方快捷键工具,把整个操作压到一次按键。这个组合我用了大半年,稳定可靠,几乎没出过问题。如果你也在为访达建文件效率发愁,按这篇文章搭一套,大概率能直接摆脱原来的别扭操作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 2:24:14

Python CSV读写完全指南:标准库、pandas与编码避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 2:23:56

基于LabVIEW的分布式四驱扭矩主动分配测控系统实战解析

简介:基于LabVIEW的汽车扭矩主动分配测控系统是一份源自全国虚拟仪器大赛的完整工程方案,面向测控、汽车电子方向的工程师与学习者,解决驱动轮扭矩实时分配与车辆稳定性控制问题。压缩包内共5个文件,包含Simulink模型(…

作者头像 李华
网站建设 2026/9/10 2:22:21

EasyExcel迁移Apache Fesod实战:从POI冲突到复杂表头与嵌套List处理

月初和同事聊起要不要把项目里的Excel导入导出模块重写,起因是看到群里有人贴了一段NoSuchFieldError: factory的堆栈,下面一群人回复“EasyExcel老毛病又犯了”。当时我心里咯噔一下,知道这个“老朋友”怕是真到了该告别的时候。后来把核心导…

作者头像 李华
网站建设 2026/9/10 2:21:39

Simulink二关节机械臂计算力矩控制仿真模型详解

简介:面向机器人控制与仿真学习者,这份二关节机械臂计算力矩控制Simulink程序包以二连杆动力学模型为基础,演示如何通过逆动力学求解关节驱动力矩并完成末端轨迹跟踪。程序包含两类控制策略:常规跟踪控制与正弦轨迹跟踪控制&#…

作者头像 李华