本文共 2742 字,大约阅读时间需要 9 分钟。
Shell语言对于交互式使用很有用。 但是,这种优化通常需要权衡使用它们作为编程语言,这在编写shell脚本时有时会感觉到。
输入 。
安装Xonsh就像创建虚拟环境一样简单,先运行pip install xonsh[ptk,linux]
,然后再运行xonsh
。
首先,您可能想知道为什么您的Python Shell会有一个奇怪的提示:
$ 1+1 2
不错的计算器!
$ print("hello world") hello world
我们还可以调用其他函数:
$ from antigravity import geohash $ geohash(37.421542, -122.085589, b'2005-05-26-10458.68') 37.857713 -122.544543
但是,我们仍然可以像常规shell一样使用它:
$ echo "hello world" hello world
我们甚至可以混合搭配!
$ for i in range(3): . echo "hello world" . hello world hello world hello world
Xonsh通过使用支持Shell命令和Python表达式的完成。 完成具有视觉效果,显示可能的完成并具有带内下拉列表。
它还支持环境访问。 它使用简单但功能强大的启发式方法将Python类型应用于环境变量。 默认值为“字符串”,但是,例如,路径变量是自动列出的。
$ '/usr/bin' in $PATH True
Xonsh接受shell风格或Python风格的布尔快捷方式运算符:
$ cat things foo $ grep -q foo things and echo "found" found $ grep -q bar things && echo "found" $ grep -q foo things or echo "found" $ grep -q bar things || echo "found" found
这意味着将解释Python关键字。 如果要打印一本著名的苏斯博士著作的书名,则需要引用这些关键词。
$ echo green eggs "and" ham green eggs and ham
如果我们不这样做,我们会感到惊讶:
$ echo green eggs and ham green eggs xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True xonsh: subprocess mode: command not found: ham Did you mean one of the following? as: Command (/usr/bin/as) ht: Command (/usr/bin/ht) mag: Command (/usr/bin/mag) ar: Command (/usr/bin/ar) nm: Command (/usr/bin/nm)
虚拟环境可能会有些棘手。 常规虚拟环境无法正常运行,因为它们依赖于类似Bash的语法。 但是,Xonsh带有自己的虚拟环境管理系统vox
。
vox
可以在~/.virtualenvs
创建,激活和停用环境; 如果您使用过virtualenvwrapper
,那么这里就是环境所在。
请注意,当前激活的环境不会影响x
onsh
。 它无法从激活的环境中导入任何内容。
$ xontrib load vox $ vox create my-environment ... $ vox activate my-environment Activated "my-environment". $ pip install money ... $ python ... >>> import money >>> money.Money('3.14') $ import money xonsh: For full traceback set: $XONSH_SHOW_TRACEBACK = True ModuleNotFoundError: No module named 'money'
第一行启用vox
:这是xontrib
,它是xontrib
的第三方扩展。 xontrib
管理器可以列出所有可能的xontribs
及其当前状态(已安装,已加载或两者均未列出)。
可以编写一个xontrib
并将其上传到PyPi
使其可用。 但是,将其添加到xontrib
索引是个好习惯,这样Xonsh会提前知道它。 例如,这允许配置向导提出建议。
如果您曾经想过,“ Python可以成为我的外壳吗?” 那么您只需一pip install xonsh
就可以了。
翻译自:
转载地址:http://krczd.baihongyu.com/