Marcel is a modern shell that uses Python values rather than plain text as the primary data passed through pipelines.
Streams can contain strings and numbers as well as lists, tuples and objects representing files, processes, history records and workspaces.
This object-oriented pipeline model allows data to be filtered, transformed and formatted using ordinary Python expressions instead of specialised languages such as those embedded in awk and find. Marcel operators can be mixed with conventional Unix executables, with strings used automatically at the boundary between the two models. Python also serves as the full scripting language through the marcel.api module.
This is free and open source software.
Key Features
- Pipelines pass structured Python values between Marcel operators.
- Streams can contain strings, numbers, lists, tuples and arbitrary Python values.
- Dedicated objects represent files, processes, history entries and workspaces.
- Filter pipeline data using Python expressions and functions.
- Transform values using the map operator.
- Sort, reverse, select, join and deduplicate streamed data.
- Set operations include union, intersection and difference.
- Built-in ls operator produces File objects rather than formatted text.
- Process listings are represented as Process objects.
- Mix Marcel operators and ordinary operating-system executables in one pipeline.
- Automatically converts to string streams when communicating with external commands.
- Assign pipelines to variables to create reusable operators.
- Reusable pipelines can accept positional and named parameters.
- Store pipeline results in environment variables and recall them later.
- Environment variables can contain structured and mutable Python values.
- Evaluate Python expressions directly from the command line.
- Import Python modules and symbols into the Marcel namespace.
- Python API brings Marcel operators and pipelines into ordinary Python programs.
- Pipeline output implements Python iteration for use in for loops.
- Run simple Marcel command files or build more sophisticated scripts in Python.
- Built-in operators for files, processes, SQL, streams and environment management.
- Directory stack with cd, pushd, popd, dirs and pwd operators.
- Foreground and background job management.
- Run Marcel pipelines with elevated privileges through the sudo operator.
- Execute a pipeline across every host in a configured remote cluster.
- Remote output is labelled with the originating host.
- Named workspaces maintain separate environments, histories and startup scripts.
- Create, list, open, close and delete workspaces.
- Command history with editing, replay and reverse search.
- Tab completion for operators, flags and filenames.
- Integrated help covering concepts, objects and individual operators.
- Customisable prompts and colour schemes.
- Changes to startup and configuration files are applied without restarting the shell.
Website: github.com/geophile/marcel
Support:
Developer: Jack Orenstein
License: GNU General Public License v3.0
Marcel is written in Python. Learn Python with our recommended free books and free tutorials.
Related Software
| Shells | |
|---|---|
| zsh | Advanced and programmable command interpreter |
| Nushell | Adopts the Unix philosophy of shells where pipes connect command together |
| fish | Smart and user-friendly command line shell |
| Xonsh | Python-powered, cross-platform shell language and command prompt |
| bash | sh-compatible command language interpreter |
| Murex | Intuitive, typed and content aware shell |
| PowerShell | Cross-platform automation and configuration framework |
| Elvsh | Expressive programming language and a versatile interactive shell |
| Oils | Billed as an upgrade to bash. Written in Python. |
| DASH | POSIX-compliant implementation of sh that aims to be as small as possible |
| sh | Shell parser, formatter, and interpreter |
| tcsh | C shell with file name completion and command line editing |
| mksh | MirBSD Korn shell |
| ksh | Unix shell which was developed by David Korn at Bell Labs |
| brush | POSIX- and bash compatible shell |
| Rash | Language, library, and shell REPL for Racket. |
| ion | Modern system shell that features a simple, yet powerful, syntax |
| Yash | Yet another shell |
| oksh | Portable OpenBSD ks |
| es | Extensible shell with higher-order functio |
| dune | A shell by the beach |
| cosh | Concatenative command-line she |
| gsh | POSIX-compatible generative shell |
| arsh | Statically typed scripting language with shell-like features |
| Sushi shell | Bash clone shell implemented in Rust |
| fortsh | Shell written in Fortran |
| hsh | Slightly different take on your shell |
| ReShell | Modern shell |
| rash | Rudimentary shell |
| Dax | Custom Unix shell implementation |
Read our verdict in the software roundup.
Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk. You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more. Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form. |


Please read our Comment Policy before commenting.