Taitava/obsidian-shellcommands

GitHub: Taitava/obsidian-shellcommands

为 Obsidian 插件,提供通过命令面板或热键执行本地 Shell 命令并回填笔记的能力。

Stars: 498 | Forks: 24

     ⏫ Remember to enable!
# Shell commands plugin for Obsidian 本插件允许你在设置中定义 shell/终端命令,并通过 Obsidian 的命令面板或快捷键快速运行它们。如果需要,可以将相关笔记变量作为命令的一部分使用,并将输出结果插入回笔记中。这是访问外部应用程序的瑞士军刀,而工具的定义权在你手中。 你可以使用内置变量自定义命令,这些变量可以提供当前文件的标题/名称/路径、当前文件父文件夹的名称/路径,以及带自定义格式的日期/时间戳。 [更改日志位于独立文件中。](https://github.com/Taitava/obsidian-shellcommands/blob/main/CHANGELOG.md) **警告:** 请小心使用系统命令!只使用你了解和信任的命令。如果从互联网或他人撰写的文件中复制粘贴命令,你必须完全理解其作用!否则,可能会丢失文件或破坏系统! Linux:**[如果你是通过 Flatpak 安装 Obsidian,shell 命令将在隔离环境中执行,这可能导致意外行为或错误信息。](https://github.com/Taitava/obsidian-shellcommands/discussions/225)** 请考虑其他安装选项。 **该插件仍处于早期开发阶段。** 请自行承担风险使用,并注意升级插件时可能出现兼容性问题。 **如果该插件对你的文件造成不良影响,它不提供任何担保!** 如果你会编程,[请查看 GitHub 上的源代码](https://github.com/Taitava/obsidian-shellcommands),以了解它如何执行命令。 ## 主要问题 - **Windows 与 PowerShell:非英文字符可能在输出中损坏。输入 _可能_ 正常。** 了解更多:[讨论 #157](https://github.com/Taitava/obsidian-shellcommands/discussions/157)。Linux 和 Mac 用户通常不会遇到此问题。 - `{{variable}}` 中的特殊字符会被转义(除非使用 CMD.EXE 作为 shell),但这**仍是实验性功能**。潜在的转义问题可能具有危险性。[关于变量值中转义特殊字符的文档](https://publish.obsidian.md/shellcommands/Variables/Escaping+special+characters+in+variable+values)。2022-03-11 更新:转义系统已使用数月,看起来运行良好。2022-06-10 更新:链接已更新,指向包含比 [问题 #11](https://github.com/Taitava/obsidian-shellcommands/issues/11) 更新信息的文档。 - **不支持移动端**,因为插件使用了 NodeJS 的 `child_process`,因此已标记为仅桌面端。目前没有计划研究其在移动端的可行性。如果你有线索,请在 GitHub 上发起讨论。 更多未来想法,请参见 [讨论区](https://github.com/Taitava/obsidian-shellcommands/discussions)。 ## 安装与使用 1. 在 Obsidian 的社区插件设置面板中搜索本插件。 2. 点击安装,之后**记得点击启用**! 3. 前往 *Shell commands* 设置标签页。 4. 所有命令将在特定目录中运行。默认情况下,它是你的 Vault 基础目录。如果希望在其他目录中运行命令,可以在 *Working directory* 字段中输入路径。 5. 通过点击 *New command* 按钮定义一个或多个命令并输入命令。如果需要,请阅读设置面板中的变量使用说明。 6. 对于高级设置,例如在命令面板中显示的别名,或将命令输出定向到当前活动笔记的功能,请点击 Shell 命令旁边的齿轮图标。 7. 你定义的所有命令都会被添加到 Obsidian 的命令面板中。你可以在其中执行它们(通过按 `Ctrl/Cmd + P` 并搜索命令),也可以在 Obsidian 的快捷键设置中为每个命令单独定义快捷键。 ## 详细文档 ... 可在此处获取:https://publish.obsidian.md/shellcommands ## 使用示例 示例 shell 命令已移至:https://publish.obsidian.md/shellcommands/Example+shell+commands/Example+shell+commands ## 转义变量值中的特殊字符 (待办:确认文档是否包含全部内容,然后从此 README.md 中移除本节。) 请注意,特殊字符(= 字母、数字和下划线 `_` 以外的字符)在变量值中会被自动转义。转义方式取决于你使用的 shell,但通常每个特殊字符都会前缀一个转义字符,可能是 `\`、`` ` `` 或 `%`,具体取决于 shell。 **不进行转义**:如果命令和带引号的字符串参数如 `mycommand {{clipboard}}`,而剪贴板内容包含 `>` 字符,这些字符会原样插入命令中,导致命令可能变成 `mycommand Text pasted from clipboard that contains a > character.`。`>` 字符会将输出重定向到文件并可能覆盖重要文件。这就是转义存在的原因,使上述命令变为:`mycommand\ Text\ pasted\ from\ clipboard\ that\ contains\ a\ \>\ character\.`(当 shell 为 Bash 时)。你的 shell 会解析转义后的特殊字符,并将其作为普通字母而非特殊字符处理。 如果你希望避免在变量值中转义特殊字符,可以使用 `{{!variable}}` 语法,即在变量名前添加感叹号 `!`。请注意这可能存在危险,如果你使用这种未转义的原始变量值,必须非常清楚自己在做什么。在大多数情况下,你应该能够很好地使用转义变量。 ## 从其他插件中获益 没有哪个插件能单独做到完美,也没有哪个插件适合所有场景。在这里,我收集了一份可以作为 *Shell commands* 的好伙伴或替代品的插件列表。 - **[Advanced URI](https://github.com/Vinzent03/obsidian-advanced-uri)**:你可以用它打开其他 Vault、切换工作区(无需图形界面),以及向笔记追加内容等。例如在 Windows 上使用 shell 命令将剪贴板内容插入笔记:`start "" obsidian://advanced-uri?vault=Vault_name&filepath=Filename.md&data={{clipboard}}&mode=append`。另一种方式是不使用 *Advanced URI*,而是使用类似 `echo {{clipboard}} >> Filename.md`(在 Windows 上)的命令。 - **[cMenu](https://github.com/chetachiezikeuzor/cMenu-Plugin)**:当你选择文本时,该插件会打开一个包含文本格式和其他操作的小弹窗。你也可以在其中添加 shell 命令! - **[Customizable Sidebar](https://github.com/phibr0/obsidian-customizable-sidebar)**:允许你添加新的左侧菜单图标,以触发任意 Obsidian 命令——包括 shell 命令! - **[QuickAdd](https://github.com/chhoumann/quickadd)**:你可以创建宏来同时启动多个命令。诚然,在 *Shell commands* 中,你可以通过 `&&`(Linux 和 Mac)或 `&`(Windows)将多个终端命令串联执行,但 *QuickAdd* 允许你将 shell 命令与其他 Obsidian 命令组合成宏。 - **[Text Expander](https://github.com/konodyuk/obsidian-text-expander)**:如果你想在 Markdown 笔记中编写代码块并执行它们,那么 *Text Expander* 就是解决方案。*Shell commands* 专注于通过热键将简短、很少更改的终端命令置于指尖。你可以编写较长的脚本并通过 shell/batch 文件使用 *Shell commands* 执行,但如果你需要查看脚本内容或频繁修改,*Shell commands* 并非最优选择,此时你可能更受益于 *Text Expander*。当然,两者可以同时使用。 (感谢 [FelipeRearden](https://github.com/FelipeRearden) 分享这些插件!) ## 已测试平台 以下是该插件已测试过的操作系统列表,包含 Obsidian 版本和插件版本(= SC,Shell commands)。 | Shell commands version | Windows 10 | Linux (Xubuntu 22.04) | Mac | | --------------------| ---------- | --------------------- | --- | | SC 0.23.0 | Obsidian 1.7.5
Works | Obsidian 1.7.5
Works | | | SC 0.22.0 | Obsidian 1.5.12
Works | Obsidian 1.5.12
Works | | | SC 0.21.0 | Obsidian 1.5.3
Works | Obsidian 1.5.3
Works | | | SC 0.20.1 | Obsidian 1.3.5
Works | Obsidian 1.3.7
Works | | | SC 0.20.0 | Obsidian 1.3.5
Works | Obsidian 1.3.5
Works | | | SC 0.19.1 | Obsidian 1.3.4
Works | Obsidian 1.3.4
Works | | | SC 0.19.0 | Obsidian 1.3.4
Works | Obsidian 1.3.4
Works | | Linux 版本已从 Xubuntu 20.04 变更为 22.04。 | Shell commands version | Windows 10 | Linux (Xubuntu 20.04) | Mac | | ----------------------| ---------- | --------------------- | --- | | SC 0.182 | Obsidian 1.1.16
Works | Obsidian 1.1.16
Works | | | SC 0.18.1 | Obsidian 1.1.12
Works | Obsidian 1.1.12
Works | Obsidian 1.1.12
Tested that [fix #314](https://github.com/Taitava/obsidian-shellcommands/issues/314) works. | | SC 0.18.0 | Obsidian 1.1.9
Works | Obsidian 1.1.9
Works | | | SC 0.17.0 | Obsidian 1.0.3
Works | Obsidian 1.0.3
[Works otherwise but there's the already reported newline bug](https://github.com/Taitava/obsidian-shellcommands/discussions/250#discussioncomment-4243529). | | | SC 0.16.0 | Obsidian 0.16.3
Works | Obsidian 0.16.3
Works | | | SC 0.15.0 | Obsidian 0.15.9
Works | Obsidian 0.15.9
Works | | | SC 0.14.0 | Obsidian 0.15.6
Works | Obsidian 0.15.6
Works | macOS: Monterey 12.4 (21F79)
Obsidian: 0.15.9
[Works otherwise but there's a newline bug](https://github.com/Taitava/obsidian-shellcommands/issues/1#issuecomment-1197307219). Tested by [gapmiss](https://github.com/gapmiss), thank you! 🙂 | | SC 0.13.0 | Obsidian 0.14.15
Works | Obsidian 0.14.15
Works | | | SC 0.12.1 | Obsidian 0.14.6
Works | Obsidian 0.14.6
Works | | | SC 0.12.0 | Obsidian 0.14.6
Works | Obsidian 0.14.6
Works | | | SC 0.11.1 | Obsidian 0.13.23
Works | Obsidian 0.13.23
Works | | | SC 0.11.0 | Obsidian 0.13.23
Works | Obsidian 0.13.23
Works | macOS: 11.6
Obsidian: ?
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.10.0 | Obsidian 0.13.23
Works | Obsidian 0.13.23
Works | macOS: 11.6
Obsidian: ?
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.9.0 | Obsidian 0.12.19
Works | Obsidian 0.12.19
Works | | | SC 0.8.0 | Obsidian 0.12.19
Works | Obsidian 0.12.19
Works | macOS: 11.6
Obsidian: 0.12.19
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.7.1 | Obsidian 0.12.19
Works | Obsidian 0.12.19
Works | | | SC 0.7.0 | Obsidian 0.12.19
Works | Obsidian 0.12.19
Works | macOS: 11.6
Obsidian: 0.12.19
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.6.1 | Obsidian 0.12.19
Works | Obsidian 0.12.19
Works | | | SC 0.6.0 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | macOS: 11.1
Obsidian: 0.12.15
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.5.1 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | | | SC 0.5.0 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | macOS: 11.1
Obsidian: 0.12.15
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.4.1 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | macOS: 11.1
Obsidian: 0.12.15
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.4.0 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | | | SC 0.3.0 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | macOS: 11.1
Obsidian: 0.12.15
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.2.0 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | macOS: 11.1
Obsidian: 0.12.15
Works, tested by [FelipeRearden](https://github.com/FelipeRearden), thank you! 🙂 | | SC 0.1.1 | Obsidian 0.12.15
Works | Obsidian 0.12.15
Works | | | SC 0.0.0 | Obsidian 0.12.12
Works | Obsidian 0.12.12
Works | | 由于我未使用 Mac 进行测试,Mac 上的测试由其他人完成,无法保证每个版本都已测试。如果某个最新 SC 版本在表中没有 Mac 测试记录,你可以自行 [进行测试并提交结果](https://github.com/Taitava/obsidian-shellcommands/issues/1)。 ## 寻求帮助 如果你有任何关于如何使用本插件的问题,请随时在 [GitHub 上发起讨论](https://github.com/Taitava/obsidian-shellcommands/discussions/categories/q-a),或 [在插件的 Obsidian.md 论坛主题中发帖](https://forum.obsidian.md/t/shell-commands-plugin/23497)。 ## 贡献 欢迎提出想法、反馈和拉取请求!😀 - 对于功能请求,请在“想法”类别中启动 [新讨论](https://github.com/Taitava/obsidian-shellcommands/discussions)。 - 如果你要创建拉取请求,请先讨论你的想法,以避免你花费时间开发最终会以不同方式实现或根本不实现的功能。代码库中可能正在进行重构,在此期间等待重构完成后再创建 PR 可能更明智,否则你可能基于旧代码库工作,需要在重构完成后更新你的 PR。因此,请在创建 PR 前先询问,我可以告诉你是否需要等待。😊 ## 作者 所有作者请参见 [AUTHORS.md](https://github.com/Taitava/obsidian-shellcommands/blob/main/AUTHORS.md)。 ### 开发者 Jarkko Linnanvirta 联系方式: - https://github.com/Taitava - https://forum.obsidian.md/u/jare/ ## 支持者 ### Obsidian [Obsidian](https://obsidian.md) 开发者为该项目提供了支持: - [Obsidian Publish](https://obsidian.md/publish) 服务,用于在熟悉许多 Obsidian 用户的平台上托管 [_Shell commands_ 插件的文档](https://publish.obsidian.md/shellcommands)。 - [Catalyst 许可证](https://help.obsidian.md/Licenses+%26+Payment/Catalyst+license),让我测试插件的早期访问版本。 ## 版权 Copyright (C) 2021 - 2025 Jarkko Linnanvirta(请参见 [AUTHORS.md](https://github.com/Taitava/obsidian-shellcommands/blob/main/AUTHORS.md) 中的其他作者)。 本程序是自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,版本为 3。 本程序的分发希望它有用,但没有任何担保;甚至没有隐含的适销性或特定用途适用性的担保。详情请参见 [GNU General Public License](https://www.gnu.org/licenses/)。 你应该已经收到了一份 GNU General Public License 的副本。如果没有,请参见 。 [本项目的完整许可证位于 GitHub 仓库中](https://github.com/Taitava/obsidian-shellcommands/blob/main/LICENSE)。
标签:Cutter, IPv6, MITM代理, Obsidian 插件, PowerShell, SEO: Obsidian Shell Commands, SEO: 插件推荐, Shell 命令, SOC Prime, URI 链接, 变量模板, 命令调色板, 开发工具, 扁平化安装, 文件路径, 日期时间, 热键, 生产力, 社区插件, 系统命令执行, 网络调试, 自动化, 自定义脚本, 输出插入