From ad19006a4f43f4c76c1cfae710cc3bb90bf2d152 Mon Sep 17 00:00:00 2001 From: starmen1265 Date: Mon, 9 Mar 2026 11:54:16 +0800 Subject: [PATCH] =?UTF-8?q?zq-file.sh=EF=BC=9A=E5=AE=8C=E5=96=84=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD=EF=BC=88replace/remove/insert?= =?UTF-8?q?=E7=AD=89=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agents/dev-assist/workspace/AGENTS.md | 34 ++- agents/haonan/workspace/AGENTS.md | 34 ++- agents/knowledge-base/workspace/AGENTS.md | 34 ++- agents/main/workspace/AGENTS.md | 34 ++- agents/thinker/workspace/AGENTS.md | 34 ++- agents/ui-designer/workspace/AGENTS.md | 34 ++- cron/scripts/zq-file.sh | 318 +++++++++++++++++++--- feishu/dedup/feishu-worker.json | 3 +- 8 files changed, 443 insertions(+), 82 deletions(-) diff --git a/agents/dev-assist/workspace/AGENTS.md b/agents/dev-assist/workspace/AGENTS.md index 1a159e5..299b874 100644 --- a/agents/dev-assist/workspace/AGENTS.md +++ b/agents/dev-assist/workspace/AGENTS.md @@ -73,20 +73,38 @@ This folder is home. Treat it that way. - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/agents/haonan/workspace/AGENTS.md b/agents/haonan/workspace/AGENTS.md index 94944d4..0e94685 100644 --- a/agents/haonan/workspace/AGENTS.md +++ b/agents/haonan/workspace/AGENTS.md @@ -73,20 +73,38 @@ This folder is home. Treat it that way. - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/agents/knowledge-base/workspace/AGENTS.md b/agents/knowledge-base/workspace/AGENTS.md index 1a159e5..299b874 100644 --- a/agents/knowledge-base/workspace/AGENTS.md +++ b/agents/knowledge-base/workspace/AGENTS.md @@ -73,20 +73,38 @@ This folder is home. Treat it that way. - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/agents/main/workspace/AGENTS.md b/agents/main/workspace/AGENTS.md index b16396a..42c2313 100644 --- a/agents/main/workspace/AGENTS.md +++ b/agents/main/workspace/AGENTS.md @@ -66,20 +66,38 @@ Capture what matters. Decisions, context, things to remember. Skip the secrets u - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/agents/thinker/workspace/AGENTS.md b/agents/thinker/workspace/AGENTS.md index 1a159e5..299b874 100644 --- a/agents/thinker/workspace/AGENTS.md +++ b/agents/thinker/workspace/AGENTS.md @@ -73,20 +73,38 @@ This folder is home. Treat it that way. - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/agents/ui-designer/workspace/AGENTS.md b/agents/ui-designer/workspace/AGENTS.md index eeecc85..4c855a3 100644 --- a/agents/ui-designer/workspace/AGENTS.md +++ b/agents/ui-designer/workspace/AGENTS.md @@ -73,20 +73,38 @@ This folder is home. Treat it that way. - **修改工作区文件必须使用脚本 `~/.openclaw/cron/scripts/zq-file.sh`** - 脚本用法: ```bash - # 编辑文件 - ~/.openclaw/cron/scripts/zq-file.sh edit <相对路径> + # 读取文件 + zq-file.sh read <相对路径> # 写入/覆盖文件 - ~/.openclaw/cron/scripts/zq-file.sh write <相对路径> "内容" + zq-file.sh write <相对路径> "内容" - # 追加内容 - ~/.openclaw/cron/scripts/zq-file.sh append <相对路径> "内容" + # 追加到文件末尾 + zq-file.sh append <相对路径> "内容" - # 新建文件 - ~/.openclaw/cron/scripts/zq-file.sh new <相对路径> "内容" + # 在文件开头插入 + zq-file.sh prepend <相对路径> "内容" + + # 替换文本(精确匹配,首次) + zq-file.sh replace <相对路径> "旧内容" "新内容" + + # 替换所有匹配 + zq-file.sh replace-all <相对路径> "旧内容" "新内容" + + # 删除特定文本 + zq-file.sh remove <相对路径> "要删除的内容" + + # 在某行之前插入 + zq-file.sh insert-before <相对路径> "标记行" "内容" + + # 在某行之后插入 + zq-file.sh insert-after <相对路径> "标记行" "内容" # 删除文件 - ~/.openclaw/cron/scripts/zq-file.sh delete <相对路径> + zq-file.sh delete <相对路径> + + # 新建文件 + zq-file.sh new <相对路径> "内容" ``` - 脚本会自动执行:从NAS同步 → 操作文件 → Git提交 → 同步到NAS - 用户的待办记录到~/work/zq/00.收件箱/01-速记本.md diff --git a/cron/scripts/zq-file.sh b/cron/scripts/zq-file.sh index f3d455c..a35b81c 100755 --- a/cron/scripts/zq-file.sh +++ b/cron/scripts/zq-file.sh @@ -1,11 +1,17 @@ #!/bin/bash # 工作区文件操作脚本 # 用法: -# zq-file.sh edit <文件路径> # 编辑文件(使用默认编辑器) -# zq-file.sh write <文件路径> <内容> # 写入/覆盖文件 -# zq-file.sh append <文件路径> <内容> # 追加内容到文件 -# zq-file.sh delete <文件路径> # 删除文件 -# zq-file.sh new <文件路径> <内容> # 新建文件 +# zq-file.sh read <文件路径> 读取文件内容 +# zq-file.sh write <文件路径> <内容> 写入/覆盖文件 +# zq-file.sh append <文件路径> <内容> 追加内容到文件末尾 +# zq-file.sh prepend <文件路径> <内容> 在文件开头插入内容 +# zq-file.sh replace <文件路径> <旧内容> <新内容> 替换文本(精确匹配) +# zq-file.sh replace-all <文件路径> <旧内容> <新内容> 替换所有匹配 +# zq-file.sh remove <文件路径> <要删除的内容> 删除特定文本 +# zq-file.sh insert-before <文件路径> <标记行> <内容> 在某行之前插入 +# zq-file.sh insert-after <文件路径> <标记行> <内容> 在某行之后插入 +# zq-file.sh delete <文件路径> 删除文件 +# zq-file.sh new <文件路径> <内容> 新建文件 # # 脚本会自动执行: # 1. 从NAS同步到本地 @@ -25,37 +31,61 @@ log() { } usage() { - cat << EOF + cat << 'EOF' 工作区文件操作脚本 用法: - $0 edit <文件路径> 使用编辑器编辑文件 - $0 write <文件路径> <内容> 写入/覆盖文件 - $0 append <文件路径> <内容> 追加内容到文件末尾 - $0 delete <文件路径> 删除文件 - $0 new <文件路径> <内容> 新建文件 + zq-file.sh read <文件路径> 读取文件内容 + zq-file.sh write <文件路径> "内容" 写入/覆盖文件 + zq-file.sh append <文件路径> "内容" 追加内容到文件末尾 + zq-file.sh prepend <文件路径> "内容" 在文件开头插入内容 + zq-file.sh replace <文件路径> "旧内容" "新内容" 替换文本(精确匹配,首次) + zq-file.sh replace-all <文件路径> "旧内容" "新内容" 替换所有匹配的文本 + zq-file.sh remove <文件路径> "要删除的内容" 删除特定文本 + zq-file.sh insert-before <文件路径> "标记行" "内容" 在标记行之前插入 + zq-file.sh insert-after <文件路径> "标记行" "内容" 在标记行之后插入 + zq-file.sh delete <文件路径> 删除文件 + zq-file.sh new <文件路径> "内容" 新建文件 注意: - 文件路径是相对于 ~/work/zq 的路径,或绝对路径 - - 内容会通过 stdin 传入,支持多行 + - 内容支持多行,用 $'\n' 表示换行,或使用 $'...\n...' + - replace/remove 操作会精确匹配文本(包括空格和换行) - 操作会自动:从NAS同步 → 执行操作 → Git提交 → 同步到NAS 示例: - # 编辑文件 - $0 edit 10.项目/README.md + # 读取文件 + zq-file.sh read 10.项目/README.md # 写入内容 - echo "Hello World" | $0 write 00.收件箱/test.md - $0 write 00.收件箱/test.md "Hello World" + zq-file.sh write 00.收件箱/test.md "Hello World" - # 追加内容 - $0 append 00.收件箱/01-速记本.md "- 新的速记" + # 追加内容(支持多行) + zq-file.sh append 00.收件箱/01-速记本.md "- 新的速记"$'\n'"- 另一条" + + # 在文件开头插入 + zq-file.sh prepend 30.资源/notes.md "# 标题" + + # 替换文本 + zq-file.sh replace 10.项目/README.md "旧内容" "新内容" + + # 替换多行文本 + zq-file.sh replace 10.项目/README.md $'第一行\n第二行' $'新第一行\n新第二行' + + # 删除特定文本 + zq-file.sh remove 10.项目/README.md "要删除的行" + + # 在某行之前插入 + zq-file.sh insert-before 10.项目/README.md "## 章节" "这是新插入的内容" + + # 在某行之后插入 + zq-file.sh insert-after 10.项目/README.md "## 章节" "这是新插入的内容" # 删除文件 - $0 delete 40.归档/old-file.md + zq-file.sh delete 40.归档/old-file.md # 新建文件 - $0 new 30.资源/new-note.md "# 新笔记" + zq-file.sh new 30.资源/new-note.md "# 新笔记" EOF } @@ -108,30 +138,31 @@ sync_to_nas() { # 执行操作 case "$ACTION" in - edit) + read) FILE_PATH=$(resolve_path "$1") REL_PATH="${FILE_PATH#$ZQ_DIR/}" sync_from_nas - log "步骤2: 编辑文件 $REL_PATH" - ${EDITOR:-nano} "$FILE_PATH" - - git_commit "编辑: $REL_PATH" - sync_to_nas + log "步骤2: 读取文件 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + cat "$FILE_PATH" log "完成!" ;; write) FILE_PATH=$(resolve_path "$1") REL_PATH="${FILE_PATH#$ZQ_DIR/}" - CONTENT="${2:-$(cat)}" + CONTENT="$2" sync_from_nas log "步骤2: 写入文件 $REL_PATH" mkdir -p "$(dirname "$FILE_PATH")" - echo "$CONTENT" > "$FILE_PATH" + printf '%s' "$CONTENT" > "$FILE_PATH" git_commit "写入: $REL_PATH" sync_to_nas @@ -141,7 +172,7 @@ case "$ACTION" in append) FILE_PATH=$(resolve_path "$1") REL_PATH="${FILE_PATH#$ZQ_DIR/}" - CONTENT="${2:-$(cat)}" + CONTENT="$2" sync_from_nas @@ -150,13 +181,234 @@ case "$ACTION" in log "错误:文件不存在" exit 1 fi - echo -e "\n$CONTENT" >> "$FILE_PATH" + printf '\n%s' "$CONTENT" >> "$FILE_PATH" git_commit "追加: $REL_PATH" sync_to_nas log "完成!" ;; + prepend) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + CONTENT="$2" + + sync_from_nas + + log "步骤2: 在文件开头插入 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + # 创建临时文件,先写入新内容,再写入原内容 + TEMP_FILE=$(mktemp) + printf '%s\n' "$CONTENT" > "$TEMP_FILE" + cat "$FILE_PATH" >> "$TEMP_FILE" + mv "$TEMP_FILE" "$FILE_PATH" + + git_commit "开头插入: $REL_PATH" + sync_to_nas + log "完成!" + ;; + + replace) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + OLD_TEXT="$2" + NEW_TEXT="$3" + + sync_from_nas + + log "步骤2: 替换文本 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + + # 检查旧文本是否存在 + if ! grep -qF "$OLD_TEXT" "$FILE_PATH"; then + log "错误:未找到要替换的文本" + exit 1 + fi + + # 使用 Python 进行精确替换(只替换第一次匹配) + python3 << PYEOF +import sys +with open("$FILE_PATH", 'r', encoding='utf-8') as f: + content = f.read() + +old_text = """$OLD_TEXT""" +new_text = """$NEW_TEXT""" + +if old_text not in content: + print("错误:未找到要替换的文本", file=sys.stderr) + sys.exit(1) + +# 只替换第一次出现 +new_content = content.replace(old_text, new_text, 1) + +with open("$FILE_PATH", 'w', encoding='utf-8') as f: + f.write(new_content) +PYEOF + + git_commit "替换: $REL_PATH" + sync_to_nas + log "完成!" + ;; + + replace-all) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + OLD_TEXT="$2" + NEW_TEXT="$3" + + sync_from_nas + + log "步骤2: 替换所有匹配 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + + # 检查旧文本是否存在 + if ! grep -qF "$OLD_TEXT" "$FILE_PATH"; then + log "错误:未找到要替换的文本" + exit 1 + fi + + # 使用 Python 进行全局替换 + python3 << PYEOF +with open("$FILE_PATH", 'r', encoding='utf-8') as f: + content = f.read() + +old_text = """$OLD_TEXT""" +new_text = """$NEW_TEXT""" + +new_content = content.replace(old_text, new_text) + +with open("$FILE_PATH", 'w', encoding='utf-8') as f: + f.write(new_content) +PYEOF + + git_commit "替换全部: $REL_PATH" + sync_to_nas + log "完成!" + ;; + + remove) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + TEXT_TO_REMOVE="$2" + + sync_from_nas + + log "步骤2: 删除文本 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + + # 使用 Python 删除特定文本 + python3 << PYEOF +import sys +with open("$FILE_PATH", 'r', encoding='utf-8') as f: + content = f.read() + +text_to_remove = """$TEXT_TO_REMOVE""" + +if text_to_remove not in content: + print("错误:未找到要删除的文本", file=sys.stderr) + sys.exit(1) + +new_content = content.replace(text_to_remove, '') + +with open("$FILE_PATH", 'w', encoding='utf-8') as f: + f.write(new_content) +PYEOF + + git_commit "删除文本: $REL_PATH" + sync_to_nas + log "完成!" + ;; + + insert-before) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + MARKER="$2" + CONTENT="$3" + + sync_from_nas + + log "步骤2: 在标记行之前插入 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + + # 使用 Python 在标记行之前插入 + python3 << PYEOF +import sys +with open("$FILE_PATH", 'r', encoding='utf-8') as f: + content = f.read() + +marker = """$MARKER""" +new_content = """$CONTENT""" + +if marker not in content: + print("错误:未找到标记行", file=sys.stderr) + sys.exit(1) + +# 在第一次出现的标记之前插入 +result = content.replace(marker, new_content + '\n' + marker, 1) + +with open("$FILE_PATH", 'w', encoding='utf-8') as f: + f.write(result) +PYEOF + + git_commit "前插: $REL_PATH" + sync_to_nas + log "完成!" + ;; + + insert-after) + FILE_PATH=$(resolve_path "$1") + REL_PATH="${FILE_PATH#$ZQ_DIR/}" + MARKER="$2" + CONTENT="$3" + + sync_from_nas + + log "步骤2: 在标记行之后插入 $REL_PATH" + if [[ ! -f "$FILE_PATH" ]]; then + log "错误:文件不存在" + exit 1 + fi + + # 使用 Python 在标记行之后插入 + python3 << PYEOF +import sys +with open("$FILE_PATH", 'r', encoding='utf-8') as f: + content = f.read() + +marker = """$MARKER""" +new_content = """$CONTENT""" + +if marker not in content: + print("错误:未找到标记行", file=sys.stderr) + sys.exit(1) + +# 在第一次出现的标记之后插入 +result = content.replace(marker, marker + '\n' + new_content, 1) + +with open("$FILE_PATH", 'w', encoding='utf-8') as f: + f.write(result) +PYEOF + + git_commit "后插: $REL_PATH" + sync_to_nas + log "完成!" + ;; + delete) FILE_PATH=$(resolve_path "$1") REL_PATH="${FILE_PATH#$ZQ_DIR/}" @@ -168,7 +420,7 @@ case "$ACTION" in log "错误:文件不存在" exit 1 fi - trash "$FILE_PATH" || rm "$FILE_PATH" + trash "$FILE_PATH" 2>/dev/null || rm "$FILE_PATH" git_commit "删除: $REL_PATH" sync_to_nas @@ -178,7 +430,7 @@ case "$ACTION" in new) FILE_PATH=$(resolve_path "$1") REL_PATH="${FILE_PATH#$ZQ_DIR/}" - CONTENT="${2:-$(cat)}" + CONTENT="$2" sync_from_nas @@ -188,7 +440,7 @@ case "$ACTION" in exit 1 fi mkdir -p "$(dirname "$FILE_PATH")" - echo "$CONTENT" > "$FILE_PATH" + printf '%s' "$CONTENT" > "$FILE_PATH" git_commit "新建: $REL_PATH" sync_to_nas diff --git a/feishu/dedup/feishu-worker.json b/feishu/dedup/feishu-worker.json index b20e468..4a0faa7 100644 --- a/feishu/dedup/feishu-worker.json +++ b/feishu/dedup/feishu-worker.json @@ -21,5 +21,6 @@ "om_x100b55d79e59d8a0c443a580f68e3b8": 1773026569869, "om_x100b55d7991f94a0c2e8293dbc6cef5": 1773026685834, "om_x100b55d7b6b920b8c4f9cfd18bafa0c": 1773027208022, - "om_x100b55d04828d4acc1034f0945fb607": 1773027438865 + "om_x100b55d04828d4acc1034f0945fb607": 1773027438865, + "om_x100b55d0746140a8c3ffa9e17c64c7d": 1773028267643 }