Marcel

#OpenSource

Product information

Marcel is a modern shell designed to enhance the Unix/Linux shell experience by leveraging Python for scripting and command composition. Unlike traditional shells that pass strings between commands, Marcel passes Python values such as lists, tuples, strings, and numbers, as well as objects representing files and processes. This approach eliminates the need for extensive sublanguages for filtering, processing, and formatting data, relying instead on Python code combined with Marcel operators.

Marcel's core functionality revolves around pipelines, where operators take a stream of data as input and generate another stream as output. Operators can be piped together, enabling complex data processing tasks. For example, the ls operator can list files in a directory, and the map operator can transform each file object to a tuple containing the file and its size.

In addition to built-in operators, Marcel supports calling any executable, allowing for a mix of Marcel operators and host executables within pipelines. This flexibility extends to scripting, where Marcel provides a Python API (marcel.api) that integrates shell commands into Python code seamlessly. This API simplifies the execution of shell commands from Python, avoiding the cumbersome use of os.system or subprocess.Popen.

Marcel also offers features like command history, customizable prompts, tab completion, and dynamic reconfiguration, making it a powerful and user-friendly shell environment. Installation is straightforward via pip, and Marcel automatically handles dependencies like dill and psutil.

Overall, Marcel redefines shell interaction by combining the simplicity of Unix/Linux shell pipelines with the power and flexibility of Python scripting.

Pricing

Pricing information is not available