101 lines
2.5 KiB
Markdown
101 lines
2.5 KiB
Markdown
|
|
---
|
|||
|
|
name: tolaria-update
|
|||
|
|
description: 更新Tolaria笔记库(~/Desktop/Tolaria笔记库/)中的Markdown文件。当需要修改、插入、替换Tolaria笔记内容时使用。包含可靠的文件写入方法和验证步骤。
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Tolaria笔记库文件更新技能
|
|||
|
|
|
|||
|
|
## 触发条件
|
|||
|
|
|
|||
|
|
- 需要更新 `~/Desktop/Tolaria笔记库/` 中的任何 `.md` 文件
|
|||
|
|
- 需要同步更新笔记库和移动硬盘JZAO上的对应内容
|
|||
|
|
|
|||
|
|
## 核心规则
|
|||
|
|
|
|||
|
|
### 路径映射
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Tolaria笔记库(人类可读层): ~/Desktop/Tolaria笔记库/
|
|||
|
|
移动硬盘JZAO(资产实际层): /Volumes/JZAO/光湖项目/短剧视频AI/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
读笔记时 -> 映射到JZAO硬盘核实最新状态
|
|||
|
|
写笔记时 -> 两边同步更新
|
|||
|
|
|
|||
|
|
### 文件写入方法(按优先级)
|
|||
|
|
|
|||
|
|
#### 方法一:单行替换 -> sed
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sed -i '' 's/旧文本/新文本/' "文件路径"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- macOS用 `sed -i ''`(空字符串表示不备份)
|
|||
|
|
- 适合替换一行内的文本
|
|||
|
|
- 含中文/特殊Unicode符号也能正常工作
|
|||
|
|
|
|||
|
|
#### 方法二:多行插入 -> Python readlines + insert
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
filepath = '文件路径'
|
|||
|
|
with open(filepath, 'r', encoding='utf-8') as f:
|
|||
|
|
lines = f.readlines()
|
|||
|
|
|
|||
|
|
for i, line in enumerate(lines):
|
|||
|
|
if '定位关键词' in line:
|
|||
|
|
insert_after = i
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
new_content = '''
|
|||
|
|
新内容行1
|
|||
|
|
新内容行2
|
|||
|
|
'''
|
|||
|
|
lines.insert(insert_after + 1, new_content)
|
|||
|
|
|
|||
|
|
with open(filepath, 'w', encoding='utf-8') as f:
|
|||
|
|
f.writelines(lines)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 逐行读取 -> 找到位置 -> insert -> 逐行写回
|
|||
|
|
- **不要**用 `read().replace().write()`,会静默失败
|
|||
|
|
|
|||
|
|
#### 方法三:创建新文件 -> cat heredoc
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cat > "文件路径" << 'ENDOFFILE'
|
|||
|
|
文件内容
|
|||
|
|
ENDOFFILE
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 适合在JZAO移动硬盘上创建新文件
|
|||
|
|
- 用单引号防止变量展开
|
|||
|
|
|
|||
|
|
### 绝对禁止
|
|||
|
|
|
|||
|
|
- **禁止** Python `str.replace()` 全文件替换 -> Mac上含中文/emoji/特殊Unicode的Markdown会静默失败
|
|||
|
|
- **禁止** 只改一边 -> 笔记库和JZAO必须同步
|
|||
|
|
- **禁止** 写入后不验证
|
|||
|
|
|
|||
|
|
## 验证步骤
|
|||
|
|
|
|||
|
|
每次写入后**必须**用grep验证:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
grep -n "关键词" "文件路径"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 确认新内容出现了
|
|||
|
|
- 确认旧内容已消失(如果是替换)
|
|||
|
|
- grep返回空 = 写入失败,需要重试
|
|||
|
|
|
|||
|
|
## 完整工作流
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 读Tolaria笔记 -> 映射到JZAO硬盘核实实际状态
|
|||
|
|
2. 确定要更新的内容
|
|||
|
|
3. 选择写入方法(sed / Python readlines / cat heredoc)
|
|||
|
|
4. 执行写入
|
|||
|
|
5. grep验证是否生效
|
|||
|
|
6. 如果涉及JZAO文件,同步更新
|
|||
|
|
7. 再次验证两边一致
|
|||
|
|
```
|