博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么我爱Xonsh
阅读量:2524 次
发布时间:2019-05-11

本文共 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/

你可能感兴趣的文章
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_2_冗余的Runnable代码...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_13_Thread和Runnable的区别...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_14_匿名内部类方式实现线程的创建...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_1_线程安全问题的概述...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_2_线程安全问题的代码实现...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_3_编程思想转换&体验Lambda的更优写法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_4_Object类中wait带参方法和notifyAll方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_4_Lambda标准格式...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_5_Lambda表达式的无参数无返回值的...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_6_Lambda表达式有参数有返回值的...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_2_File类的静态成员变量...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_7_Lambda表达式有参数有返回值的练习...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_3_绝对路径和相对路径...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_8_Lambda省略格式&Lambda使用前...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_1_File类的概述
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_4_File类的构造方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_5_File类获取功能的方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_6_File类判断功能的方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_7_File类创建删除功能的方法...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_8_File类遍历(文件夹)目录功能...
查看>>