Obsidian CLI 是一個命令列介面,可讓你從終端機控制 Obsidian,用於腳本撰寫、自動化以及與外部工具整合。
任何你能在 Obsidian 中完成的操作,都能透過命令列完成。Obsidian CLI 甚至包含[[#開發者命令|開發者命令]],可存取開發者工具、檢查元素、擷取截圖、重新載入外掛程式等。
![[obsidian-cli.mp4#interface]]
> [!warning] 需要 Obsidian 1.12 安裝程式
> 使用 CLI 需要 Obsidian 1.12 安裝程式。請參閱[[更新 Obsidian#安裝程式更新|安裝程式版本更新指南]]。
## 安裝 Obsidian CLI
升級至最新的 [[更新 Obsidian|Obsidian 安裝程式版本]](1.12.7+)。
在 Obsidian 中啟用 Obsidian CLI:
1. 前往**設定** → **一般**。
2. 啟用**命令列介面**。
3. 依照提示註冊 Obsidian CLI。
如果安裝 Obsidian CLI 時遇到問題,請參閱[[#疑難排解]]。
## 開始使用
Obsidian CLI 同時支援單一命令和終端機使用者介面(TUI),後者提供互動式說明和自動完成功能。
> [!info] Obsidian 應用程式必須正在執行
> Obsidian CLI 需要 Obsidian 應用程式正在執行。如果 Obsidian 未在執行,你執行的第一個命令會啟動 Obsidian。
>
> 想要在沒有桌面應用程式的情況下同步嗎?請參閱 [[Obsidian Headless|Obsidian Headless]]。
### 執行命令
執行單一命令而不開啟 TUI:
```shell
# 執行說明命令
obsidian help
```
### 使用終端機介面
輸入 `obsidian` 使用 TUI。後續命令無需再加上 `obsidian`。
```shell
# 開啟 TUI,然後執行 help
obsidian
help
```
TUI 支援自動完成、命令歷史和反向搜尋。使用 `Ctrl+R` 搜尋你的命令歷史。所有可用快捷鍵請參閱[[#鍵盤快捷鍵]]。
## 範例
以下是 Obsidian CLI 可以做到的一些範例。
### 日常使用
```shell
# 開啟今天的每日筆記
obsidian daily
# 在每日筆記中新增任務
obsidian daily:append content="- [ ] Buy groceries"
# 搜尋你的保管庫
obsidian search query="meeting notes"
# 讀取目前檔案
obsidian read
# 列出每日筆記中的所有任務
obsidian tasks daily
# 從範本建立新筆記
obsidian create name="Trip to Paris" template=Travel
# 列出保管庫中所有標籤及其數量
obsidian tags counts
# 比較檔案的兩個版本
obsidian diff file=README from=1 to=3
```
### 開發者用途
許多[[#開發者命令]]可用於外掛程式和主題開發。這些命令允許代理式程式撰寫工具自動測試和除錯。
```shell
# 開啟開發者工具
obsidian devtools
# 重新載入你正在開發的社群外掛程式
obsidian plugin:reload id=my-plugin
# 擷取應用程式截圖
obsidian dev:screenshot path=screenshot.png
# 在應用程式主控台中執行 JavaScript
obsidian eval code="app.vault.getFiles().length"
```
## 操作方式
### 使用參數和旗標
命令可以使用**參數**和**旗標**。大多數命令不需要任何參數或旗標。必要參數會標記為 `required`。例如:
```shell
# 使用預設的「未命名」名稱建立新筆記
obsidian create
```
**參數**接受一個值,寫法為 `parameter=value`。如果值包含空格,請用引號包裹:
```shell
# 建立名為「Note」且內容為「Hello world」的新筆記
obsidian create name=Note content="Hello world"
```
**旗標**是不帶值的布林開關。加入即表示開啟,例如 `open` 和 `overwrite` 是旗標:
```shell
# 建立筆記並開啟它
obsidian create name=Note content="Hello" open overwrite
```
對於多行內容,使用 `\n` 表示換行。使用 `\t` 表示定位字元。
```bash
obsidian create name=Note content="# Title\n\nBody text"
```
### 指定保管庫
如果你的終端機目前工作目錄是保管庫資料夾,則預設使用該保管庫。否則,使用目前啟用的保管庫。
使用 `vault=<name>` 或 `vault=<id>` 指定特定保管庫。此參數必須放在命令之前:
```shell
obsidian vault=Notes daily
obsidian vault="My Vault" search query="test"
```
在 TUI 中,使用 `vault:open <name>` 或 `<id>` 切換到不同的保管庫。
### 指定檔案
許多命令接受 `file` 和 `path` 參數來指定特定檔案。如果兩者都未提供,命令預設使用目前啟用的檔案。
- `file=<name>` 使用與 [[內部連結|Wiki 連結]]相同的連結解析方式,依檔案名稱比對,不需要完整路徑或副檔名。
- `path=<path>` 需要從保管庫根目錄開始的完整路徑,例如 `folder/note.md`。
```shell
# 如果「Recipe.md」是唯一具有該名稱的檔案,以下兩者等效
obsidian read file=Recipe
obsidian read path="Templates/Recipe.md"
```
### 複製輸出
在任何命令後加上 `--copy` 可將輸出複製到剪貼簿:
```shell
read --copy
search query="TODO" --copy
```
## 一般命令
### `help`
顯示所有可用命令的清單。
| 參數 | 說明 |
| ----------- | --------------------------------- |
| `<command>` | 顯示特定命令的說明。 |
### `version`
顯示 Obsidian 版本。
### `reload`
重新載入應用程式視窗。
### `restart`
重新啟動應用程式。
## 資料庫
[[資料庫介紹|資料庫]]相關命令。
### `bases`
列出保管庫中所有 `.base` 檔案。
### `base:views`
列出目前資料庫檔案中的檢視。
### `base:create`
在資料庫中建立新項目。若未指定檔案,預設使用目前啟用的資料庫檢視。
```bash
file=<name> # 資料庫檔案名稱
path=<path> # 資料庫檔案路徑
view=<name> # 檢視名稱
name=<name> # 新檔案名稱
content=<text> # 初始內容
open # 建立後開啟檔案
newtab # 在新分頁開啟
```
### `base:query`
查詢資料庫並傳回結果。
```bash
file=<name> # 資料庫檔案名稱
path=<path> # 資料庫檔案路徑
view=<name> # 要查詢的檢視名稱
format=json|csv|tsv|md|paths # 輸出格式(預設:json)
```
## 書籤
[[書籤]]相關命令。
### `bookmarks`
列出書籤。
```bash
total # 傳回書籤數量
verbose # 包含書籤類型
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `bookmark`
新增書籤。
```bash
file=<path> # 要加入書籤的檔案
subpath=<subpath> # 檔案內的子路徑(標題或區塊)
folder=<path> # 要加入書籤的資料夾
search=<query> # 要加入書籤的搜尋查詢
url=<url> # 要加入書籤的 URL
title=<title> # 書籤標題
```
## 命令面板
[[命令面板]]和[[快速鍵]]相關命令。包含所有由外掛程式註冊的命令。
### `commands`
列出可用的命令 ID。
```bash
filter=<prefix> # 依 ID 前綴篩選
```
### `command`
執行 Obsidian 命令。
```bash
id=<command-id> # (必要)要執行的命令 ID
```
### `hotkeys`
列出所有命令的快捷鍵。
```bash
total # 傳回快捷鍵數量
verbose # 顯示快捷鍵是否為自訂
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `hotkey`
取得命令的快捷鍵。
```bash
id=<command-id> # (必要)命令 ID
verbose # 顯示是自訂或預設
```
## 每日筆記
[[每日筆記]]相關命令。
### `daily`
開啟每日筆記。
```bash
paneType=tab|split|window # 開啟的面板類型
```
### `daily:path`
取得每日筆記路徑。即使檔案尚未建立,也會傳回預期路徑。
### `daily:read`
讀取每日筆記內容。
### `daily:append`
在每日筆記末尾附加內容。
```bash
content=<text> # (必要)要附加的內容
paneType=tab|split|window # 開啟的面板類型
inline # 不換行附加
open # 新增後開啟檔案
```
### `daily:prepend`
在每日筆記開頭插入內容。
```bash
content=<text> # (必要)要插入的內容
paneType=tab|split|window # 開啟的面板類型
inline # 不換行插入
open # 新增後開啟檔案
```
## 檔案歷史
### `diff`
列出或比較本機[[檔案還原]]和 [[Obsidian Sync 簡介|Sync]] 的版本。版本從最新到最舊編號。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
from=<n> # 要比較的起始版本號
to=<n> # 要比較的目標版本號
filter=local|sync # 依版本來源篩選
```
**範例:**
```shell
# 列出目前檔案的所有版本
diff
# 列出特定檔案的所有版本
diff file=Recipe
# 比較最新版本與目前檔案
diff file=Recipe from=1
# 比較兩個版本
diff file=Recipe from=2 to=1
# 僅顯示 Sync 版本
diff filter=sync
```
### `history`
僅列出[[檔案還原]]的版本。Sync 的對應命令請參閱 [[#Sync|sync:history]]。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `history:list`
列出所有具有本機歷史的檔案。
### `history:read`
讀取本機歷史版本。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
version=<n> # 版本號(預設:1)
```
### `history:restore`
還原本機歷史版本。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
version=<n> # (必要)版本號
```
### `history:open`
開啟檔案還原。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
## 檔案和資料夾
### `file`
顯示檔案資訊(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
範例:
```
path Notes/Recipe.md
name Recipe
extension md
size 1024
created 1700000000000
modified 1700001000000
```
### `files`
列出保管庫中的檔案。
```bash
folder=<path> # 依資料夾篩選
ext=<extension> # 依副檔名篩選
total # 傳回檔案數量
```
### `folder`
顯示資料夾資訊。
```bash
path=<path> # (必要)資料夾路徑
info=files|folders|size # 僅傳回特定資訊
```
### `folders`
列出保管庫中的資料夾。
```bash
folder=<path> # 依上層資料夾篩選
total # 傳回資料夾數量
```
### `open`
開啟檔案。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
newtab # 在新分頁開啟
```
### `create`
建立或覆寫檔案。
```bash
name=<name> # 檔案名稱
path=<path> # 檔案路徑
content=<text> # 初始內容
template=<name> # 使用的範本
overwrite # 若檔案存在則覆寫
open # 建立後開啟檔案
newtab # 在新分頁開啟
```
### `read`
讀取檔案內容(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `append`
在檔案末尾附加內容(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
content=<text> # (必要)要附加的內容
inline # 不換行附加
```
### `prepend`
在前置中繼資料之後插入內容(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
content=<text> # (必要)要插入的內容
inline # 不換行插入
```
### `move`
移動或重新命名檔案(預設:目前啟用的檔案)。如果在你的[[設定#始終更新內部連結|保管庫設定]]中已開啟,這會自動更新[[內部連結]]。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
to=<path> # (必要)目標資料夾或路徑
```
### `rename`
重新命名檔案(預設:目前啟用的檔案)。如果新名稱省略副檔名,會自動保留原有副檔名。使用 [[#`move`|move]] 同時重新命名和移動檔案。如果在你的[[設定#始終更新內部連結|保管庫設定]]中已開啟,這會自動更新[[內部連結]]。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
name=<name> # (必要)新檔案名稱
```
### `delete`
刪除檔案(預設:目前啟用的檔案,預設移至垃圾桶)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
permanent # 跳過垃圾桶,永久刪除
```
## 連結
[[反向連結]]和[[對外連結]]相關命令。
### `backlinks`
列出檔案的反向連結(預設:目前啟用的檔案)。
```bash
file=<name> # 目標檔案名稱
path=<path> # 目標檔案路徑
counts # 包含連結數量
total # 傳回反向連結數量
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `links`
列出檔案的對外連結(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
total # 傳回連結數量
```
### `unresolved`
列出保管庫中未解析的連結。
```bash
total # 傳回未解析連結數量
counts # 包含連結數量
verbose # 包含來源檔案
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `orphans`
列出沒有對內連結的檔案。
```bash
total # 傳回孤立連結數量
```
### `deadends`
列出沒有對外連結的檔案。
```bash
total # 傳回死路數量
```
## 大綱
[[大綱]]相關命令。
### `outline`
顯示目前檔案的標題。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
format=tree|md|json # 輸出格式(預設:tree)
total # 傳回標題數量
```
## 外掛程式
[[核心外掛程式]]和[[社群外掛程式]]相關命令。
### `plugins`
列出已安裝的外掛程式。
```bash
filter=core|community # 依外掛程式類型篩選
versions # 包含版本號
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `plugins:enabled`
列出已啟用的外掛程式。
```bash
filter=core|community # 依外掛程式類型篩選
versions # 包含版本號
format=json|tsv|csv # 輸出格式(預設:tsv)
```
### `plugins:restrict`
切換或檢查受限模式。
```bash
on # 啟用受限模式
off # 停用受限模式
```
### `plugin`
取得外掛程式資訊。
```bash
id=<plugin-id> # (必要)外掛程式 ID
```
### `plugin:enable`
啟用外掛程式。
```bash
id=<id> # (必要)外掛程式 ID
filter=core|community # 外掛程式類型
```
### `plugin:disable`
停用外掛程式。
```bash
id=<id> # (必要)外掛程式 ID
filter=core|community # 外掛程式類型
```
### `plugin:install`
安裝社群外掛程式。
```bash
id=<id> # (必要)外掛程式 ID
enable # 安裝後啟用
```
### `plugin:uninstall`
移除安裝社群外掛程式。
```bash
id=<id> # (必要)外掛程式 ID
```
### `plugin:reload`
重新載入外掛程式(供開發者使用)。
```bash
id=<id> # (必要)外掛程式 ID
```
## 屬性
[[屬性]]相關命令。
### `aliases`
列出保管庫中的別名。使用 `active` 或 `file`/`path` 顯示特定檔案的別名。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
total # 傳回別名數量
verbose # 包含檔案路徑
active # 顯示目前檔案的別名
```
### `properties`
列出保管庫中的屬性。使用 `active` 或 `file`/`path` 顯示特定檔案的屬性。
```bash
file=<name> # 顯示檔案的屬性
path=<path> # 顯示路徑的屬性
name=<name> # 取得特定屬性的數量
sort=count # 依數量排序(預設:name)
format=yaml|json|tsv # 輸出格式(預設:yaml)
total # 傳回屬性數量
counts # 包含出現次數
active # 顯示目前檔案的屬性
```
### `property:set`
設定檔案的屬性(預設:目前啟用的檔案)。
```bash
name=<name> # (必要)屬性名稱
value=<value> # (必要)屬性值
type=text|list|number|checkbox|date|datetime # 屬性類型
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `property:remove`
從檔案移除屬性(預設:目前啟用的檔案)。
```bash
name=<name> # (必要)屬性名稱
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `property:read`
從檔案讀取屬性值(預設:目前啟用的檔案)。
```bash
name=<name> # (必要)屬性名稱
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
## Publish
[[Obsidian Publish 介紹|Obsidian Publish]] 相關命令。
### `publish:site`
顯示發佈網站資訊(slug、URL)。
### `publish:list`
列出已發佈的檔案。
```bash
total # 傳回已發佈檔案數量
```
### `publish:status`
列出發佈變更。
```bash
total # 傳回變更數量
new # 僅顯示新檔案
changed # 僅顯示已變更檔案
deleted # 僅顯示已刪除檔案
```
### `publish:add`
發佈檔案或所有已變更的檔案(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
changed # 發佈所有已變更的檔案
```
### `publish:remove`
取消發佈檔案(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `publish:open`
在已發佈的網站上開啟檔案(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
## 漫遊筆記
[[漫遊筆記]]相關命令。
### `random`
開啟一則隨機筆記。
```bash
folder=<path> # 限制在特定資料夾
newtab # 在新分頁開啟
```
### `random:read`
讀取一則隨機筆記(包含路徑)。
```bash
folder=<path> # 限制在特定資料夾
```
## 搜尋
[[搜尋]]相關命令。
### `search`
搜尋保管庫中的文字。傳回匹配的檔案路徑。
```bash
query=<text> # (必要)搜尋查詢
path=<folder> # 限制在特定資料夾
limit=<n> # 最大檔案數
format=text|json # 輸出格式(預設:text)
total # 傳回匹配數量
case # 區分大小寫
```
### `search:context`
搜尋並顯示匹配行的上下文。傳回 grep 風格的 `path:line: text` 輸出。
```bash
query=<text> # (必要)搜尋查詢
path=<folder> # 限制在特定資料夾
limit=<n> # 最大檔案數
format=text|json # 輸出格式(預設:text)
case # 區分大小寫
```
### `search:open`
開啟搜尋檢視。
```bash
query=<text> # 初始搜尋查詢
```
## Sync
[[Obsidian Sync 簡介|Obsidian Sync]] 相關命令。
> [!tip] 在沒有桌面應用程式的情況下同步
> 這些命令控制執行中的 Obsidian 應用程式內的 Sync。若要在不使用桌面應用程式的情況下從命令列同步保管庫,請參閱[[無介面 Sync]]。
### `sync`
暫停或繼續同步。
```bash
on # 繼續同步
off # 暫停同步
```
### `sync:status`
顯示同步狀態和使用量。
### `sync:history`
列出檔案的同步版本歷史(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
total # 傳回版本數量
```
### `sync:read`
讀取同步版本(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
version=<n> # (必要)版本號
```
### `sync:restore`
還原同步版本(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
version=<n> # (必要)版本號
```
### `sync:open`
開啟同步歷史(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
```
### `sync:deleted`
列出同步中已刪除的檔案。
```bash
total # 傳回已刪除檔案數量
```
## 標籤
[[標籤]]相關命令。
### `tags`
列出保管庫中的標籤。使用 `active` 或 `file`/`path` 顯示特定檔案的標籤。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
sort=count # 依數量排序(預設:name)
total # 傳回標籤數量
counts # 包含標籤數量
format=json|tsv|csv # 輸出格式(預設:tsv)
active # 顯示目前檔案的標籤
```
### `tag`
取得標籤資訊。
```bash
name=<tag> # (必要)標籤名稱
total # 傳回出現次數
verbose # 包含檔案清單和數量
```
## 任務
任務管理相關命令。
### `tasks`
列出保管庫中的任務。使用 `active` 或 `file`/`path` 顯示特定檔案的任務。
```bash
file=<name> # 依檔案名稱篩選
path=<path> # 依檔案路徑篩選
status="<char>" # 依狀態字元篩選
total # 傳回任務數量
done # 顯示已完成的任務
todo # 顯示未完成的任務
verbose # 依檔案分組並顯示行號
format=json|tsv|csv # 輸出格式(預設:text)
active # 顯示目前檔案的任務
daily # 顯示每日筆記的任務
```
**範例:**
```bash
# 列出保管庫中的所有任務
tasks
# 列出保管庫中未完成的任務
tasks todo
# 列出特定檔案的已完成任務
tasks file=Recipe done
# 列出今天每日筆記的任務
tasks daily
# 計算每日筆記中的任務數量
tasks daily total
# 列出任務並顯示檔案路徑和行號
tasks verbose
# 依自訂狀態篩選(特殊字元需引號)
tasks 'status=?'
```
### `task`
顯示或更新任務。
```bash
ref=<path:line> # 任務參照(path:line)
file=<name> # 檔案名稱
path=<path> # 檔案路徑
line=<n> # 行號
status="<char>" # 設定狀態字元
toggle # 切換任務狀態
daily # 每日筆記
done # 標記為完成
todo # 標記為待辦
```
**範例:**
```bash
# 顯示任務資訊
task file=Recipe line=8
task ref="Recipe.md:8"
# 切換任務完成狀態
task ref="Recipe.md:8" toggle
# 切換每日筆記中的任務
task daily line=3 toggle
# 設定任務狀態
task file=Recipe line=8 done # → [x]
task file=Recipe line=8 todo # → [ ]
task file=Recipe line=8 status=- # → [-]
task daily line=3 done # 將每日筆記任務標記為完成
```
## 範本
[[模板|範本]]相關命令。
### `templates`
列出範本。
```bash
total # 傳回範本數量
```
### `template:read`
讀取範本內容。
```bash
name=<template> # (必要)範本名稱
title=<title> # 用於變數解析的標題
resolve # 解析範本變數
```
### `template:insert`
將範本插入目前啟用的檔案。
```bash
name=<template> # (必要)範本名稱
```
**說明:**
- `resolve` 選項會處理 `{{date}}`、`{{time}}`、`{{title}}` 變數
- 使用 `create path=<path> template=<name>` 從範本建立檔案
## 主題和程式碼片段
[[佈景主題]]和 [[CSS 片段]]相關命令。
### `themes`
列出已安裝的主題。
```bash
versions # 包含版本號
```
### `theme`
顯示目前啟用的主題或取得資訊。
```bash
name=<name> # 要查看詳情的主題名稱
```
### `theme:set`
設定啟用的主題。
```bash
name=<name> # (必要)主題名稱(留空表示預設)
```
### `theme:install`
安裝社群主題。
```bash
name=<name> # (必要)主題名稱
enable # 安裝後啟用
```
### `theme:uninstall`
移除安裝主題。
```bash
name=<name> # (必要)主題名稱
```
### `snippets`
列出已安裝的 CSS 片段。
### `snippets:enabled`
列出已啟用的 CSS 片段。
### `snippet:enable`
啟用 CSS 片段。
```bash
name=<name> # (必要)片段名稱
```
### `snippet:disable`
停用 CSS 片段。
```bash
name=<name> # (必要)片段名稱
```
## 唯一筆記
[[唯一筆記建立工具]]相關命令。
### `unique`
建立唯一筆記。
```bash
name=<text> # 筆記名稱
content=<text> # 初始內容
paneType=tab|split|window # 開啟的面板類型
open # 建立後開啟檔案
```
## 保管庫
### `vault`
顯示保管庫資訊。
```bash
info=name|path|files|folders|size # 僅傳回特定資訊
```
### `vaults`
列出已知的保管庫。
```bash
total # 傳回保管庫數量
verbose # 包含保管庫路徑
```
### `vault:open`
切換到不同的保管庫(僅限 TUI)。
```bash
name=<name> # (必要)保管庫名稱
```
## 網頁檢視器
[[網頁檢視器]]相關命令。
### `web`
在網頁檢視器中開啟 URL。
```bash
url=<url> # (必要)要開啟的 URL
newtab # 在新分頁開啟
```
## 字數統計
[[字數統計]]相關命令。
### `wordcount`
統計字數和字元數(預設:目前啟用的檔案)。
```bash
file=<name> # 檔案名稱
path=<path> # 檔案路徑
words # 僅傳回字數
characters # 僅傳回字元數
```
## 工作區
[[工作區]]和[[工作區]]外掛程式相關命令。
### `workspace`
顯示工作區樹狀結構。
```bash
ids # 包含工作區項目 ID
```
### `workspaces`
列出已儲存的工作區。
```bash
total # 傳回工作區數量
```
### `workspace:save`
將目前佈局儲存為工作區。
```bash
name=<name> # 工作區名稱
```
### `workspace:load`
載入已儲存的工作區。
```bash
name=<name> # (必要)工作區名稱
```
### `workspace:delete`
刪除已儲存的工作區。
```bash
name=<name> # (必要)工作區名稱
```
### `tabs`
列出已開啟的分頁。
```bash
ids # 包含分頁 ID
```
### `tab:open`
開啟新分頁。
```bash
group=<id> # 分頁群組 ID
file=<path> # 要開啟的檔案
view=<type> # 要開啟的檢視類型
```
### `recents`
列出最近開啟的檔案。
```bash
total # 傳回最近檔案數量
```
## 開發者命令
協助你開發[[社群外掛程式]]和[[佈景主題]]的命令。前往 [Obsidian 開發者文件](https://docs.obsidian.md)深入了解。
### `devtools`
切換 Electron 開發者工具。
### `dev:debug`
附加/分離 Chrome DevTools Protocol 除錯器。
```bash
on # 附加除錯器
off # 分離除錯器
```
### `dev:cdp`
執行 Chrome DevTools Protocol 命令。
```bash
method=<CDP.method> # (必要)要呼叫的 CDP 方法
params=<json> # JSON 格式的方法參數
```
### `dev:errors`
顯示擷取的 JavaScript 錯誤。
```bash
clear # 清空錯誤緩衝區
```
### `dev:screenshot`
擷取截圖(傳回 base64 PNG)。
```bash
path=<filename> # 輸出檔案路徑
```
### `dev:console`
顯示擷取的主控台訊息。
```bash
limit=<n> # 最大訊息數量(預設 50)
level=log|warn|error|info|debug # 依日誌層級篩選
clear # 清空主控台緩衝區
```
### `dev:css`
檢查 CSS 及其來源位置。
```bash
selector=<css> # (必要)CSS 選擇器
prop=<name> # 依屬性名稱篩選
```
### `dev:dom`
查詢 DOM 元素。
```bash
selector=<css> # (必要)CSS 選擇器
attr=<name> # 取得屬性值
css=<prop> # 取得 CSS 屬性值
total # 傳回元素數量
text # 傳回文字內容
inner # 傳回 innerHTML 而非 outerHTML
all # 傳回所有匹配而非第一個
```
### `dev:mobile`
切換行動裝置模擬。
```bash
on # 啟用行動裝置模擬
off # 停用行動裝置模擬
```
### `eval`
執行 JavaScript 並傳回結果。
```bash
code=<javascript> # (必要)要執行的 JavaScript 程式碼
```
## 鍵盤快捷鍵
以下快捷鍵可在[[#使用終端機介面|TUI]]中使用。
### 導覽
| 動作 | 快捷鍵 |
| ----------------------------------------------------- | -------------- |
| 游標左移 | `←` / `Ctrl+B` |
| 游標右移(在行尾時接受建議) | `→` / `Ctrl+F` |
| 跳到行首 | `Ctrl+A` |
| 跳到行尾 | `Ctrl+E` |
| 往前移一個字 | `Alt+B` |
| 往後移一個字 | `Alt+F` |
### 編輯
| 動作 | 快捷鍵 |
| ----------------------- | -------------------------- |
| 刪除到行首 | `Ctrl+U` |
| 刪除到行尾 | `Ctrl+K` |
| 刪除前一個字 | `Ctrl+W` / `Alt+Backspace` |
### 自動完成
| 動作 | 快捷鍵 |
| -------------------------------------------------- | ----------- |
| 進入建議模式 / 接受選取的建議 | `Tab` |
| 離開建議模式 | `Shift+Tab` |
| 進入建議模式(從新輸入開始) | `↓` |
| 接受第一個/選取的建議(在行尾時) | `→` |
### 歷史
| 動作 | 快捷鍵 |
| ---------------------------------------------------------- | -------------- |
| 上一筆歷史記錄 / 向上導覽建議 | `↑` / `Ctrl+P` |
| 下一筆歷史記錄 / 向下導覽建議 | `↓` / `Ctrl+N` |
| 反向搜尋歷史(輸入篩選,`Ctrl+R` 循環) | `Ctrl+R` |
### 其他
| 動作 | 快捷鍵 |
| ------------------------------------------------------ | ------------------- |
| 執行命令或接受建議 | `Enter` |
| 復原自動完成 / 離開建議模式 / 清空輸入 | `Escape` |
| 清除畫面 | `Ctrl+L` |
| 結束 | `Ctrl+C` / `Ctrl+D` |
## 疑難排解
如果你在執行 Obsidian CLI 時遇到問題:
- 確保你使用的是最新的 [[更新 Obsidian|Obsidian 安裝程式版本]](1.12.7 或以上)。
- 如果你剛從較早版本更新 Obsidian,請關閉 CLI 設定再重新開啟,然後讓 Obsidian 執行自動 PATH 註冊。
- 註冊 CLI 後重新啟動終端機,讓 PATH 變更生效。
- Obsidian 必須正在執行。CLI 會連接到正在執行的 Obsidian 實例。
### Windows
Windows 上的 Obsidian CLI 需要 Obsidian 1.12.7+ 安裝程式。請參閱[[更新 Obsidian|安裝程式版本更新]]。
Windows 使用終端機重導向器將 Obsidian 正確連接到 stdin/stdout。這是必要的,因為 Obsidian 通常作為 GUI 應用程式執行,與 Windows 上的終端機輸出不相容。當你安裝 Obsidian 1.12.7+ 時,`Obsidian.com` 終端機重導向器會新增到你安裝 `Obsidian.exe` 檔案的資料夾中。
CLI 註冊會將 Obsidian 新增到你的使用者 PATH 變數中,這需要重新啟動終端機才會生效。
### macOS
CLI 註冊會在 `/usr/local/bin/obsidian` 建立指向應用程式內建 CLI 二進位檔案的符號連結。這需要管理員權限——系統會透過對話框提示你。
檢查符號連結是否存在並指向正確的二進位檔案:
```
ls -l /usr/local/bin/obsidian
```
如果符號連結缺失,請手動建立:
```
sudo ln -sf /Applications/Obsidian.app/Contents/MacOS/obsidian-cli /usr/local/bin/obsidian
```
> [!note] 如果你之前使用較舊版本的 Obsidian 註冊過 CLI,你的 `~/.zprofile` 中可能有殘留的 PATH 項目。新的註冊程序會自動移除此項目,但如果仍然存在,你可以安全地從 `~/.zprofile` 中刪除以 `# Added by Obsidian` 開頭的行。
### Linux
CLI 註冊會將 CLI 二進位檔案複製到 `~/.local/bin/obsidian`。這是因為某些 Linux 安裝方式從臨時目錄執行,無法建立持久的符號連結。
確保 `~/.local/bin` 在你的 PATH 中。如果不在,請將以下內容新增到你的 `~/.bashrc` 或 `~/.zshrc`:
```
export PATH="$PATH:$HOME/.local/bin"
```
檢查二進位檔案是否存在:
```
ls -l ~/.local/bin/obsidian
```
如果二進位檔案缺失,請從 Obsidian 安裝目錄手動複製:
```
cp /path/to/Obsidian/obsidian-cli ~/.local/bin/obsidian
chmod 755 ~/.local/bin/obsidian
```