HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
geophile
marcel
Python2020–2024
geophile / marcel

marcel

A modern shell

5Distinct people
17Mentions
1Explicit recommenders
359GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A modern shell

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

I love pipelines. I don't know the elaborate sublanguages of find, awk, and others, to exploit them adequately. I also love Python, and would rather use Python than those…

geophile used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year17 dated mentions

Observed mentions: 2020-03-21 20:56:35 UTC to 2024-05-22 08:15:31 UTC.

02468102020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC1019
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC606
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101

What Hacker News says

17 sources
Check out marcel: https://marceltheshell.org, and https://github.com/geophile/marcel. Both marcel and nushell start with the idea of piping structured data instead of strings, which is incredibly powerful. (This also applies to osh. I am the author of osh and marcel.) Marcel (and osh) rely on Python types and language where typical shells have sublanguages. So instead of awk or find and their sublanguages, you just use Python. Instead of piping strings, you pipe streams of Python values. Marcel lets you use Python on the commmand line. It also has an API which allows you to use shell-like commands inside of Python programs.
In Object SHell
I like the idea of Unix pipelines, but I hate all the sublanguages, awk being one of the biggest. I scratched my itch and built my own shell, marcel: https://github.com/geophile/marcel. I mention this specifically, here, because of the CSV point. Marcel handles CSV, e.g. "read --csv foobar.csv" reads the foobar.csv file, parses the input (getting quotes and commas correct), and yields a stream of Python tuples, splitting each line of the CSV into the elements of the output tuples. Marcel also supports JSON input, translating JSON structures into Python equivalents. (The "What's New" section of marcel's README has more information on JSON support, which was just added.)
In The Awk Programming Language, Second Edition
Marcel is another pipe-objects-instead-of-strings shell. It takes a different approach to shell/language unification, compared to nushell and other modern shells. Marcel exposes Python on the command line, e.g. to find files that changed in the last day: ls -fr | select (f: now() - f.mtime < days(1)) ls pipes File objects to the select, and that's a Python function inside the parens. Scripting is done in Python, using marcel's shell commands as functions, by importing the module marcel.api. So the examle above in Python would be: from marcel.api import * for file in (ls(file=True, recursive=True) | select(lambda f: now() - f.mtime < days(1))): print(file) So it's the same shell command (ls ... | select ...), but expressed as Python functions, and the result is an iterator so that the command output can
Read the rest
be used inside a for loop. For more info: https://www.marceltheshell.org, https://github.com/geophile/marcel.
In One Year of Nushell
geophile·Jun 4, 2020Submission

Show HN: Marcel – A Modern Shell

Marcel is a shell. It is intended to be familiar to anyone who knows bash, but it emphasizes piping objects between commands, instead of strings. E.g., to explore the current directory recursively and find files changed in the past day: ls -r | select (file: now() - file.mtime < days(1)) Marcel is designed for interactive use. Python would be a fine scripting language if the integration with shell commands were better. So I made marcel's capabilities available as a module, marcel.api. The integration is extremely clean, (IMHO). To do the above example in Python: from marcel.api import * for file in ls(recursive=True) | select(lambda file: now() - file.mtime < days(1)): print(file) Check it out here: https://github.com/geophile/marcel.
6 points · Open discussion
Being 63, I don't get to say this very often: I am one of the youngest people in this conversation. Delighted to read these stories about even-older-than-me old-timers. Even though I am a relative spring chicken, I'll list my old-timey computing experiences: - Started programming on programmable Wang and Monroe calculators. - PDP-8m in high school. 12k 12-bit words for four terminals running Basic. By special arrangement, I could take over the whole thing and use FORTRAN. - IBM-370 in college, and I spent lots of hours on an IBM 029 keypunch. (That's where I developed my love of loud, clicky keyboards.) - First job with Datasaab (yes, a computer division of Saab), and I programmed in their weird DIL-16 language. - PDP-11 in grad school. - Various VAXen in my early working life. Picked up Emacs in 1985 and now it's in my fingertips. - A bu
Read the rest
ddy and I wrote a book intended to support people who needed to work with a large variety of computing environments, (a real problem my buddy encountered). It was instantly obsolete, as it was published as minis were dying and PCs were becoming dominant. (https://www.amazon.ae/Computer-Professionals-Quick-Reference...) - Many years in startups, mostly in Unix/Linux environments. Retired now, but still enjoying programming. Having a blast with my current project: https://github.com/geophile/marcel.
In Ask HN: Am I the longest-serving programmer – 57 years and counting?

Showing the 15 most recent of 17 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.