在xonsh shell中粘贴并运行bash、zsh、fish命令。

xontrib-sh的Python项目详细描述


xonsh shell中粘贴并运行bash、fish、zsh、tcsh命令。 在

如果你喜欢这个主意,点击⭐ 关于回购,敬请关注。 在

安装

xpip install -U xontrib-sh
echo'xontrib load sh' >> ~/.xonshrc
# Reload xonsh

使用

!(带空格的感叹号)开始行,然后在其后面粘贴与sh兼容的命令并运行。 命令语法将在shells from列表(如果已安装)中进行测试,并将在中运行这些命令 第一个匹配的外壳。默认情况下,shell列表包含bash和sh

命令将在从当前继承的环境中执行,但如果命令修改 环境不会有变化,源xonsh环境。在

要设置shell列表,请在加载xontrib之前使用环境变量:

^{pr2}$

主要用例

xontrib-sh的主要使用情况是从某篇文章或指令中复制并粘贴sh命令 这些命令与环境无关,您希望在不重写xonsh或runshshell的情况下运行它。在

例如,您发现了检查curl的现有bash命令片段:

TMP=/tmp &&cd$TMP&&([[ -x $(command -v curl)]]&&echo"Curl! :)"||echo"No curl! :(")

你很犹豫xonsh将如何执行这一点,你是绝对正确的,这将是语法错误。 要运行它,只需从!开始并粘贴命令。结果你会看到正确的信息。在

示例

一行:撑木展开

! echo01.{05..10}
bash:
01.05 01.06 01.07 01.08 01.09 01.10

多行:for loop

! for i in 123doecho$idone
bash:
1
2
3

使用环境变量将值从xonsh传递到sh

$ENV='hello'!echo$ENV!
bash:
hello!

已知问题

在使用许多不同的shell的情况下,当命令包含shell特定语法时,shell的检测工作非常完美。 但是如果您运行的短命令在所有shell中都有效,那么将选择第一个匹配的shell,但它可能是错误的。在

例如,在shell列表中有bash和fish。short fish命令可以确定为bash命令。 因此,命令将失败:

$XONTRIB_SH_SHELLS=['bash','fish']xontribloadsh# Run fish command:!set-UEDITORvim# bash: line 0: set: -U: invalid option

小心使用外壳列表!如果你有想法如何提高外壳检测拉请求欢迎!在

学分

此包是用xontrib cookiecutter template创建的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何修复尝试将用户签名到服务器主机时出现的“字符串无法转换为json对象”错误?   控制台Java:不使用新行更新命令行中的文本   java servlet接收xml数据时,出现错误   使用REST API在Bitbucket中复制或复制存储库   java如何在JavaFX中对齐一行?   java如何在活动中显示通过服务获得的数据?   返回BigDecimal作为字符串:返回int   java组织。openqa。硒。InvalidSelectorException:尝试查找元素时选择器无效   java仅在阻塞状态下通知和通知所有影响线程   java JBOSS无法启动部署   java方法的返回值能保证类型安全吗?   JavaeShadoop序列化组织。阿帕奇。hadoop。木卫一。短写失败   java如果我在同一个类上同步了两个方法,它们能同时运行吗?   不使用java数据库的spring分页实现   java如何将字符串切碎成这样的数组?