Skip to content

lingxing1017/dev-scripts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

辅助脚本工具集

本仓库包含常用的辅助脚本工具,适用于 macOS 和 Linux 发行版。


递归解压工具

递归解压多层嵌套的压缩文件。

工具说明

recursive_extract.sh

功能:自动检测并递归解压各种格式的压缩文件

使用方法

# 解压当前目录
./recursive_extract.sh

# 解压指定目录
./recursive_extract.sh /path/to/archives

# 显示详细日志
./recursive_extract.sh -v /path/to/archives

# 限制最大递归深度
./recursive_extract.sh /path/to/archives 5

支持格式

  • ZIP (.zip)
  • TAR (.tar)
  • GZIP (.gz, .tar.gz, .tgz)
  • XZ (.xz, .tar.xz)
  • BZIP2 (.bz2, .tar.bz2)

功能特性

  • 智能格式检测:基于 MIME 类型,不依赖文件扩展名
  • 多层嵌套处理:自动处理 .tar.gz 等多层压缩
  • 循环解压:持续扫描直到没有新的压缩文件产生
  • 自动清理:解压完成后删除中间压缩文件(保留原始输入文件)
  • 详细日志:记录所有操作到日志文件
  • 统计信息:显示解压成功/失败数量、耗时、最终文件统计

选项说明

  • -v, --verbose:显示详细日志(默认只显示警告和错误)
  • -h, --help:显示帮助信息

使用示例

# 场景1:解压网络设备快照(含多层嵌套)
./recursive_extract.sh snapshot.tar.gz

# 场景2:批量处理整个目录
./recursive_extract.sh -v /data/archives 10

# 场景3:只处理当前目录,不递归子目录
./recursive_extract.sh . 1

注意事项

  • 解压过程中会删除中间生成的压缩文件(原始输入文件除外)
  • ZIP 文件会解压到同名子目录
  • 详细日志自动保存为 extraction_YYYYMMDD_HHMMSS.log

Copilot Chat 会话管理工具

用于导入和管理 VS Code Copilot Chat 会话。

工具说明

manage-copilot-sessions.sh

功能:一键管理 Copilot Chat 会话 - 支持导入和重建索引

使用方法

# 导入单个会话文件
./manage-copilot-sessions.sh <会话JSON文件路径>

# 重建所有会话索引
./manage-copilot-sessions.sh

功能特性

  • 导入模式(提供参数):

    • 复制会话文件到目标工作区
    • 更新会话文件添加必需字段(sessionId, creationDate, customTitle等)
    • 自动更新索引
    • 验证导入结果并自动修复索引
  • 重建模式(无参数):

    • 扫描 chatSessions 目录下的所有会话文件
    • 检测索引中缺失的会话并添加
    • 为所有会话添加新版 VS Code 所需的字段
    • 适用于批量修复、索引损坏等场景

注意事项⚠️ 必须先关闭所有 VS Code 窗口再运行此脚本

  • VS Code 运行时会缓存数据库,关闭时会覆盖外部修改
  • 操作完成后重启 VS Code 即可看到会话

使用流程

导入新会话

  1. 关闭所有 VS Code 窗口
  2. 运行导入命令:
    ./manage-copilot-sessions.sh /path/to/session.json
  3. 重启 VS Code

修复已导入但不显示的会话

  1. 关闭所有 VS Code 窗口
  2. 运行重建命令:
    ./manage-copilot-sessions.sh
  3. 重启 VS Code

技术说明

为什么必须关闭 VS Code?

VS Code 在运行时会:

  1. 将数据库加载到内存缓存
  2. 外部脚本修改数据库(写入成功)
  3. VS Code 关闭时用旧的缓存覆盖数据库 → 修改丢失

会话显示需要的字段

索引中需要的字段 (state.vscdb):

  • sessionId
  • title
  • lastMessageDate
  • timing (startTime, endTime)
  • initialLocation
  • hasPendingEdits
  • isEmpty
  • isExternal
  • lastResponseState

会话文件需要的字段 (chatSessions/*.json):

  • sessionId
  • creationDate
  • lastMessageDate
  • customTitle
  • hasPendingEdits
  • inputState
  • version
  • responderUsername
  • initialLocation

故障排除

问题:导入后会话不显示

原因:VS Code 在运行时覆盖了索引
解决:关闭 VS Code,运行 ./manage-copilot-sessions.sh

问题:会话文件存在但索引中没有

解决:运行 ./manage-copilot-sessions.sh 自动扫描并添加

问题:数据库损坏

解决:脚本会自动创建备份文件(.backup.日期时间),可从备份恢复

依赖工具

  • bash
  • jq (JSON 处理)
  • sqlite3 (数据库操作)
  • python3 (URL 解码)

文件结构

工作区目录/
├── state.vscdb           # VS Code 状态数据库
├── chatSessions/         # 会话文件目录
│   ├── <sessionId>.json
│   └── ...
└── workspace.json        # 工作区配置

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages