x-cmd 发布 v0.8.5 : humantime 人性化时间转换,tmp 跨平台临时文件管理,assert 轻松搞定测试断言

0 阅读2分钟

TLDR:

x-cmd v0.8.5 主要新增 7 个基础库的文档,回顾一下每个模块功能:

  • humantime: 支持秒数和人性化时间互相转换
  • is: 判断值是否符合预期
  • assert: 测试断言,验证结果是否符合预期
  • host: 基于/etc/hosts文件的 host 表管理
  • tmp: 跨平台临时文件和目录管理
  • rand: 生成随机 UUID、邮箱、IP 等数据
  • str: 提供大小写转换、分割等字符串操作

x-cmd-v085.cn.webp

🚀 x-cmd v0.8.5 Beta 更新详情

humantime ⏰

增加 humantime 模块文档 —— 为时间参数转换提供底层支持。

人类说"等3小时",机器只懂"10800秒"。这个 GAP 由 humantime 来填。 它是 x sleep 3hx timeout 2h30m 等命令的基础设施,让用户能直接用自然语言表达时间。

x humantime 3600      # 输出 1h
x humantime 2h30m     # 输出 9000

支持 d/h/m/s,小数秒也行。下次写定时任务不用再心算了。

is 🔍

is 模块增加文档 —— 写脚本时 [ ] 语法总让我心虚。

特别是检查数字范围、文件新旧、环境类型这些,test 命令的写法我总是记混。 干脆封装成一个个子命令,语义更清晰。

x is int 42                 # 是不是整数?
x is minmax 1 100 50        # 50 在 1-100 范围内吗?
x is interactive            # 当前是交互式 shell 吗?

支持类型检查、范围判断、文件新旧比较、环境检测。代码读起来更自解释。

assert 🛡️

assert 模块增加文档 —— 被一次 debug 搞崩溃了。

有个函数偷偷改了 $HOME,后面所有命令全挂了,找了半天才发现。 所以做了这个测试工具,重点是变量快照功能:保存 → 执行 → 对比,一眼看出谁泄漏了。

x assert true [ 1 -eq 1 ]
x assert var save; my_func; x assert var cmp

也支持常规的 true/false、类型检查、文件判断。写模块测试时用着挺顺手的。

host 🌐

host 模块增加文档 —— 改 /etc/hosts 这件事我始终觉得危险。

sudo vim 进去,手一抖改错了,DNS 就全乱了。而且找域名的时候还得肉眼扫。 做个带模糊搜索的安全版本,自动备份,错了还能恢复。

x host              # 分页查看,支持搜索
x host fz           # 模糊找域名
x host ed myapp.local=192.168.1.100

编辑前自动备份,操作都在临时文件完成,确认无误才写入。放心多了。

tmp 📁

tmp 模块增加文档 —— 跨平台临时目录这事实在是太乱了。

Linux 是 /tmp,macOS 可能是 $TMPDIR,Windows 又是另一套。写脚本时总要判断。 统一封装一下,还加了创建临时文件/目录的功能。

x tmp path          # 获取系统临时目录
x tmp mkdir cache   # 创建临时目录
x tmp mkfile        # 创建临时文件

_ 后缀的是内部版本(如 x tmp path_),结果存变量,供其他脚本调用。

rand 🎲

rand 模块增加文档 —— 写测试数据时 $RANDOM 不够用了。

需要 UUID、假邮箱、随机 IP 的时候,总要去翻其他工具。 干脆集成到一起,还能批量生成。

x rand uuid
x rand uuidv7       # 时间有序的 UUID
x rand email 5      # 批量生成 5 个邮箱
x rand int 1 100    # 1-100 之间的随机整数

也支持浮点数、不同格式的字符串。写测试用例时少很多烦心事。

str 🔤

str 模块增加文档 —— awk/sed/tr 组合拳我老是记混。

大小写转换、base64、trim、replace,这些简单操作其实挺常用的。 但每次都要想「这次该用哪个工具」就很烦。统一到一个命令里省事多了。

x str upper hello
x str base64 hello
x str trim "  spaced  "

还支持 split/join、md5/sha256、换行符转换。日常字符串处理基本够用了。

gemini 🤖

修复配置自定义 endpoint 不生效的问题 —— 抱歉,这是个低级错误。

有用户反馈配置了中转站 endpoint 但请求还是跑到 Google 官方去了。 查了下发现是配置读取时的逻辑问题,自定义 endpoint 没有被正确应用到请求中。

现在配置会正确生效了:

x gemini --cfg endpoint=https://your-proxy.example.com

感谢 @shlroland 在 #376 的反馈。

⬆️ 如何升级

现有用户可以通过以下命令快速切换至 Beta 版本进行体验:

x upgrade beta

如果你没有安装 x-cmd, 只需要打开你的终端:

eval "$(curl https://get.x-cmd.com)"

x-cmd 是一个一站式的命令行工具集,其强大的功能可以为人类用户和AI共同使用。它还简化了很多工具的安装方法。 马上安装,让 x-cmd 协同 AI 成为你的最强助手,实现生产力翻倍!

🤝 开发者反馈

如果您在自定义配置或代理设置中遇到任何疑问,欢迎前往 GitHub Issues 提交反馈,共同完善 X-CMD 生态。