为什么我爱Xonsh

Shell语言对于交互式使用很有用。 但是,这种优化通常需要权衡使用它们作为编程语言,这在编写shell脚本时有时会感觉到。

输入Xonsh

安装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通过使用Prompt Toolkit支持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就可以了。

翻译自: https://opensource.com/article/18/9/xonsh-bash-alternative

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值