Skip to content

Releases: Lingbou/Lish

Lish Dev v0.5.4

13 Dec 09:39
bb11360

Choose a tag to compare

格式基于 Keep a Changelog
版本号遵循 语义化版本


[0.5.4] - 2025-12-13

✨ 新增

系统工具命令 🔧

  • 4 个系统管理命令
  • Windows 平台适配
  • 跨平台兼容性
  • 友好的用户提示

新增命令(4 个)

1. chmod - 文件权限/属性修改
  • 功能:修改文件权限(Unix)或属性(Windows)
  • Windows 适配
    • 支持只读/可写属性设置
    • 模式:+r, -r, +w, -w, ro, rw
    • 不支持完整的 Unix 权限位
  • Unix 支持
    • 八进制模式:755, 644, 777
    • 符号模式:u+x, a+w, o-r
  • 选项
    • -R / --recursive - 递归修改目录
    • -v / --verbose - 显示详细信息
  • 示例
    # Windows
    chmod +r file.txt      # 设置可读写
    chmod -r file.txt      # 设置只读
    chmod -R +w dir/       # 递归设置可写
    
    # Unix
    chmod 755 file         # rwxr-xr-x
    chmod u+x script.sh    # 添加执行权限
2. chown - 文件所有者修改
  • 功能:修改文件所有者和组
  • Windows 适配
    • 需要管理员权限
    • 当前版本仅显示文件信息
    • 不执行实际修改(需要 Windows API)
  • Unix 支持
    • 使用数字 UID/GID
    • 支持递归修改
  • 选项
    • -R / --recursive - 递归修改目录
    • -v / --verbose - 显示详细信息
  • 示例
    # Windows (仅显示信息)
    chown user file.txt
    chown user:group file.txt
    
    # Unix
    chown 1000 file.txt          # 修改 UID
    chown 1000:1000 file.txt     # 修改 UID 和 GID
    chown -R 1000 dir/           # 递归修改
3. ln - 创建文件链接
  • 功能:创建符号链接和硬链接
  • Windows 适配
    • 符号链接需要管理员权限或开发者模式
    • 硬链接只支持文件,不支持目录
    • 提供开发者模式启用指南
  • Unix 支持
    • 完整的符号链接和硬链接支持
  • 选项
    • -s / --symbolic - 创建符号链接
    • -f / --force - 强制覆盖
    • -v / --verbose - 显示详细信息
  • 示例
    ln -s target.txt link.txt         # 符号链接
    ln -s C:\data\file.txt link.txt   # Windows 绝对路径
    ln -s dir linkdir                 # 目录符号链接
    ln target.txt hardlink.txt        # 硬链接
    ln -sf target.txt link.txt        # 强制覆盖
4. df - 磁盘空间查看
  • 功能:显示文件系统磁盘空间使用情况
  • Windows 适配
    • 显示所有可用驱动器(C:, D:, ...)
    • 自动检测 NTFS 文件系统
    • 显示总空间、已用、可用、使用百分比
  • Unix 支持
    • 显示常见挂载点
    • 支持多种文件系统类型
  • 选项
    • -h / --human-readable - 人类可读格式(KB, MB, GB)
    • -a / --all - 显示所有文件系统
    • -T / --print-type - 显示文件系统类型
  • 示例
    df                  # 显示所有驱动器/挂载点
    df -h               # 人类可读格式
    df -h -T            # 显示文件系统类型
    df -a               # 显示所有(包括不可访问的)

🎨 改进

Windows 平台适配

  • 智能提示 - 自动检测 Windows 平台并显示相关提示
  • 权限说明 - 清晰说明哪些操作需要管理员权限
  • 开发者模式 - 提供开发者模式启用指南
  • 友好错误 - Windows 特定的错误提示和解决方案

跨平台兼容性

  • 运行时检测 - 自动适配 Windows/Unix 平台
  • 统一接口 - 相同的命令名称和基本用法
  • 平台差异 - Help 信息根据平台显示不同内容
  • 优雅降级 - 不支持的功能提供替代方案

