Skip to main content
PyCon US is happening May 14th-22nd in Pittsburgh, PA USA.  Learn more

Python-powered shell. Full-featured and cross-platform.

Project description

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')

xontrib load dalias
id = $(@json docker ps --format json)['ID']
name = 'foo' + 'bar'.upper()
echo @(name) > /tmp/@(name)

ls @(input('file: '))
touch @([f"file{i}" for i in range(0,10)])

aliases['e'] = 'echo @(2+2)'
aliases['a'] = lambda args: print(args)

If you like xonsh, :star: the repo, write a tweet and stay tuned by watching releases.

Join to xonsh.zulipchat.com GitHub Actions codecov.io repology.org

First steps

Install xonsh from pip:

python -m pip install 'xonsh[full]'

And visit https://xon.sh for more information:

Extensions

Xonsh has an extension/plugin system. We call these additions xontribs.

Projects that use xonsh or compatible

  • 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.

  • Snakemake: A workflow management system to create reproducible and scalable data analyses.

  • any-nix-shell: xonsh support for the nix run and nix-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 community

The xonsh shell is developed by a community of volunteers. There are a few ways to help out:

We welcome new contributors!

Credits

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page