[x-cmd] x-cmd 对 Xonsh 的支持

x-cmd 对 Xonsh 的支持

xonsh 是由 Python 驱动的 shell,能支持用户在命令行中混合使用 Python 和 shell 命令。我们正在尝试将 x-cmd 工具集引入 xonsh 以增强其功能和用户体验。

安装 x-cmd

使用 curl:

sh 复制代码
curl https://get.x-cmd.com | sh
xonsh

使用 wget:

sh 复制代码
wget -O- https://get.x-cmd.com | sh
xonsh

其他情况:

sh 复制代码
# 已安装 x-cmd,但在 xonsh 找不到 x-cmd 的相关命令
sh -c '. "$HOME/.x-cmd.root/X"; x upgrade latest; x onsh --setup'
xonsh

x onsh --setup 对 .xonshrc 的改变

当用户使用 'x onsh --setup' 时,我们在 $HOME/.xonshrc 里面添加了一行启动 x-cmd 的代码,以在启动 xonsh 时启用上述 x-cmd xonshrc 模块.

关于在 .xonshrc 激活 x-cmd 的代码

  • test -e "$HOME/.x-cmd.root/local/data/xonsh/xonshrc" && source "$HOME/.x-cmd.root/local/data/xonsh/xonshrc" # boot up x-cmd.
  • 注意,这一行的末尾有我们的 标识注释 boot up x-cmd.
  • 这一行的作用主要引入了增强函数,以及增加了一些 PATH 路径;
  • 有些时候,可能因为一些人为或者代码的原因,导致 x-cmd 会重复插入新代码,我们的策略是尽量不删除在 '.xonshrc' 的代码,以防止用户的自定义配置信息丢失。
  • 我们尽量简化 x-cmd 在 .xonshrc 中的代码(仅一行),以方便用户理解我们的基本工作原理;如此,用户便可根据需要,禁用(注释或者删除),或者启用后作个性化定制。

激活和配置 shell 类工具

  • 如果你采用 x-cmd 安装了一些工具 (如 starship, asdf),并需要按照这些工具的要求 在 .xonshrc 做启用激活或者配置,建议在 x-cmd 激活代码后面添加你的配置代码。

支持情况

  1. 支持的系统/环境: Linux、MacOS、WSL(Windows Subsystem for Linux)、Cygwin、MSYS2(如 Gitbash )
  2. x-cmd 提供的工具:
    • 常用命令(如 cd、ip、ps、tar、apt、brew)的封装:封装后的命令相比于原生命令更智能,使用起来更加简单直观。
    • 轻量的包管理工具:我们使用 shell 和 awk 实现了一个轻量的包管理工具,通过它你可以快速获取到大部分常用软件工具,如 jq、7za、bat、nvim、python、node、go 等。
    • 实用网站(如 github.com、cht.sh)的 CLI:我们用 shell 和 awk 封装了它们提供的 api,以便日常使用和在脚本中获取相应的服务。
    • AI 工具:我们提供 ChatGpt/Gemini/Jina.ai 等的 CLI ,并根据不同的应用场景封装了相应的快捷命令,如 @gemini 用于与 Gemini AI 聊天、@zh 为用 AI 翻译指定内容或命令运行结果。

注意: 上述支持仍处于 Beta 功能阶段。

当前问题

  1. @命令调用问题 :在 xonsh 里,因为 @<name> 会被解释为 annotation,所以在不提供参数时 (例如 @gemini),xonsh 会等待用户传入被装饰的函数。用户可以输入 ; 来避免这个问题,如 @gemini ;
  2. pipe 问题:我们尝试对 x 命令进行函数包装以获取 xonsh 环境变量,但我们发现该方案在 pipe 的处理和判断方面会出现一些难以处理的问题。因此,当前的 x 命令将关闭环境变量,转而采用通过文件传递,以保证 pipe 可以正常使用。
相关推荐
ShineWinsu2 分钟前
对于Linux:文件操作以及文件IO的解析
linux·c++·面试·笔试·io·shell·文件操作
ZKNOW甄知科技2 分钟前
数智同行:甄知科技2026年Q1季度回顾
运维·服务器·人工智能·科技·程序人生·安全·自动化
-SGlow-2 分钟前
Linux相关概念和易错知识点(52)(基于System V的信号量和消息队列)
linux·运维·服务器
jikemaoshiyanshi4 分钟前
B2B企业GEO服务商哪家好?深度解析径硕科技(JINGdigital)及其JINGEO产品为何是首选
大数据·运维·人工智能·科技
江畔何人初4 分钟前
TCP的三次握手与四次挥手
linux·服务器·网络·网络协议·tcp/ip
跨境麦香鱼6 分钟前
Playwright vs Puppeteer:2026自动化任务与爬虫工具如何选?
运维·爬虫·自动化
洒家肉山大魔王9 分钟前
PKI/CA X.509证书的基础应用与解读
服务器·https·密码学·数字证书
xingyuzhisuan16 分钟前
Blender渲染加速:4090服务器OptiX后端性能提升50%
运维·服务器·性能优化·gpu算力
Trouvaille ~18 分钟前
【MySQL篇】数据库操作:从创建到管理
linux·数据库·mysql·oracle·xshell·ddl
2401_8396339120 分钟前
Flutter 框架跨平台鸿蒙开发 - 声音密码锁
服务器·flutter·华为·harmonyos