Releases: Lingbou/Lish
Releases · Lingbou/Lish
Lish Dev v0.5.4
格式基于 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.txtln - 创建链接
# 创建符号链接(需要管理员或开发者模式)
lish> ln -s C:\data\project.txt link.txt
# 创建硬链接(文件)
lish> ln file.txt hardlink.txt
# 目录符号链接
lish> ln -s C:\work\code code_link启用开发者模式:
- 设置 → 更新和安全 → 开发者选项
- 启用"开发者模式"
- 重启 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
[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.txtLish Dev v0.5.2
[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
所有重要的项目变更都会记录在这个文件中。
格式基于 Keep a Changelog,
版本号遵循 语义化版本。
[0.5.1] - 2025-12-03
✨ 新增
主题系统 🎨
- 完整的主题系统:从 8 个精美的内置主题中选择
- 颜色方案系统:统一的颜色接口和 ANSI RGB 转换
- 主题管理器:加载、切换、保存主题
- 提示符定制:支持
{user},{host},{cwd},{git}变量和颜色 - 语法高亮:命令、参数、字符串、变量、操作符实时高亮
theme命令:完整的主题管理工具
8 个内置主题
- dark - 默认暗色主题(亮绿命令)
- light - 亮色主题(深绿配色)
- solarized-dark - Solarized Dark(经典配色)
- solarized-light - Solarized Light
- gruvbox - Gruvbox Dark(复古温暖)
- dracula - Dracula(紫色梦幻)
- nord - Nord(冷色极简)
- 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
[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
更新日志
格式基于 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
更新日志
格式基于 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
更新日志
格式基于 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