用户体验

  • 详细帮助 - 根据平台显示相关的 Help 信息
  • 权限提示 - 需要特殊权限时给出明确提示
  • 示例丰富 - 针对不同平台提供具体示例
  • 错误友好 - 清晰的错误信息和建议

📦 新增文件

  • internal/commands/chmod.go - 权限修改命令 (203 行)
  • internal/commands/chown.go - 所有者修改命令 (186 行)
  • internal/commands/ln.go - 链接创建命令 (153 行)
  • internal/commands/df.go - 磁盘空间命令 (298 行)

📊 统计

  • 命令总数: 44 个(从 40 个增加到 44 个)
  • 新增命令: 4 个
  • 新增代码: 约 840 行
  • 可执行文件: 7.4 MB
  • 平台支持: Windows, Linux, Unix

💡 Windows 平台使用说明

chmod - 文件属性

# 设置文件为只读
lish> chmod -r file.txt
lish> chmod ro file.txt

# 设置文件为可读写
lish> chmod +r file.txt
lish> chmod rw file.txt

# 递归设置目录
lish> chmod -R +w documents/

chown - 文件所有者(仅查看)

# 查看文件信息
lish> chown user file.txt

# 显示详细信息
lish> chown -v user:group file.txt

ln - 创建链接

# 创建符号链接(需要管理员或开发者模式)
lish> ln -s C:\data\project.txt link.txt

# 创建硬链接(文件)
lish> ln file.txt hardlink.txt

# 目录符号链接
lish> ln -s C:\work\code code_link

启用开发者模式

  1. 设置 → 更新和安全 → 开发者选项
  2. 启用"开发者模式"
  3. 重启 Lish

df - 磁盘空间

# 查看所有驱动器
lish> df

# 人类可读格式
lish> df -h

# 显示文件系统类型
lish> df -h -T

输出示例:
Filesystem      Size       Used      Avail  Use%  Mounted on
C:\             500G       300G      200G    60%  C:\
D:\             1.0T       500G      500G    50%  D:\

🔧 技术实现

平台检测

if runtime.GOOS == "windows" {
    // Windows 特定处理
} else {
    // Unix 处理
}

Windows 文件属性

  • 使用 os.Chmod() 设置只读属性
  • 0444 = 只读
  • 0666 = 可读写

Windows 磁盘空间

  • 使用 syscall.Statfs() 获取磁盘信息
  • 自动枚举 A-Z 驱动器
  • 跳过不可访问的驱动器

Lish Dev v0.5.3

12 Dec 17:00
ffe610a

Choose a tag to compare

[0.5.3] - 2025-12-13

✨ 新增

高级文本处理命令 📝

  • 4 个强大的文本处理命令
  • 完整的命令行选项支持
  • 管道友好设计
  • 正则表达式支持

新增命令(4 个)

1. sort - 文本排序
  • 功能:对文本行进行排序
  • 选项
    • -r / --reverse - 反向排序
    • -n / --numeric-sort - 按数字大小排序
    • -u / --unique - 去除重复行
    • -k <N> / --key - 按第 N 个字段排序
    • -t / --field-separator - 指定字段分隔符
    • -i / --ignore-case - 忽略大小写
  • 示例
    sort file.txt                # 排序文件
    sort -r file.txt             # 反向排序
    sort -n numbers.txt          # 数字排序
    sort -u file.txt             # 去重排序
    sort -k 2 file.txt           # 按第2个字段排序
    ls | sort                    # 对ls输出排序
2. uniq - 去重和统计
  • 功能:去除或报告相邻的重复行
  • 选项
    • -c / --count - 显示每行出现次数
    • -d / --repeated - 只显示重复的行
    • -u / --unique - 只显示唯一的行
    • -i / --ignore-case - 忽略大小写
  • 示例
    uniq file.txt                      # 去除相邻重复行
    uniq -c file.txt                   # 显示出现次数
    sort file.txt | uniq               # 完全去重
    sort file.txt | uniq -c | sort -rn # 按频率排序
