5 Fancy Shells You Should Have A Try
Tags: tools, linux
Published: 2021-05-30 14:02:55

---
title: 5 Fancy Shells You Should Have A Try
published: true
date: 2021-05-27 19:55:00 UTC
tags: Tools,Linux
canonical_url: http://coderscat.com/5-fancy-shells/
---

I love command-line because it makes me more productive.

Most of the time, I live in a Shell in daily work. Shell is simply a command-line interface (CLI) that allows users to interact with the operating system.

Since I have worked with command-line so much of time, I tried many different Shells. I find these 5 Shell worth to be known by more people.

Some of them are already production-ready for daily usage, some are still in rapid development. Maybe you will find your favorite one as your next Shell.

## Fish Shell

[Fish](https://github.com/fish-shell/fish-shell) stands for “the friendly interactive shell”.

It is a smart and user-friendly command line Shell for macOS and Linux family OS.  
Many fancy features are included by default, such as syntax highlighting, autosuggest-as-you-type, and fancy tab completions.

The configuration file is located at `~/.config/fish/config.fish`. We can add custom functions to it. Fish also provides a web interface to configure the file. Run **fish\_config** , the browser will open port 8000 of the machine, and the user can configure fish on the web page.

![file:fish](http://coderscat.com/images/fish.jpg)

Fish is Shell with more than ten years, it’s mature and loved by many programmers. I think the most impressive feature is auto-completion.  
If you want to use it in daily work, don’t forget [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish).

## Oil Shell

[Oil Shell](https://github.com/oilshell/oil) is a new Unix shell. Shell scripting is a domain-specific language for dealing with concurrent processes, text strings, and the file system, it is hard to learn and a nightmare for maintenance.

![](http://coderscat.com/images/bash-error.jpg)

| Oil is also aimed at people who know say Python or JavaScript, but purposely avoid shell

Since we have so many existing shell programs, you can not ignore them. `Oil` helps you gradually migrate away from Shell scripting:

- `bin/osh` runs your existing shell scripts.
- `bin/oil` is a brand new language.

The [Oil language](https://www.oilshell.org/blog/2020/01/simplest-explanation.html) is a new dialect which is parsed and evaluated like Python or JavaScript, it’s more concrete than Shell scripting.

The funny thing is, this project is implemented in Python, and then automatically translated to C++ with custom tools.

## xonsh

[xonsh](https://github.com/xonsh/xonsh) is another Python implemented Shell.

![file:xonsh](http://coderscat.com/images/xonsh5.png)

`xonsh`‘s syntax is more like Python, actually, all Python code is runnable in xonsh. xonsh is based on Python, and with additional syntax added that makes calling subprocess commands, manipulating the environment, and dealing with the file system easy.

Unlike `Oil`, you can not reuse existing Bash scripts in `xonsh`.

## Nushell

[Nushell](https://github.com/nushell/nushell) is a new Shell, written in Rust. It’s inspired by PowerShell in Windows. Rather than thinking of files and services as raw streams of text, Nushell looks at each input as something with structure. In this way, users can make filters with Pipelines easily.

![file:nushell](http://coderscat.com/images/nushell-autocomplete5.gif)

Nushell has not reached release 1.0, but worth having a try for fun.

## Zsh

[Zsh](https://www.zsh.org/) is fully compatible with Bash and has extremely rich plug-ins.

Zsh was first released in 1990 and is included in many OS. Actually, Mac OS has already replaced Bash with Zsh as the default shell in Catalina.

If you use Zsh, you won’t miss [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh). It’s a community-driven framework for managing your zsh configuration, the repo contains hundreds of powerful plugins and beautiful themes.

![file:nushell](http://coderscat.com/images/ohmyzsh.jpg)