[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 小时前
【Linux】网络基础
linux·运维·网络
拉拉拉拉拉拉拉马3 小时前
在ssh远程连接的autodl服务器(中国无root权限服务器)上使用copilt的Claude模型
运维·服务器·ssh
敲上瘾3 小时前
HTTP协议工作原理与生产环境服务器搭建实战
服务器·网络·c++·网络协议·http
伞啊伞3 小时前
自动化运维工具 Ansible 集中化管理服务器
运维·自动化·ansible
一只花里胡哨的程序猿3 小时前
odoo18应用、队列服务器分离(SSHFS)
运维·服务器·odoo
风车带走过往3 小时前
部署开源PPTagent 生成工具
linux·开源
范桂飓4 小时前
在 Windows GPU 机器上运行 Linux CUDA
linux·运维·windows
小跌—4 小时前
Linux:线程池
linux
深思慎考4 小时前
LinuxC++项目开发日志——基于正倒排索引的boost搜索引擎(4——通过jsoncpp库建立搜索模块)
linux·c++·搜索引擎