[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 可以正常使用。
相关推荐
model20055 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
yuhaiqun19895 小时前
学服务器训练AI模型:5步路径助力高效入门
运维·服务器·人工智能·笔记·机器学习·ai
huaweichenai5 小时前
docker部署kkFileView实现文件预览功能
运维·docker·容器
以太浮标5 小时前
华为eNSP模拟器综合实验之-BFD联动配置解析
运维·网络·华为·信息与通信
阿杰 AJie5 小时前
主流传输 /通信协议的【使用场景 + 详细使用说明】大全
服务器·tcp/ip
工程师老罗6 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
千百元6 小时前
centos如何删除恶心定时任务
linux·运维·centos
skywalk81636 小时前
网站证书自动续订失败的问题解决,原来是续订指令certbot renew出错,导致crontab定时任务续订失败
运维·服务器·证书·certbot
额呃呃6 小时前
游戏服务器和一般高性能服务器的区别
运维·服务器·游戏
liwulin05066 小时前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket