PARENTHESIS SHELL / EARLY DEVELOPMENT, OPEN SOURCE

Your shell,
in parentheses.

A small Lisp dialect for your command line and your scripts. Familiar commands, with a little more structure.

Try parsh and coreutils in your browser. Work with your own files on Linux.

parsh / first expressionsSYNTAX PREVIEW
(let name world)
(str "hello, " $name)
"hello, world"
(defn greet (who)
  (str "hello, " $who))
(greet parsh)
"hello, parsh"
(
The same Rust interpreterUTF-8 · S-EXP
Close the parenthesis. See the result.
S-EXPRESSIONSEXPLICIT VALUESCOMPOSABLE COMMANDSBUILT IN RUST

SMALL LANGUAGE. FAMILIAR TOOLS.

Less guesswork.
More structure.

parsh stands for parenthesis shell. Command calls are expressions, and interactive use and scripts share one language.

/01

One language for the prompt and scripts.

Take an expression from the prompt straight into a script. Variables, functions, and control flow follow the same rules in both.

(defn greet (name)
  (str "hello, " $name))
/02

Arguments stay intact.

Text stays one argument. Lists expand one level into external command arguments. No implicit word splitting or globbing, and no guessing what spaces will do.

(let files (list "a file.rs" "b.rs"))
(list $files)
/03

Real commands. Structured composition.

On Linux, programs launch directly. Compose commands with pipes and redirections. Keep your familiar tools and use a new syntax.

(|> files.txt
  (| (find . -name "*.rs") (sort)))
NATIVE LINUX

START WITH A PARENTHESIS.

Start with (

A few expressions are all it takes to get a feel for the language. No installation. Just your browser.

Open the playground