xonsh It's based on Python cross-platform Unix Shell Language and command prompt .
The language is Python 3.6+ Superset , With other shell The original language .
xonsh Is a shell language and command prompt . And others Shell Different ,xonsh be based on Python, And added other Syntax , These syntax make it possible to invoke subprocess commands , It's easy to manipulate the environment and work with file systems .xonsh The command prompt gives the user interactive access to xonsh Language .
pip install xonsh[full]
xonsh Language based Python, for instance :
>>> 1 + 1 2
Use... From here >>>
The prefix indicates any xonsh Input . It follows Python Appointment , It also helps to highlight the deception syntax ,( The difference in shell Use $
)
Because it's also Python, Therefore, the module can be imported , Print values and use other built-in Python function :
>>> 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)]
We can also create and use text data types , for example int,float, list , Collections and dictionaries
>>> d = {'xonsh': True} >>> d.get('bash', False) False
xonsh shell Multi line input is also supported , For more advanced flow control . As long as the first line of input itself is syntactically invalid , It will automatically enter the multiline mode . When the cursor is in the first column , If the Enter( or Return), Exit the multiline mode .
>>> if True: ... print(1) ... else: ... print(2) ... 1
Flow control, of course, includes loops .
>>> for i, x in enumerate('xonsh'): ... print(i, x) ... 0 x 1 o 2 n 3 s 4 h
You can also define and call functions and classes .
>>> def f(): ... return "xonsh" ... >>> f() 'xonsh'
To simplify indenting ,Shift + Tab Enter 4 A space . About this part , Please see the “ Basic knowledge of ” part . It's like Python.
environment variable $
Write after name . for example , $HOME
,$PWD
, and $PATH
.
>>> $HOME '/home/snail'
It can be set as Python Set as any other variable in ( And export ) environment variable . The same goes for deleting them .
>>> $GOAL = 'Become the Lord of the Files' >>> print($GOAL) Become the Lord of the Files >>> del $GOAL
${...}
All environment variables exist in the built-in ${...}
(aka __xonsh__.env
) In the map . You can access this mapping directly , But in most cases , You don't need to .
for example , If you want to check whether environment variables exist in the current session :
>>> 'HOME' in ${...} True
To get information about specific environment variables , have access to help()
Method .
>>> ${...}.help('XONSH_DEBUG')
A useful method on ${...}
yes swap()
. It can be used to temporarily set environment variables :
>>> with ${...}.swap(SOMEVAR='foo'): ... echo $SOMEVAR ... ... foo >>> echo $SOMEVAR >>>
stay bash,$NAME
and ${NAME}
Grammatically equivalent . stay xonsh in , They have different meanings .
We can put any effective Python The expression is enclosed in curly braces in ${<expr>}
. then , The result of this expression will be used to find the value in the environment . Here are some practical examples :
>>> x = 'USER' >>> ${x} 'snail' >>> ${'HO' + 'ME'} '/home/snail'
As shell,xonsh The purpose of is to make it easy and interesting to run commands . Running the subprocess command should be like any other shell In the same job .
>>> 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