xonsh是一种基于Python的跨平台Unix Shell语言和命令提示符。
该语言是Python 3.6+的超集,带有其他shell原语。
xonsh是一种外壳语言和命令提示符。与其他Shell不同,xonsh基于Python,并添加了其他语法,这些语法使调用子流程命令,操纵环境以及处理文件系统变得容易。xonsh命令提示符使用户可以交互式访问xonsh语言。
pip install xonsh[full]
xonsh语言基于Python,比如说:
>>> 1 + 1 2
从这里使用>>>
前缀提示任何xonsh输入。它遵循Python约定,并有助于欺骗语法高亮显示,(区别于shell使用$
)
因为这也是Python,因此能够导入模块,打印值并使用其他内置的Python功能:
>>> import sys >>> print(sys.version) 3.4.2 |Continuum Analytics, Inc.| (default, Oct 21 2014, 17:16:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
我们还可以创建和使用文字数据类型,例如int,float,列表,集合和字典
>>> d = {'xonsh': True} >>> d.get('bash', False) False
xonsh shell还支持多行输入,以进行更高级的流量控制。只要输入的第一行本身在语法上无效,就会自动进入多行模式。当光标位于第一列中时,如果按Enter(或Return),则退出多行模式。
>>> if True: ... print(1) ... else: ... print(2) ... 1
流控制当然包括循环。
>>> for i, x in enumerate('xonsh'): ... print(i, x) ... 0 x 1 o 2 n 3 s 4 h
还可以定义和调用函数和类。
>>> def f(): ... return "xonsh" ... >>> f() 'xonsh'
为了简化缩进,Shift + Tab将输入4个空格。关于这部分内容,请参见“基础知识”部分。就像Python。
环境变量$
按名称后写。例如, $HOME
,$PWD
,和$PATH
。
>>> $HOME '/home/snail'
可以像设置Python中的任何其他变量一样设置(和导出)环境变量。删除它们也是如此。
>>> $GOAL = 'Become the Lord of the Files' >>> print($GOAL) Become the Lord of the Files >>> del $GOAL
${...}
所有环境变量都存在于内置${...}
(aka __xonsh__.env
)映射中。您可以直接访问此映射,但是在大多数情况下,您不需要这样做。
例如,如果您要检查当前会话中是否存在环境变量:
>>> 'HOME' in ${...} True
要获取有关特定环境变量的信息,可以使用 help()
方法。
>>> ${...}.help('XONSH_DEBUG')
上的一种有用的方法${...}
是swap()
。它可以用于临时设置环境变量:
>>> with ${...}.swap(SOMEVAR='foo'): ... echo $SOMEVAR ... ... foo >>> echo $SOMEVAR >>>
在bash,$NAME
并${NAME}
在语法上等价的。在xonsh中,它们具有不同的含义。
我们可以将任何有效的Python表达式放在中的花括号内 ${<expr>}
。然后,该表达式的结果将用于在环境中查找值。以下是一些实际的示例:
>>> x = 'USER' >>> ${x} 'snail' >>> ${'HO' + 'ME'} '/home/snail'
作为shell,xonsh的目的是使运行命令变得轻松而有趣。运行子进程命令应该像在其他任何shell中一样工作。
>>> echo "Yoo hoo" Yoo hoo >>> cd xonsh >>> ls build docs README.rst setup.py xonsh __pycache__ dist license scripts tests xonsh.egg-info >>> dir scripts xonsh xonsh.bat >>> git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: docs/tutorial.rst no changes added to commit (use "git add" and/or "git commit -a") >>> exit
RVB2601 板子整体干净利落 不过有些地方还可以做的更好 纯属个人观点。 板子丝印...
普通公网 IP 问题 云服务器没有公网 IP 如何实现公网访问? 如果您在购买机器时...
阿里云AnalyticDB for PostgreSQL 以下简称 ADB PG 即原HybridDB for PostgreSQL...
如今,数据分析、数据可视化和大数据等术语已经变得非常流行。这些术语主要与涉...
北京idc机房指的是北京的互联网数据中心,北京idc机房包含电信,联通,移动单线...
最近栈长发现 IntelliJ IDEA 居然还能画思维导图,太牛逼了! 当然这得借助 IDEA...
作者 柏锐 在关系型数据库的查询中join是一个十分常见的操作 通过将几个表关联起...
Cloudera Manager是cloudera公司提供的一种大数据的解决方案,可以通过ClouderaM...
云服务器 一般多少钱一台? 云服务器 的费用主要是由它的配置决定的。就像我们买...
虚拟主机 和 云服务器 哪个好?虚拟主机和 云服务器 都是搭 建网站 所需要的,就...