3. sed - 流编辑器(基础版)
  • 功能:流式文本编辑和替换
  • 选项
    • -i / --in-place - 原地编辑文件
    • -n / --quiet - 静默模式
    • -e / --expression - 指定表达式
  • 支持的命令
    • s/pattern/replacement/[flags] - 替换(支持 g 全局,i 忽略大小写)
    • d - 删除行
    • p - 打印行
    • a\text - 追加文本
    • i\text - 插入文本
  • 示例
    sed 's/old/new/' file.txt          # 替换第一个匹配
    sed 's/old/new/g' file.txt         # 全局替换
    sed 's/old/new/gi' file.txt        # 忽略大小写替换
    sed '/pattern/d' file.txt          # 删除匹配行
    sed -n '/pattern/p' file.txt       # 只打印匹配行
    sed -i 's/foo/bar/g' file.txt      # 原地编辑
4. awk - 文本处理和字段提取(基础版)
  • 功能:强大的文本处理工具
  • 选项
    • -F / --field-separator - 字段分隔符
  • 内置变量
    • $0 - 完整行
    • $1, $2, ... - 字段
    • NR - 行号
    • NF - 字段数
    • FS - 字段分隔符
  • 支持的操作
    • print - 打印
    • printf - 格式化打印
    • 变量赋值
    • 简单算术
  • 示例
    awk '{ print $1 }' file.txt              # 打印第1列
    awk '{ print $1, $3 }' file.txt          # 打印多列
    awk '{ print NR, $0 }' file.txt          # 显示行号
    awk -F: '{ print $1 }' /etc/passwd       # 使用:分隔
    awk '/pattern/ { print $0 }' file.txt    # 模式匹配
    ls -l | awk '{ print $9 }'               # 提取文件名

🎨 改进

文本处理能力

  • 正则表达式支持 - sed 和 awk 支持正则匹配
  • 字段处理 - sort 和 awk 支持字段操作
  • 管道友好 - 所有命令都支持标准输入/输出
  • 多文件处理 - 支持处理多个文件

命令行选项

  • 短选项 - -r, -n, -u
  • 长选项 - --reverse, --numeric-sort
  • GNU 风格 - 兼容常见的 Linux 命令选项

📦 新增文件

  • internal/commands/sort.go - 文本排序命令 (224 行)
  • internal/commands/uniq.go - 去重统计命令 (138 行)
  • internal/commands/sed.go - 流编辑器命令 (285 行)
  • internal/commands/awk.go - 文本处理命令 (372 行)

📊 统计

  • 命令总数: 40 个(从 36 个增加到 40 个)
  • 新增命令: 4 个
  • 新增代码: 约 1,019 行
  • 可执行文件: 7.4 MB

💡 使用场景

日志分析

# 统计访问最多的IP
cat access.log | awk '{ print $1 }' | sort | uniq -c | sort -rn | head -10

# 查找错误日志
cat error.log | sed -n '/ERROR/p'

# 提取特定字段
cat data.txt | awk -F',' '{ print $2, $5 }'

数据处理

# 按数字列排序
cat data.txt | sort -k 3 -n

# 统计唯一值
cat list.txt | sort | uniq -c

# 批量替换
sed 's/old_domain/new_domain/g' -i config.txt

文本清理

# 去除重复行
sort file.txt | uniq > clean.txt

# 删除空行
sed '/^$/d' file.txt

# 提取特定列
awk '{ print $1, $3 }' data.txt

Lish Dev v0.5.2

12 Dec 16:52
c6e4039

Choose a tag to compare

[0.5.2] - 2025-12-12

✨ 新增

脚本支持系统 📜

  • 完整的脚本解析器:支持 .lish 脚本文件执行

  • AST (抽象语法树):完整的语法树结构

  • 词法分析器:支持关键字、操作符、字符串、注释

  • 语法分析器:解析复杂的脚本语法

  • 变量系统:支持变量定义、引用、作用域管理

  • 控制流语句:if/elif/else、for、while 循环

  • 函数系统:函数定义、调用、参数传递

  • 局部作用域 - 函数内变量独立

  • 返回值 - return 语句

变量系统

  • 变量赋值: name=value
  • 变量引用: $name${name}
  • 变量展开: 自动展开变量引用
  • 作用域管理: 支持全局和局部作用域

