xonsh is a Python-powered shell. Full-featured and cross-platform. The language is a superset of Python 3.6+ with additional shell primitives. Xonsh word was made from conch (🐚, @) and indicates belonging to the command shells world.
Xonsh is the Shell | Xonsh is Python |
cd $HOME
id $(whoami)
cat /etc/passwd | grep root > ~/root.txt
$PROMPT = '@ ' |
2 + 2
var = "hello".upper()
import json; json.loads('{"a":1}')
[i for i in range(0,10)] |
Xonsh is the Shell in Python | Xonsh is Python in the Shell |
len($(curl -L https://xon.sh))
$PATH.append('/tmp')
p'/etc/passwd'.read_text().find('root')
id = $(@json docker ps --format json)['ID'] |
name = 'foo' + 'bar'.upper()
echo @(name) > /tmp/@(name)
ls @(input('file: '))
aliases['e'] = 'echo @(2+2)'
aliases['a'] = lambda args: print(args) |
If you like xonsh, ⭐ the repo, write a tweet and stay tuned by watching releases.
Install xonsh from pip:
python -m pip install 'xonsh[full]'
And visit https://xon.sh for more information:
- Installation - using packages, docker or AppImage.
- Tutorial - step by step introduction in xonsh.
Xonsh has an extension/plugin system. We call these additions xontribs
.
- conda and mamba: Modern package managers.
- Starship: Cross-shell prompt.
- zoxide: A smarter cd command.
- gitsome: Supercharged Git/shell autocompleter with GitHub integration.
- xxh: Using xonsh wherever you go through the SSH.
- any-nix-shell: xonsh support for the
nix run
andnix-shell
environments of the Nix package manager. - lix: A modern, delicious implementation of the Nix package manager.
- x-cmd: x-cmd is a vast and interesting collection of tools guided by the Unix philosophy.
- rever: Cross-platform software release tool.
- Regro autotick bot: Regro Conda-Forge autoticker.
Jupyter-based interactive notebooks via xontrib-jupyter:
- Jupyter and JupyterLab: Interactive notebook platform.
- euporie: Terminal based interactive computing environment.
- Jupytext: Clear and meaningful diffs when doing Jupyter notebooks version control.
The xonsh shell is developed by a community of volunteers. There are a few ways to help out:
- Solve a popular issue or high priority issue or a good first issue. You can start with the Developer guide.
- Take an idea and create a new xontrib.
- Become xonsh core by deep diving into xonsh and improve the threading and subprocess logic.
- Become a sponsor to xonsh.
- Write a tweet, post or an article to spread the good word about xonsh in the world.
- Give a star to xonsh repository and to xontribs you like.
We welcome new contributors!
- Thanks to Zulip for supporting the xonsh community!