.zip
文件就好了”、“要是我能输入一个项目代号,就直接在浏览器里打开对应的Jira页面就好了”……这些微小但重复的需求,在Raycast的扩展商店里找不到现成的,自己动手开发一个功能齐全的扩展又似乎遥不可及。
如果你曾因此感到遗憾,那么本文将为你推开一扇全新的大门。我们将为你揭示Raycast自定义扩展最神秘、也最简单的一面——脚本命令 (Script Commands)。我们将手把手地教你,哪怕你几乎没有编程基础,也能通过几行简单的代码,为你自己量身定做一个独一无二的Raycast命令,让你真正成为工具的主人。
什么是脚本命令?——你的第一个“Hello, World”扩展
忘掉复杂的开发环境、编译和打包吧。要创建一个脚本命令,你只需要一个工具:文本编辑器。
核心概念解析
脚本命令本质就是一个你编写的简单脚本文件(如Shell脚本、Python脚本、AppleScript等)。你只需把它放在Raycast指定的文件夹里,并按照特定格式在文件开头写上几行“说明书”(我们称之为元数据注释),Raycast就能自动把它识别成一个可以执行的命令。
准备工作
-
一个代码编辑器: 强烈推荐免费且强大的 Visual Studio Code,当然,系统自带的“文本编辑”App也可以。
-
一种脚本语言: 你不需要特地去学。对于所有Mac用户,Shell/Bash 脚本都是系统内置的,我们今天就以它为例。
零到一:创建你的第一个命令
让我们通过一个具体的例子,体验从无到有的完整过程。
-
打开脚本目录: 唤出Raycast (
Command+Space
),输入Create Script Command
并回车。这是Raycast提供的官方向导。 -
选择模板: 在向导中,Raycast会让你选择模板。在“Template”处选择
Bash
,然后为你的命令(文件名)命名,例如hello-kejiciwei
。点击“Next”,为它选择一个存放的子目录(可以直接存放在根目录),最后点击“Create Script Command”。 -
理解模板文件: Raycast会自动用你设置好的代码编辑器(如VSCode)打开一个名为
hello-kejiciwei.sh
的模板文件。你会看到文件内容分为两部分:-
顶部以
#
开头的注释: 这就是我们说的“说明书”,即元数据,用来告诉Raycast这个命令叫什么、怎么运行。 -
下方的脚本主体: 这里是真正要执行的代码。
-
-
修改元数据: 我们来修改这本“说明书”。
Bash
#!/bin/bash # Required parameters: # @raycast.schemaVersion 1 # @raycast.title Greet Ke Ji Ci Wei # @raycast.mode compact # Optional parameters: # @raycast.icon 🦔 # @raycast.packageName My First Scripts
-
@raycast.title
: 将其修改为问候科技刺猬
。这就是未来你在Raycast里输入的命令名称。 -
@raycast.mode
:compact
模式意味着脚本执行后,会直接在Raycast窗口里显示结果。这是最常用的模式。 -
@raycast.icon
: 我为你加了一个刺猬的图标,让命令更个性化。
-
-
编写脚本主体: 在文件的最下方,找到
echo "Hello World!"
这一行,把它修改成我们自己的内容:Bash
echo "你好,来自科技刺猬的第一个命令!"
-
赋予执行权限: 这是关键且只需做一次的一步。为了安全,新创建的脚本文件默认没有执行权限。你需要:
-
打开“终端(Terminal)”App。
-
输入
chmod +x
,然后加一个空格。 -
将你的
hello-kejiciwei.sh
文件从访达(Finder)中直接拖到终端窗口里,它会自动填充路径。 -
按下回车。完整命令看起来像这样:
chmod +x /path/to/your/scripts/hello-kejiciwei.sh
-
-
运行!
- 回到Raycast,输入
问候科技刺猬
,回车!你就能立刻看到脚本的输出结果:“你好,来自科技刺猬的第一个命令!”
- 回到Raycast,输入
恭喜你,你已经成功创建了你的第一个Raycast扩展!
进阶玩法:让你的脚本命令更强大
只会“问候世界”显然不够,让我们给它增加一些实用的功能。
添加参数,实现动态交互
我们希望命令能接收我们输入的文字。例如,创建一个“快速搜索Bilibili”的命令。
-
创建一个新脚本
bilibili-search.sh
。 -
在元数据部分,加入以下这行,来定义一个名叫“keyword”的参数:
Bash
# @raycast.argument1 { "type": "text", "placeholder": "Keyword" }
-
在脚本主体部分,用
$1
来获取这个传入的参数,并用open
命令打开拼接好的URL:Bash
open "https://search.bilibili.com/all?keyword=$1"
-
别忘了给新脚本
chmod +x
授权。现在,在Raycast里输入Bilibili Search
(你设置的title),输入你想搜索的关键词,回车,浏览器就会自动打开搜索结果页!
设置刷新时间,动态显示信息
想让命令在Raycast窗口里显示一个动态信息吗?比如每小时更新一次时间?
-
创建一个新脚本
current-time.sh
。 -
在元数据中加入这行:
Bash
# @raycast.refreshTime 1h
- 这里的
1h
代表1小时,你也可以设置为30m
(30分钟)、1d
(1天)。
- 这里的
-
脚本主体只需一行,用于输出当前日期和时间:
date
-
授权后,当你运行
Current Time
命令时,它会显示当前时间,并在1小时后自动刷新。
实战案例:打造一个“一键清理下载文件夹”的命令
现在,我们来解决一个真实存在的痛点:清理杂乱的“下载”文件夹。我们的需求是:将“下载”文件夹里超过30天未修改过的文件,移动到废纸篓。
-
创建脚本
clean-downloads.sh
。 -
填入以下元数据和脚本主体:
Bash
#!/bin/bash # @raycast.title Clean Up Downloads Folder # @raycast.mode compact # @raycast.icon 🗑️ # 查找'下载'文件夹中,超过30天未被修改的文件(-mtime +30), # 并对找到的每一个文件(-exec),执行移动(mv)到废纸篓(~/.Trash)的操作。 find ~/Downloads -mtime +30 -exec mv {} ~/.Trash \; echo "Moved files older than 30 days to Trash."
-
在终端为其授权:
chmod +x clean-downloads.sh
。
现在,每当你感觉下载文件夹很乱时,只需在Raycast中运行Clean Up Downloads Folder
,世界就清静了。
还能做什么?——通往更广阔世界的大门
今天我们学习的脚本命令,是Raycast自动化世界的“第一把钥匙”。它足以解决90%的个人轻量级自动化需求。
如果你是一名开发者,并且渴望创建拥有自定义用户界面(UI)的复杂扩展(就像你在Store里看到的那些一样),那么你可以继续探索使用React和Node.js的 Raycast API。脚本命令正是通往这个广阔世界的第一步。你可以从Raycast的官方开发者文档开始你的进阶之旅。
总结
脚本命令是普通用户通往“创造者”的捷径,它让你能以极低的成本解决高度个性化的需求。你今天学会的,不仅仅是写几个脚本,而是一种**“将重复性工作自动化”的思维方式**。
掌握了脚本命令,你就真正触及了Raycast的灵魂。要回顾它的所有强大功能,请务必重温我们的 《Raycast终极指南:从入门到神级扩展,彻底取代你的Alfred和系统聚焦》 。而这种自动化的思维,也正是我们在 《专为开发者打造的Raycast终极配置:精选扩展与高效工作流》 中所推崇的核心理念。