<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Spotlight on 小景</title>
        <link>https://jingyuan-zheng.github.io/zh/tags/spotlight/</link>
        <description>Recent content in Spotlight on 小景</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-Hans</language>
        <copyright>Jingyuan Zheng</copyright>
        <lastBuildDate>Thu, 22 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jingyuan-zheng.github.io/zh/tags/spotlight/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>从 Spotlight 运行 Shell 命令：SpotlightShell 的安装与使用</title>
            <link>https://jingyuan-zheng.github.io/zh/p/spotlight-shell/</link>
            <pubDate>Wed, 30 Sep 2026 00:00:00 +0000</pubDate>
            <guid>https://jingyuan-zheng.github.io/zh/p/spotlight-shell/</guid>
            <description>&lt;img src=&#34;https://jingyuan-zheng.github.io/img/spotlight-shell/spotlight.png&#34; alt=&#34;Featured image of post 从 Spotlight 运行 Shell 命令：SpotlightShell 的安装与使用&#34; /&gt;&lt;p&gt;SpotlightShell 是一个面向 macOS 26 或更新版本的原生小工具，为 Spotlight 和“快捷指令”提供 Run Shell Command 动作。&lt;/p&gt;&#xA;&lt;p&gt;有些操作只需要执行一条短命令，例如查看当前目录或得到一段文本结果，每次打开 Terminal 会多一步。&lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/SpotlightShell&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;SpotlightShell&lt;/a&gt; 让命令作为运行时参数输入，不需要事先维护一套固定命令菜单。&lt;/p&gt;&#xA;&lt;p&gt;它执行的是当前用户权限下的 Shell 命令，不负责把自然语言翻译成命令，也不会自动获取管理员权限。&lt;/p&gt;&#xA;&lt;h2 id=&#34;安装后让系统发现动作&#34;&gt;安装后让系统发现动作&#xA;&lt;/h2&gt;&lt;p&gt;项目 &lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/SpotlightShell/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Releases&lt;/a&gt; 提供 DMG。按发布说明安装，先打开应用一次，再给 macOS 一点时间发现 App Shortcut。&lt;/p&gt;&#xA;&lt;p&gt;按 &lt;strong&gt;Command-Space&lt;/strong&gt; 打开 Spotlight，再用 &lt;strong&gt;Command-3&lt;/strong&gt; 筛选动作，搜索 &lt;strong&gt;Run Shell Command&lt;/strong&gt; 或 &lt;strong&gt;SpotlightShell&lt;/strong&gt;（见图 1）。如果找不到，先检查 &lt;strong&gt;快捷指令 → App → SpotlightShell&lt;/strong&gt;，并重新打开应用。&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/spotlight-shell/spotlight.png&#34; alt=&#34;Spotlight 搜索到 SpotlightShell 的命令动作&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;图 1：从 Spotlight 找到执行入口。截图来自项目仓库。&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;想用 &lt;code&gt;sh&lt;/code&gt; 快速叫出动作，可以在 Spotlight 找到该动作，点击旁边的 &lt;strong&gt;Add quick keys&lt;/strong&gt;，输入 &lt;code&gt;sh&lt;/code&gt; 并确认。以后按 &lt;strong&gt;Command-Space&lt;/strong&gt;、输入 &lt;code&gt;sh&lt;/code&gt;，再填写命令即可。&lt;/p&gt;&#xA;&lt;h2 id=&#34;先运行一条容易判断结果的命令&#34;&gt;先运行一条容易判断结果的命令&#xA;&lt;/h2&gt;&lt;p&gt;第一次可以使用：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Hello from SpotlightShell\n&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;选择后台模式，检查返回的输出与退出状态。工具分别保留标准输出和错误输出，不会简单地把“有文字返回”当作成功（见图 2）。&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/spotlight-shell/result.png&#34; alt=&#34;Spotlight 显示 Shell 命令执行结果&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;图 2：同时查看输出与退出状态，实际可见长度由 Spotlight 控制。&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;也可以试试 &lt;code&gt;printf &#39;example error\n&#39; &amp;gt;&amp;amp;2; exit 7&lt;/code&gt;：它会产生错误输出，并返回退出状态 7。这样就能看出“命令产生了文字”与“命令成功完成”不是一回事。在“快捷指令”中，同一个动作返回文本，可接“显示结果”；要根据成败决定后续步骤时，应检查状态。&lt;/p&gt;&#xA;&lt;h2 id=&#34;后台和-terminal-模式分别适合什么&#34;&gt;后台和 Terminal 模式分别适合什么&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt; 适合短时间、无需交互的命令。它运行登录 zsh，不提供交互输入，分别捕获两种输出，执行时限为 20 秒。每路保留最多 64 KiB，超出会注明截断；对话框实际展示的内容还可能更短。&lt;/p&gt;&#xA;&lt;p&gt;需要终端输入、TTY 或较长会话的程序，选择 &lt;strong&gt;Terminal&lt;/strong&gt;。这会打开 Apple Terminal 并交接命令。交接成功不等于命令最终运行成功，输出留在 Terminal 中。&lt;/p&gt;&#xA;&lt;p&gt;工作目录是独立参数。可以填绝对路径、&lt;code&gt;~&lt;/code&gt; 或 &lt;code&gt;~/…&lt;/code&gt;，不需要在目录输入框中额外包一层 Shell 引号。&lt;/p&gt;&#xA;&lt;h2 id=&#34;把命令和工作目录分别填清楚&#34;&gt;把命令和工作目录分别填清楚&#xA;&lt;/h2&gt;&lt;p&gt;例如想看“文稿”里某个项目的文件列表，可以把工作目录填写为 &lt;code&gt;~/Documents/My Project&lt;/code&gt;，命令填写为 &lt;code&gt;pwd; ls&lt;/code&gt;。目录输入框是一个路径参数，包含空格也不用额外加引号；命令输入框才会交给 zsh 解释。不要把 &lt;code&gt;cd&lt;/code&gt; 命令写进目录栏，也不要在这里填 &lt;code&gt;$HOME&lt;/code&gt; 这样的变量表达。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pwd&lt;/code&gt; 会先显示执行位置，&lt;code&gt;ls&lt;/code&gt; 再列出内容。第一次使用时保留这个检查步骤，能发现命令是否在预期目录运行。留空工作目录默认从个人主目录开始；相对路径则应写成完整路径，避免把“我在终端刚才进入的目录”误当成 Spotlight 的当前目录。&lt;/p&gt;&#xA;&lt;p&gt;这与命令内部的引号规则不同。若命令要打开一个带空格的文件，仍需要按照 Shell 语法给那个文件路径加引号。简单记成两个问题即可：目录栏告诉工具在哪里开始；命令栏告诉 Shell 要做什么。两者分开填，也更容易检查出错位置。&lt;/p&gt;&#xA;&lt;h2 id=&#34;需要交互时让-terminal-接手&#34;&gt;需要交互时，让 Terminal 接手&#xA;&lt;/h2&gt;&lt;p&gt;可以用 &lt;code&gt;printf &#39;hello\n&#39;; tty&lt;/code&gt; 检查 Terminal 模式：文字会出现在新 Terminal 窗口，&lt;code&gt;tty&lt;/code&gt; 则显示终端设备。需要连续运行并观察的工具也适合放在这里，例如 &lt;code&gt;top&lt;/code&gt;，退出时在终端按 &lt;code&gt;q&lt;/code&gt;。不要因为后台模式能运行一次输出，就假定它也适合长期监控。&lt;/p&gt;&#xA;&lt;p&gt;第一次交接可能弹出让 SpotlightShell 控制 Terminal 的系统提示。这项授权用于打开终端并发送命令；后台运行不需要这个交接。如果之前拒绝过，后续选择 Terminal 却没有按预期启动，应先检查系统自动化权限，而不是把同一条命令反复提交。&lt;/p&gt;&#xA;&lt;p&gt;交接后 SpotlightShell 可以结束，Terminal 会独立保留。若命令需要密码、键盘选择或其他输入，就在 Terminal 中完成。Spotlight 返回“已交接”只能说明命令送到了终端；实际是否完成、有没有报错，要看那个窗口。传输提示超时时，也先查看 Terminal，避免误以为没执行而重复运行。&lt;/p&gt;&#xA;&lt;h2 id=&#34;在快捷指令里保存常用检查&#34;&gt;在快捷指令里保存常用检查&#xA;&lt;/h2&gt;&lt;p&gt;经常执行同一条短命令时，可以在“快捷指令”中新建一个流程，加入 SpotlightShell 的 &lt;strong&gt;Run Shell Command&lt;/strong&gt;，填好命令、目录和运行模式，再接“显示结果”。例如只检查某个目录的文件列表，就不必每次都重新输入路径。先用只读、输出较短的操作熟悉流程，再加入自己的日常命令。&lt;/p&gt;&#xA;&lt;p&gt;不要只根据结果中有没有文字决定成功。&lt;code&gt;printf&lt;/code&gt; 可以输出信息后返回错误状态，一个没有输出的命令也可能正常完成。后续如果还要处理文件，先判断返回报告中的退出状态；后台超时或输出截断时，也要把它看作需要检查的结果。&lt;/p&gt;&#xA;&lt;p&gt;需要完整长日志的任务，直接交给 Terminal 更方便。后台模式适合“一次输入，短时间内取回一段结果”，而不是替代整个终端。把动作入口安排在 Spotlight，把持续交互留给 Terminal，日常操作会更清楚。&lt;/p&gt;&#xA;&lt;h2 id=&#34;为什么和自己终端里的表现不同&#34;&gt;为什么和自己终端里的表现不同&#xA;&lt;/h2&gt;&lt;p&gt;后台模式读取登录 Shell 配置，但不加载交互式 &lt;code&gt;.zshrc&lt;/code&gt;。只写在那里的别名、函数或 PATH 设置，可能无法使用；Terminal 模式则运行交互式登录 Shell。&lt;/p&gt;&#xA;&lt;p&gt;选择模式时只需先问自己：命令是否需要键盘输入或持续运行？需要就选 &lt;strong&gt;Terminal&lt;/strong&gt;；只想取得一段短结果，就选 &lt;strong&gt;Background&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;应用本身不上传命令，但 Spotlight、快捷指令、Terminal、Shell 历史和被调用程序，仍可能按各自规则保留信息。它也拥有当前账户能够执行的能力，提交前应理解命令内容。&lt;/p&gt;&#xA;&lt;p&gt;安装、签名、目录参数与输出限制见 &lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/SpotlightShell#readme&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;README&lt;/a&gt;。如果对快捷指令与原生应用配合的方式感兴趣，也可以看 &lt;a class=&#34;link&#34; href=&#34;https://jingyuan-zheng.github.io/zh/p/auto-filename-helper/&#34; &gt;Auto Filename Helper&lt;/a&gt;。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
