当前位置: 首页 > news >正文

[x-cmd] X-CMD 的依赖非常精简,即装即用,无需额外配置

X-CMD 的依赖非常精简,即装即用,无需额外配置

x-cmd 设计之初便秉持最小化依赖的理念,确保用户无需额外安装繁杂的组件,即可在各类系统环境中顺畅安装运行。

核心依赖系统预装工具, 扩展工具则从 x-cmd 或者 conda 官方源按需下载

x-cmd 的运行依赖于系统自带的基础工具(如 ls、cat、mkdir、find、curl、awk);而对于其他功能扩展性的工具(如 7zayqfzf),x-cmd 会在首次使用时在当前环境寻找, 如果找不到, 将从 x-cmd 的 pkg 官方源 ( 少数采用 pixi 方案则从 conda 官方源下载 ),无需用户手动预装。

  • curl/wget:x-cmd 的网络请求功能主要依赖于 curl。如果你的环境中没有 curl,x-cmd 会自动使用 wget 下载 curl。
  • awk:x-cmd 的文本处理功能大量依赖了 awk。

关于 AWK

在不同环境下的 awk 版本可能存在差异,如正则表达式、UTF-8 的支持、流式处理的缓存策略等,我们尽最大的努力优化了兼容性。但部分环境仍可能存在问题。如遇异常,欢迎提交 issue。

  • 🙏 为了方便复原和定位问题,还请大家能在 issue 中提供报错日志/截图系统环境AWK 版本等相关信息。

常见 AWK 实现

以下是我们目前支持的列表,这也是已知的在主流系统预装的列表:

awk系统版本
mawkdebian 系/ubuntu 系1.3.3/1.3.4
nawkmacosmacos 11 ( Big Sur,2020年发布 ) 及以后系统所预装的 nawk 版本,详情可见表格下注释
busybox-awkalpine
gawkarch/redhat/fedora 等系统

MacOS 与 nawk

x-cmd 内的 awk 库以文件为单位组织,而 MacOS 10 (Catalina) 所自带的 awk 是一个版本较旧的 nawk,该版本不接受多个 -f <awk-filepath> 参数。在该环境下使用 x-cmd,会出现如下的报错信息:/usr/bin/awk: too many -f options

早在 2022 年时设计 awk 模块时,我就实验过几种可能替代方案,例如可以在运行时生成合并 awk 文件,但弊处很明显:

  1. 运行时会增加临时文件,带来额外的文件系统开销,以及后续的管理成本。
  2. 每次启动需要检测依赖文件是否更新,这会带来启动开销。
  3. 同一用户下会有多个 x-cmd 版本,这会继续增加生成文件的管理成本。

考虑到不支持该项特性的 awk 只会越来越少,因此我们决定放弃对该 nawk 版本的支持。虽说如此,但直到 2024 年不时仍会有部分朋友发起相关的 issue。

  • 解决方案
  1. (方案一)升级 AWK:用户可以采用 x cosmo use awk 命令获取 cosmo 提供的 awk 二进制,当 x-cmd 在环境加载后,该 awk 也会优先使用;或者使用 Homebrew 安装 GAWK(brew install gawk)。
  2. (方案二)升级 MacOS 系统:我们强烈建议用户升级 macOS 版本; 一方面,直至 2024 年新版的 MacOS 仍支持 Intel 版本;另一方面,升级后能及时获取安全更新。
http://www.dtcms.com/a/391599.html

相关文章:

  • TM52F1363 电子元器件 海速芯 8位高性能微控制器(MCU)技术解析
  • 打工人日报#20250919
  • vue3学习日记(十九):组件实例详解
  • 【开题答辩全过程】以 基于python的订餐系统为例,包含答辩的问题和答案
  • 题解:CF2143E Make Good
  • 鸿蒙:使用worker实现多线程通信
  • Spring MVC 常用注解及代码示例
  • 【DMA】DMA入门:外设数据到内存,以串口DMA接收为例,解析底层实现
  • Java 中 super 和 this关键字总结
  • 我的创作纪念日 ----- 第512天
  • 【docker】删除镜像
  • 亚马逊 MWS 关键字 API 实战:关键字搜索商品列表接口深度解析与优化方案
  • 博文干货 | Pulsar 平均负载器(AvgShedder)
  • 【硬件】嘉立创专业版layout流程(一)
  • PyQt6之分组框
  • 深度剖析 IM 单聊与群聊架构设计
  • 农业自动化:技术重塑传统农业的新范式
  • Nginx 日志文件在哪?
  • 小程序开发者转多端应用app调整视频播放功能
  • 九、Java-注解
  • Java学习笔记——AI插件、新建模块、算数运算符类型、隐式转换、强制转换、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符
  • 【从零开始刷力扣006】leetcode206
  • FreeRTOS——介绍及移植过程
  • Day 07 Physics list-----以B1为例
  • 重读一次IS015765-2,记录对错误和异常处理的方式
  • Edge浏览器CSDN文章编辑时一按shift就乱了(Edge shift键)欧路翻译问题(按Shift翻译鼠标所在段落)
  • SpringIoc 基础练习 验证码
  • 前端项目,CDN预热有什么用?
  • TF卡的存储数据结构—fat32格式
  • led的带宽在模拟太阳光中设备中的影响