Elvish (noun):
-
A powerful scripting language.
-
A shell with useful interactive features built-in.
-
A statically linked binary for Linux, BSDs, macOS or Windows.
Powerful modern shell scripting
Write readable and maintainable scripts - no cryptic operators, no double-quoting every variable.
jpg-to-png.elv (explainer)
for x [*.jpg] { gm convert $x (str:trim-suffix $x .jpg).png }
Power up your workflows with data structures and functional programming.
update-servers-in-parallel.elv (explainer)
var hosts = [[&name=a &cmd='apt update'] [&name=b &cmd='pacman -Syu']] # peach = "parallel each" peach {|h| ssh root@$h[name] $h[cmd] } $hosts
Catch errors before code executes.
Terminal: elvish (explainer)
~> var project = ~/project ~> rm -rf $projetc/bin compilation error: variable $projetc not found
Command failures abort execution by default. No more silent failures, no more
&&
everywhere.
Terminal: elvish (explainer)
~> gm convert a.jpg a.png; rm a.jpg gm convert: Failed to convert a.jpg Exception: gm exited with 1 [tty 1]:1:1-22: gm convert a.jpg a.png; rm a.jpg # "rm a.jpg" is NOT executed
Run it anywhere
Elvish comes in a single statically linked binary for your laptop, your server, your PC, or your Raspberry Pi.
Terminal: Raspberry Pi
~> wget dl.elv.sh/linux-arm64/elvish-HEAD.tar.gz ~> tar -C /usr/local/bin -xvf elvish-HEAD.tar.gz elvish ~> elvish
Use Elvish in your CI/CD pipelines. Convenient shell syntax and modern programming language - why not both?
github-actions.yaml
steps: - uses: elves/setup-elvish@v1 with: elvish-version: HEAD - name: Run something with Elvish shell: elvish {0} run: | echo Running Elvish $version
Interactive shell with batteries included
Press Ctrl-L for directory history, and let Elvish find
java/com/acme/project
for you.
Terminal: elvish - directory history (more)
~> elf@host LOCATION j 10 ~/java/com/acme/project/utilities 10 ~/java/com/acme/project 10 /opt/java
Press Ctrl-R for command history. That beautiful ffmpeg
command you
crafted two months ago is still there.
Terminal: elvish - command history (more)
~> elf@host HISTORY (dedup on) ff Ctrl-D dedup 34 ffmpeg -i input.mp4 -c:v libx264 -c:a aac outpu 35 ffmpeg -i input.mp4 -vf "transpose=1,scale=640:
Press Ctrl-N for the builtin file manager. Explore directories and files without leaving the comfort of your shell.
Terminal: elvish - file manager (more)
~/elvish> elf@host NAVIGATING Ctrl-H hidden Ctrl-F filter bash 1.0-release.m 1.0 has not been released y elvis CONTRIBUTING. zsh Dockerfile LICENSE Makefile │ PACKAGING.md │ README.md │ SECURITY.md │
Talk with the community
-
Join the Forum to ask questions, share your experience, and show off your projects!
-
Join the chatroom to talk to fellow users in real time! The following channels are all bridged together thanks to Matrix:
-
Telegram: Elvish user group
-
Discord: Elvish Shell
-
Matrix: #users:elv.sh
-
IRC: #elvish on Libera Chat
-
Gitter: elves/elvish
-
More resources
-
Try Elvish directly from the browser (beta)
-
Awesome Elvish: Official list of unofficial Elvish modules
-
@ElvishShell on Twitter
-
Elvish TV on YouTube