测试表达式

  • 文件测试: -f, -d, -e
  • 字符串测试: -z, -n, ==, !=
  • 数字比较: -eq, -ne, -lt, -gt, -le, -ge

新增命令(2 个)

  • source / . - 在当前环境执行脚本

    • -v 详细模式
    • -x 调试模式
    • 变量和函数在当前环境保留
  • exec - 在新环境执行脚本

    • -v 详细模式
    • 独立环境,不影响当前 shell

🎨 改进

架构优化

  • 接口设计: 使用 CommandExecutor 接口解耦
  • 模块化: 独立的 script
  • 无循环依赖: 清晰的依赖关系

脚本执行

  • 错误处理: 详细的错误信息和行号
  • 控制流: 支持 break, continue, return
  • 嵌套支持: 支持嵌套的控制结构

📦 新增模块

  • internal/script/ - 脚本系统
    • ast.go - AST 节点定义 (167 行)
    • lexer.go - 词法分析器 (287 行)
    • parser.go - 语法分析器 (343 行)
    • variables.go - 变量管理 (131 行)
    • executor.go - 脚本执行器 (431 行)

Lish Dev v0.5.1

11 Dec 14:36
d102e4b

Choose a tag to compare

所有重要的项目变更都会记录在这个文件中。

格式基于 Keep a Changelog
版本号遵循 语义化版本


[0.5.1] - 2025-12-03

✨ 新增

主题系统 🎨

  • 完整的主题系统:从 8 个精美的内置主题中选择
  • 颜色方案系统:统一的颜色接口和 ANSI RGB 转换
  • 主题管理器:加载、切换、保存主题
  • 提示符定制:支持 {user}, {host}, {cwd}, {git} 变量和颜色
  • 语法高亮:命令、参数、字符串、变量、操作符实时高亮
  • theme 命令:完整的主题管理工具

8 个内置主题

  1. dark - 默认暗色主题(亮绿命令)
  2. light - 亮色主题(深绿配色)
  3. solarized-dark - Solarized Dark(经典配色)
  4. solarized-light - Solarized Light
  5. gruvbox - Gruvbox Dark(复古温暖)
  6. dracula - Dracula(紫色梦幻)
  7. nord - Nord(冷色极简)
  8. monokai - Monokai Pro(现代炫彩)

theme 命令

  • theme - 显示当前主题
  • theme list - 列出所有可用主题
  • theme show <name> - 预览主题效果
  • theme set <name> - 切换主题
  • theme export <name> - 导出主题配置
  • theme import <file> - 导入主题配置

🎨 改进

用户体验

  • 彩色提示符:用户名、主机名、路径使用主题颜色
  • Git 分支显示:提示符中显示当前 Git 分支
  • 主题即时切换:无需重启即可应用新主题
  • 美观的预览theme show 显示完整的颜色示例

配置系统

  • 新增 [theme] 配置段
  • theme.current - 默认主题
  • theme.custom_themes_dir - 自定义主题目录
  • prompt.format - 支持变量的提示符格式

📦 依赖

  • 所有颜色使用纯 Go 实现,无需外部依赖

Lish Dev v0.4.0

02 Dec 21:15
4791c40

Choose a tag to compare

[0.4.0] - 2025-12-3

✨ 新增

智能建议系统

  • 命令拼写纠正:输入错误命令时自动提供相似命令建议
  • 基于历史的建议:根据命令历史提供智能补全建议
  • 使用编辑距离算法(Levenshtein Distance)匹配最相似命令

网络命令(2 个)

  • curl - HTTP 请求工具
    • 支持 GET、POST 等 HTTP 方法
    • 自定义请求头 (-H)
    • 保存响应到文件 (-o)
    • 超时设置 (-t)
  • ping - 网络连接测试
    • 支持自定义数据包数量 (-c)
    • Windows/Linux 自动适配

压缩命令(2 个)

  • zip - 创建 ZIP 压缩包
    • 支持递归压缩目录 (-r)
    • 批量压缩多个文件
  • unzip - 解压 ZIP 文件
    • 指定解压目录 (-d)
    • 列出压缩包内容 (-l)

