一直都很好奇,Python可否作为Shell使用?
Shell语言对于互动式应用来讲很有用。但是,它通常需要做出不能同时作为编程语言使用的取舍。有时候,在写Shell脚本时,这却是必须的。
如果你的Shell可以理解一个更具扩展性的编程语言,情况会不会不一样呢?比如说,Python?
让我们进入Xonsh。
安装Xonsh和创建一个虚拟环境一样简单。运行pip install xonsh[ptk,linux],然后再运行xonsh。
首先,你可能奇怪为什么你的Python Shell有一个奇怪的提示符:
很好的计算器!
我们也可以调用其它函数:
但是,我们仍然可以把他当作一个常规Shell来使用:
我们甚至可以混在一起使用:
通过使用提示工具包程序,Xonsh可以支持Shell命令和Python表达式的自动完成功能。自动完成功能可以提供提示,显示可能的完整命令和下拉提示。
它也支持环境访问,使用简单却强大的的探索功能把Python类型应用到环境变量上。默认是“字符串”格式,但是比如路径变量会自动是list对象。
Xonsh既可以接受Shell类型或Python类型的布尔快捷操作符。
这意味着Python关键字会被解释。如果我们想输出著名的苏斯博士的书的名字,我们需要把关键字用引号引用起来。
如果我们不这样做,结果就会很怪异。
虚拟环境可能需要费点劲。常规虚拟环境取决于BASH类语法,可能不能工作。但是,Xonsh自带了虚拟环境管理系统,叫做vox。
vox可以创建、进入和退出~/.virtualenvs环境。如果你用过virtualenvwrapper,它的虚拟环境便是这里。
注意,当前进入的环境并不影响Xonsh。它不能从所在环境导入任何东西。
第一行让vox可用,是Xonsh的第三方扩展,叫做xontrib。xontrib管理程序会列出所有可用的xontribs以及他们的当前状态(已安装、已加载、或都没有)。
写一个xontrib是可行的,并可以上传到pypi使其可用。但是,把它添加到xontrib索引中是个好的做法,可以让Xonsh提前知道它。比如说,这可以让配置引导程序提出建议。
如果你曾经有过“Python可以作为我的Shell吗?”的疑问,那么你只需要运行pip install xonsh来找到它。
英文原文:https://opensource.com/article/18/9/xonsh-bash-alternative
译者:Ray