XONSH is a Python-powered shell


Xonsh (sounds like "consh") is a modern, full-featured and cross-platform Python-based shell. The language is a superset of Python 3 with seamless integration of shell functionality and commands. It works on all major systems including Linux, OSX, and Windows. Xonsh is meant for the daily use of experts and novices.

Install Docs Github Sponsor

What is Xonsh?

The xonsh as a python shell lets you easily mix Python and shell commands in a powerful and simplified approach to the command line.

Xonsh is the Shell

The xonsh language provides the shell primitives commonly found in traditional Unix shells, including interaction with standard utilities, pipelines, and input/output streams. Read more →

cd $HOME

id $(whoami) > ~/id.txt

cat /etc/passwd | grep root

$PROMPT = '@ '

Xonsh is Python

The xonsh language is a superset of Python 3, allowing you to execute Python code directly, install and use third-party libraries, import modules, and take advantage of the broader Python ecosystem and tooling.

2 + 2

var = "hello".upper()

@.imp.json.loads('{"a":1}')

[i for i in range(0,10)]

Xonsh is the Shell in Python

Xonsh provides a unified environment where shell functionality and Python code work together naturally.

len($(curl -L https://xon.sh))

$PATH.append('/tmp')

p'/etc/passwd'.read_text().find('usr')

id = $(@json podman ps --format json)['ID']
cfg = $(@yaml cat config.yaml)

Xonsh is Python in the Shell

Xonsh shell session builtins allow xonsh to function as a fully featured shell, tightly integrated with the operating system and its environment.

name = 'snail'
echo @(name) > /tmp/@(name)

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

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

Xonsh is a Meta-Shell

Xonsh can orchestrate and unify other shells and tools, allowing you to combine external programs into a single programmable environment.

xontrib load sh \
             fish_completer

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

nudf!(ls -la)

aliases['ai'] = 'ollama run llama3'
ai! command to remove images from podman

Xonsh is an Ecosystem

Xonsh extends beyond a shell through xontribs — community-driven plugins that integrate frameworks, developer tools, AI assistants, themes, and system features into a cohesive ecosystem.

xontrib load term_integration \
             prompt_starship  \
             powerline        \
             dracula          \
             chatgpt          \
             django           \
             jupyter          \
             1password        \
             github_copilot   \
             history_encrypt

Xontribs

Xontributions, or xontribs, are a set of tools and conventions for extending the functionality of xonsh.

pipeliner

Let your pipe lines from the standard output flow thru the Python code in the xonsh shell.

output-search

Get identifiers, paths, URLs and words from the previous command output and use them for the next command in the xonsh shell.

back2dir

Return to the most recently used directory when starting the xonsh shell.

argcomplete

Argcomplete support to tab completion of python and xonsh scripts in the xonsh shell.