awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
elves avatar

elves/elvish

0
View on GitHub↗
6,325 stars·323 forks·Go·BSD-2-Clause·18 viewselv.sh↗

Elvish

Elvish is a shell that combines interactive command-line use with a structured scripting language, designed to make both everyday terminal work and automation tasks more predictable and readable. It parses, compiles, and executes code in three phases, catching syntax and variable errors before any code runs, and it aborts execution on command failure by default to prevent silent errors.

The shell introduces value-oriented pipelines that pass structured data like lists, maps, and closures between commands, preserving types without serialization. It also mixes traditional byte streams with these value pipes, converts between the two, and processes pipeline data concurrently as each value arrives. Elvish provides readable script syntax without cryptic operators, supports variables, loops, functions, and list iteration, and includes features like directory history navigation, a built-in file manager, and command history search with fuzzy matching.

For data handling, Elvish supports JSON serialization and deserialization, nested data structures, list slicing, map indexing, typed number construction, and copy-on-assignment semantics. It offers exception-based error handling, parallel task execution, and wildcard glob expansion. The shell is available as a single statically linked binary with no dependencies, installable via script, manual download, or source compilation.

Features

  • Structured Shell Scripting Languages - Combines shell operations with a full structured programming language for complex automation.
  • Readable Syntax Shells - Uses clear syntax without cryptic operators or mandatory double-quoting for maintainable scripts.
  • Stream-Level Concurrency - Processes each pipeline value concurrently as it arrives, enabling real-time stream processing.
  • Command Argument Parsers - Uses commands like echo, randint, and arithmetic operations that come with the shell and follow a command-plus-arguments structure.
  • Command Piping - Connects command outputs to inputs via pipes for sequential data processing.
  • Structured Command Chaining - Chains commands so each receives the previous output as structured data inputs.
  • Structured Value Pipelines - Transmits typed structured values between commands via value-oriented channels, preserving data types.
  • External Command Execution - Runs external programs and built-in operations directly from the command line or within scripts.
  • File System Navigators - Moves through directories and lists their contents using familiar shell commands within the interactive environment.
  • Output Redirection - Writes a command's output directly to a file instead of displaying it on the terminal.
  • Shell Command Search - Provides fuzzy command history search with deduplication via keyboard shortcut.
  • Task Automation Scripts - Combines shell commands with variables, loops, and functions for task automation.
  • Working Directory Getters and Setters - Switches the current directory with the cd command, affecting how file-related commands resolve relative paths.
  • Conditional Branching - Executes different code paths based on whether a Boolean value is true or false.
  • Value Channel Transmission - Transmits structured values between commands via a value-oriented channel, preserving internal structure.
  • Exception-Based Error Handling - Throws exceptions on non-zero exit statuses or runtime errors, halting execution by default.
  • Syntax and Variable Error Detection - Detects syntax and variable errors before running code, preventing runtime failures.
  • Command Failure Management - Aborts script execution immediately on command failure, eliminating silent errors.
  • Multi-Phase Code Evaluation - Parses, compiles, then executes code chunks, rejecting the entire chunk if any phase fails.
  • Typed Data Pipelines - Passes structured values between commands while preserving data types, unlike byte-only shells.
  • Hierarchical Data Structures - Combines lists and maps arbitrarily to represent complex, hierarchical data.
  • JSON Data Parsers - Reads JSON from external commands and reconstructs structured values for use within the shell.
  • Byte and Value Stream Mixers - Combines traditional byte pipes with value pipes in a single pipeline, capturing both unstructured text and structured data simultaneously.
  • Command Line Navigation - Moves the cursor, deletes words or lines, and navigates by character or word while typing commands.
  • Byte-Value Converters - Transforms byte streams into structured values and vice versa, bridging traditional and value-based pipelines.
  • Directory Navigators - Recalls previously visited directories and lets the user select one from a filtered list to jump to it.
  • Built-in File Managers - Ships a built-in file manager that opens with Ctrl-N for directory exploration.
  • File-Based Redirection - Reads a file's content and feeds it as input to a command, allowing file-based data processing.
  • Single-Binary Deployments - Runs on any platform from a statically linked binary with no dependencies.
  • Line-Based Record Processing - Splits byte input by newlines automatically, treating each line as a separate value for consistent text processing with Unix-style tools.
  • JSON Serialization - Converts structured values to JSON for interoperability with external commands that cannot read the value channel.
  • Module Importing - Loads commands from modules, such as math operations, by importing the module before use.
  • Multiple Return Values - Assigns or captures multiple output values from a single command, with explicit list construction for grouping results.
  • Glob Expansion Control - Expands wildcard patterns like *.jpg into multiple matching filenames as separate values.
  • Parallel Task Execution - Executes a function concurrently for each list element and waits for all to finish.
  • Shell Variable Declarations - Declares variables with the var command and initial values, omitting the $ prefix.
  • List Iteration - Runs a block of code for each element in a list, binding the current element to a variable.
  • Command Line Interfaces - Expressive programming language and interactive shell.
  • Compilers and Interpreters - Interactive shell and scripting language.
  • Console Interfaces - Listed in the “Console Interfaces” section of the Awesome Go awesome list.
  • Terminal Shells - Expressive programming language combined with an interactive shell.

