Images of shells by the sea

Marcel – modern shell

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
zshAdvanced and programmable command interpreter
NushellAdopts the Unix philosophy of shells where pipes connect command together
fishSmart and user-friendly command line shell
XonshPython-powered, cross-platform shell language and command prompt
bashsh-compatible command language interpreter
MurexIntuitive, typed and content aware shell
PowerShellCross-platform automation and configuration framework
ElvshExpressive programming language and a versatile interactive shell
OilsBilled as an upgrade to bash. Written in Python.
DASHPOSIX-compliant implementation of sh that aims to be as small as possible
shShell parser, formatter, and interpreter
tcshC shell with file name completion and command line editing
mkshMirBSD Korn shell
ksh Unix shell which was developed by David Korn at Bell Labs
brushPOSIX- and bash compatible shell
RashLanguage, library, and shell REPL for Racket.
ionModern system shell that features a simple, yet powerful, syntax
YashYet another shell
okshPortable OpenBSD ks
esExtensible shell with higher-order functio
duneA shell by the beach
coshConcatenative command-line she
gshPOSIX-compatible generative shell
arshStatically typed scripting language with shell-like features
Sushi shellBash clone shell implemented in Rust
fortshShell written in Fortran
hshSlightly different take on your shell
ReShellModern shell
rashRudimentary shell
DaxCustom Unix shell implementation

Read our verdict in the software roundup.


Best Free and Open Source Software 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.
Subscribe

Please read our Comment Policy before commenting.

Notify of
guest
0 Comments
Oldest
Newest Most Voted