[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 可以正常使用。
相关推荐
岁月玲珑3 分钟前
ComfyUI如何配置启动跳转地址127.0.0.1但是监听地址是0.0.0.0,::
java·服务器·前端
迅为电子25 分钟前
嵌入式Linux新手入门:北京迅为3568开发板驱动开发第二章helloworld 驱动实验
linux·运维·驱动开发
2301_796512521 小时前
Rust编程学习 - 如何学习有关函数和闭包的高级特性,这包括函数指针以及返回闭包
服务器·学习·rust
哈乐1 小时前
网工应用题:配置命令补全类题目
服务器·前端·网络
张人玉1 小时前
C# TCP 服务器和客户端
服务器·tcp/ip·c#
雯0609~1 小时前
宝塔配置:IP文件配置,根据端口配置多个项目文件(不配置域名的情况)
服务器·网络协议·tcp/ip
河南博为智能科技有限公司1 小时前
RS485转以太网串口服务器-串口设备联网的理想选择
大数据·服务器·人工智能·单片机·嵌入式硬件·物联网
JanelSirry1 小时前
Redis服务器的的内存是多大
服务器·redis·github
王道长服务器 | 亚马逊云3 小时前
AWS + WordPress:中小型外贸独立站的理想组合
服务器·网络·云计算·音视频·aws
nono牛3 小时前
MTK平台详解`adb devices`输出的序列号组成
android·linux·adb·智能手机