在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创建的。在
- 项目
标签: