[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 可以正常使用。
相关推荐
AI浩19 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
石像鬼₧魂石19 小时前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
sunxunyong20 小时前
doris运维命令
java·运维·数据库
Guheyunyi20 小时前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
椰子今天很可爱20 小时前
五种I/O模型与多路转接
linux·c语言·c++
Lueeee.20 小时前
Linux kernel Makefile 语法
linux
爱吃山竹的大肚肚1 天前
EasyPOI 大数据导出
java·linux·windows
极地星光1 天前
dmesg 工具的核心功能与作用
linux
雾削木1 天前
k230 Pyhton三角形识别
运维·服务器·网络·stm32·智能路由器
北京聚信万通科技有限公司1 天前
传输协议:AS3
服务器·网络·安全·电子数据交换·as3