Star history

Star history chart for elves/elvishStar history chart for elves/elvish

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does elves/elvish do?

Elvish is a shell that combines interactive command-line use with a structured scripting language, designed to make both everyday terminal work and automation tasks more predictable and readable. It parses, compiles, and executes code in three phases, catching syntax and variable errors before any code runs, and it aborts execution on command failure by default to prevent silent errors.

What are the main features of elves/elvish?

The main features of elves/elvish are: Structured Shell Scripting Languages, Readable Syntax Shells, Stream-Level Concurrency, Command Argument Parsers, Command Piping, Structured Command Chaining, Structured Value Pipelines, External Command Execution.

What are some open-source alternatives to elves/elvish?

Open-source alternatives to elves/elvish include: oils-for-unix/oils — Oils is a Unix shell interpreter and scripting language runtime that combines a modern shell language with POSIX and… missing-semester-cn/missing-semester-cn.github.io — This is an open-source educational website that translates and localizes MIT's Missing Semester course, teaching… shelljs/shelljs — ShellJS is a Node.js shell command library that provides a portable Unix-like utility suite for cross-platform system… veltman/clmystery — The Command Line Mystery (clmystery) is an interactive terminal-based game that transforms the command line into a… sindresorhus/execa — Execa is a promise-based process execution library that serves as a wrapper for the Node.js child process module. It… skim-rs/skim — Skim is a cross-platform interactive fuzzy finder that runs as a terminal application, a Rust library, a Vim and…

Open-source alternatives to Elvish

Similar open-source projects, ranked by how many features they share with Elvish.
  • oils-for-unix/oilsoils-for-unix avatar

    oils-for-unix/oils

    3,288View on GitHub↗

    Oils is a Unix shell interpreter and scripting language runtime that combines a modern shell language with POSIX and Bash compatibility. It functions as a structured data shell, integrating JSON and J8 formats to manage complex data without relying on string parsing. The system is distinguished by a C++ transpiled interpreter that converts a subset of Python source code into strongly typed C++ for high-performance execution. It features a garbage-collected typed runtime that supports prototype-based polymorphism, lexical closures, and reference-based variable mutation. To decouple shell logic

    Python
    View on GitHub↗3,288
  • missing-semester-cn/missing-semester-cn.github.iomissing-semester-cn avatar

    missing-semester-cn/missing-semester-cn.github.io

    7,311View on GitHub↗

    This is an open-source educational website that translates and localizes MIT's Missing Semester course, teaching practical computing skills for computer science students. The curriculum covers developer tooling, shell scripting, version control, security fundamentals, and open-source collaboration, with a focus on core computing skills including data processing pipelines, workflow automation, secure remote access, shell productivity, Vim editing, and Git version control. The project distinguishes itself by teaching command-line mastery, shell scripting, and automation to boost daily developer

    Markdown
    View on GitHub↗7,311
  • shelljs/shelljsshelljs avatar

    shelljs/shelljs

    14,402View on GitHub↗

    ShellJS is a Node.js shell command library that provides a portable Unix-like utility suite for cross-platform system automation. It serves as a cross-platform filesystem API and a process wrapper for spawning and controlling external system subprocesses. The project translates Unix shell commands into equivalent operations for the host operating system, allowing scripts to run consistently across different platforms. It supports the registration of custom commands and the integration of third-party plugins to extend its portable shell capabilities. The library covers broad capability areas

    JavaScriptbashjavascriptnode
    View on GitHub↗14,402
  • sindresorhus/execasindresorhus avatar

    sindresorhus/execa

    7,517View on GitHub↗

    Execa is a promise-based process execution library that serves as a wrapper for the Node.js child process module. It functions as a shell command runner and subprocess management tool, simplifying the execution of external commands and binaries. The library distinguishes itself through automatic argument escaping to prevent shell injection and the use of abort signals for graceful process termination. It also provides an inter-process communication wrapper for exchanging structured JSON data and messages between parent and child processes. Its capabilities cover a broad range of process I/O

    JavaScript
    View on GitHub↗7,517
See all 30 alternatives to Elvish→