Lish Dev v0.3.0

27 Nov 10:12
1709344

Choose a tag to compare

更新日志

格式基于 Keep a Changelog
并且本项目遵循 语义化版本

[已发布]

[0.3.0] - 2025-11-27

✨ 新增

配置文件系统

  • 新增 ~/.lishrc 配置文件支持(TOML 格式)
  • 支持配置提示符、历史记录、颜色方案
  • 自动加载和保存配置
  • 配置不存在时使用默认配置

命令别名系统

  • 新增 alias 命令:设置和查看命令别名
  • 新增 unalias 命令:删除命令别名
  • 别名自动持久化到配置文件
  • 启动时自动加载别名
  • 支持带参数的别名

新增命令(8 个)

  • tree - 目录树显示,支持 -L 限制层级,-d 只显示目录
  • diff - 文件比较,支持 -q 简要模式
  • du - 磁盘使用情况,支持 -h 人类可读格式,-s 总计模式
  • date - 日期时间显示,支持 --iso--rfc 和自定义格式
  • ps - 进程列表(Windows 使用 tasklist,Linux 使用 ps aux)
  • kill - 终止进程(支持单个或批量)

🎨 改进

用户体验

  • 危险操作二次确认:递归删除 3+ 文件时自动提示确认
  • 命令执行时间显示:超过 100ms 的命令自动显示执行时间
  • 友好的错误提示:使用表情符号标记错误类型(❌ ⚠️
  • 交互式删除rm -i 支持逐个文件确认

Shell 核心

  • 别名自动展开,无缝使用
  • 配置系统集成到 Shell 启动流程
  • 改进错误信息格式和可读性

📦 依赖

  • 新增 github.com/BurntSushi/toml v1.5.0 - TOML 配置文件解析

Lish Dev-Test v0.2.0

20 Nov 13:27
718921a

Choose a tag to compare

更新日志

格式基于 Keep a Changelog
并且本项目遵循 语义化版本

[已发布]

[0.2.0] - 2025-11-20

新增

命令 功能 亮点
cp 复制文件/目录 支持递归、详细模式
mv 移动/重命名 跨盘自动处理
grep 文本搜索 正则、彩色高亮、管道输入
find 查找文件 通配符、类型过滤
head 查看文件头部 可指定行数
tail 查看文件尾部 支持 -f 实时监控
wc 统计字数 行/字/字节统计
env 环境变量 查看和设置
which 查找命令 支持内置命令识别
history 历史管理 查看/清空历史

版本说明

[0.2.0] - TEST 版本

Lish Dev-MVP v0.1.0

19 Nov 09:29

Choose a tag to compare

更新日志

格式基于 Keep a Changelog
并且本项目遵循 语义化版本

[已发布]

计划中

  • cp 命令(复制文件/目录)
  • mv 命令(移动/重命名)
  • grep 命令(文本搜索)
  • find 命令(查找文件)
  • 管道支持
  • 重定向支持
  • 配置文件系统

[0.1.0] - 2025-11-19

新增

  • 🎉 初始版本发布
  • ✨ 实现 REPL 主循环
  • ✨ 命令注册和路由系统
  • ✨ 命令解析器(支持引号和转义)
  • ✨ 11 个内置命令:
    • 文件浏览: ls, pwd, cd
    • 文件操作: cat, touch, mkdir, rm
    • 系统命令: echo, clear, exit
    • 帮助: help
  • ✨ Tab 自动补全(命令和路径)
  • ✨ 命令历史记录(持久化到 ~/.lish_history)
  • ✨ 历史搜索功能(Ctrl+R)
  • ✨ 彩色输出支持
    • 目录显示为蓝色
    • 可执行文件显示为绿色
  • ✨ 智能提示符(显示用户名、主机名、当前目录)
  • 🔧 构建工具
    • Makefile(支持多平台编译)
    • Windows 安装/卸载脚本
  • Windows Terminal 配置示例

版本说明

[0.1.0] - MVP 版本

第一个可用版本,实现了基础的终端功能和核心命令。

Full Changelog: https://github.com/Lingbou/Lish/commits/v0.1.0