elvish

command module
v0.0.0-...-2964dd3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2017 License: BSD-2-Clause Imports: 19 Imported by: 0

README

A friendly and expressive Unix shell

GoDoc Build Status on Travis Coverage Status Go Report Card License

This project aims to explore the potentials of the Unix shell. It is a work in progress; things will change without warning. The issues list contains many things I'm working on.

This README documents the development aspect of Elvish. All other information is to be found on the official website.

Here is a logo, which happens to be how Elvish looks like when you type elvish into it:

logo

Building Elvish

Go >= 1.6 is required. Linux is fully supported. It is likely to work on BSDs and Mac OS X. Windows is not supported yet.

Elvish is a go-gettable package, and can be installed using go get github.com/elves/elvish.

If you are lazy and use bash or zsh now, here is something you can copy-paste into your terminal:

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
mkdir -p $GOPATH

go get github.com/elves/elvish

for f in ~/.bashrc ~/.zshrc; do
    printf 'export %s=%s\n' GOPATH '$HOME/go' PATH '$PATH:$GOPATH/bin' >> $f
done

How To Write Go Code explains how $GOPATH works.

Users of macOS can build Elvish via homebrew:

brew install --HEAD elvish

Name

In roguelikes, items made by the elves have a reputation of high quality. These are usually called elven items, but I chose "elvish" because it ends with "sh". It also rhymes with fish, one of shells that influenced the philosophy of Elvish.

The word "Elvish" should be capitalized like a proper noun. However, when referring to the elvish command, use it in lower case with fixed-width font.

Whoever practices the elvish way by either contributing to it or simply using it is called an elf. (You might have guessed this from the name of the GitHub organization.) The official adjective for elvish (as in "Pythonic" for Python, "Rubyesque" for Ruby) is "elven".

Documentation

Overview

Elvish is an experimental Unix shell. It tries to incorporate a powerful programming language with an extensible, friendly user interface.

Directories

Path Synopsis
Package exec provides the entry point of the daemon sub-program and helpers to spawn a daemon process.
Package exec provides the entry point of the daemon sub-program and helpers to spawn a daemon process.
api
Package API provides the API to the daemon RPC service.
Package API provides the API to the daemon RPC service.
service
Package service implements the daemon service for mediating access to the storage backend.
Package service implements the daemon service for mediating access to the storage backend.
Package edit implements a command line editor.
Package edit implements a command line editor.
history
Package history provides utilities for the command history.
Package history provides utilities for the command history.
tty
ui
Package ui contains types that may be used by different editor frontends.
Package ui contains types that may be used by different editor frontends.
Package eval handles evaluation of nodes and consists the runtime of the shell.
Package eval handles evaluation of nodes and consists the runtime of the shell.
re
getopt is a command-line argument parser.
getopt is a command-line argument parser.
Package glob implements globbing for elvish.
Package glob implements globbing for elvish.
Package parse implements the elvish parser.
Package parse implements the elvish parser.
Package shell is the entry point for the terminal interface of Elvish.
Package shell is the entry point for the terminal interface of Elvish.
Package store abstracts the persistent storage used by elvish.
Package store abstracts the persistent storage used by elvish.
storedefs
Package storedefs contains definitions used by the store package.
Package storedefs contains definitions used by the store package.
Package sys provide convenient wrappers around syscalls.
Package sys provide convenient wrappers around syscalls.
Package util contains utility functions.
Package util contains utility functions.
Package web is the entry point for the backend of the web interface of Elvish.
Package web is the entry point for the backend of the web interface of Elvish.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL