前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >既能执行shell又可以执行python的环境

既能执行shell又可以执行python的环境

原创
作者头像
mariolu
发布2021-05-28 11:45:52
1K0
发布2021-05-28 11:45:52
举报

xonsh是一种基于Python的跨平台Unix Shell语言和命令提示符。

该语言是Python 3.6+的超集,带有其他shell原语。

xonsh是一种外壳语言和命令提示符。与其他Shell不同,xonsh基于Python,并添加了其他语法,这些语法使调用子流程命令,操纵环境以及处理文件系统变得容易。xonsh命令提示符使用户可以交互式访问xonsh语言。


一、安装:

代码语言:javascript
复制
pip install xonsh[full]

二、基础语法:

xonsh语言基于Python,比如说:

代码语言:javascript
复制
>>> 1 + 1
2

从这里使用>>>前缀提示任何xonsh输入。它遵循Python约定,并有助于欺骗语法高亮显示,(区别于shell使用$

因为这也是Python,因此能够导入模块,打印值并使用其他内置的Python功能:

代码语言:javascript
复制
>>> 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,列表,集合和字典

代码语言:javascript
复制
>>> d = {'xonsh': True}
>>> d.get('bash', False)
False

xonsh shell还支持多行输入,以进行更高级的流量控制。只要输入的第一行本身在语法上无效,就会自动进入多行模式。当光标位于第一列中时,如果按Enter(或Return),则退出多行模式。

代码语言:javascript
复制
>>> if True:
...     print(1)
... else:
...     print(2)
...
1

流控制当然包括循环。

代码语言:javascript
复制
>>> for i, x in enumerate('xonsh'):
...     print(i, x)
...
0 x
1 o
2 n
3 s
4 h

还可以定义和调用函数和类。

代码语言:javascript
复制
>>> def f():
...     return "xonsh"
...
>>> f()
'xonsh'

为了简化缩进,Shift + Tab将输入4个空格。关于这部分内容,请参见“基础知识”部分。就像Python。

三、环境变量

环境变量$按名称后写。例如, $HOME$PWD,和$PATH

代码语言:javascript
复制
>>> $HOME
'/home/snail'

可以像设置Python中的任何其他变量一样设置(和导出)环境变量。删除它们也是如此。

代码语言:javascript
复制
>>> $GOAL = 'Become the Lord of the Files'
>>> print($GOAL)
Become the Lord of the Files
>>> del $GOAL

2.1 环境本身${...}

所有环境变量都存在于内置${...}(aka __xonsh__.env)映射中。您可以直接访问此映射,但是在大多数情况下,您不需要这样做。

例如,如果您要检查当前会话中是否存在环境变量:

代码语言:javascript
复制
>>> 'HOME' in ${...}
True

要获取有关特定环境变量的信息,可以使用 help()方法。

代码语言:javascript
复制
>>> ${...}.help('XONSH_DEBUG')

上的一种有用的方法${...}swap()。它可以用于临时设置环境变量:

代码语言:javascript
复制
>>> with ${...}.swap(SOMEVAR='foo'):
...     echo $SOMEVAR
...
...
foo
>>> echo $SOMEVAR

>>>

2.1.1 注意:

在bash,$NAME${NAME}在语法上等价的。在xonsh中,它们具有不同的含义。

我们可以将任何有效的Python表达式放在中的花括号内 ${<expr>}。然后,该表达式的结果将用于在环境中查找值。以下是一些实际的示例:

代码语言:javascript
复制
>>> x = 'USER'
>>> ${x}
'snail'
>>> ${'HO' + 'ME'}
'/home/snail'

三、运行命令

作为shell,xonsh的目的是使运行命令变得轻松而有趣。运行子进程命令应该像在其他任何shell中一样工作。

代码语言:javascript
复制
>>> 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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、安装:
  • 二、基础语法:
  • 三、环境变量
    • 2.1 环境本身${...}
      • 2.1.1 注意:
  • 三、运行命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档