Skip to content

xonsh/xonsh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

xonsh

Xonsh shell icon.

Xonsh is a Python-powered shell. Full-featured and cross-platform. The language is a superset of Python 3.6+ with additional shell primitives. The name Xonsh should be pronounced like "consh" - a softer form of the word "conch" (🐚, @), referring to the world of command shells.


Xonsh is the Shell Xonsh is Python
cd $HOME

id $(whoami) > ~/id.txt

cat /etc/passwd | grep root

$PROMPT = '@ '
2 + 2

var = "hello".upper()

@.imp.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  # plugin
$(@json docker ps --format json)['ID']
name = 'snail'
echo @(name) > /tmp/@(name)

with p'/tmp/dir'.mkdir().cd():
    touch @(input('File: '))

aliases['e'] = 'echo @(2+2)'
aliases['a'] = lambda args: print(args)
Xonsh is a Meta-Shell Xonsh is an Ecosystem
xontrib load sh \
             fish_completer

def nudf(cmd):
    return @.imp.pandas.DataFrame(
      @.imp.json.loads(
        $(nu -c @(cmd + ' | to json'))
      )
    )

nudf!(ls -la)
xontrib load term_integration \
             prompt_starship  \
             powerline        \
             dracula          \
             chatgpt          \
             django           \
             jupyter          \
             1password        \
             github_copilot   \
             history_encrypt

If you like xonsh, ⭐ the repo and spread the word about xonsh.

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

First steps

We're refactoring the docs about xonsh installation so you can try the new way:

The old way is to install xonsh from pip:

python -m pip install 'xonsh[full]'

Visit https://xon.sh for more information:

Some beginners find the xonsh cheatsheet a helpful place to start.

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.

Compile, packaging or accelerate xonsh:

Welcome to 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