Fundamentals 7 min read

Why Fish Shell Is the Friendly, Feature‑Rich Command Line You Should Try

Fish Shell, a user‑friendly interactive shell rewritten in Rust, offers out‑of‑the‑box features such as syntax highlighting, smart auto‑completion, web‑based configuration, and a simple scripting syntax, making it an attractive alternative for developers and operations engineers seeking a modern command‑line experience.

Efficient Ops
Efficient Ops
Efficient Ops
Why Fish Shell Is the Friendly, Feature‑Rich Command Line You Should Try

What Is Fish Shell?

Fish (the Friendly Interactive Shell) is a convenient, powerful, intelligent, and user‑friendly command‑line shell. Its name comes from the acronym of “the friendly interactive shell”. Version 4.0, released recently, rewrote the original C++ core in Rust.

Main Features

All essential functions are integrated by default, requiring little configuration.

Command‑line syntax highlighting with errors shown in red.

Smart suggestions appear as you type.

Web‑based visual configuration via

fish_config

.

Feature Details

1. Command‑Line Syntax Highlighting

Fish highlights valid commands in blue, invalid commands in red, underlines valid paths, and flags mismatched brackets or commas.

2. Auto‑Completion Suggestions

When you type a command, Fish shows gray suggestions that are either inferred or taken from history. Accept a suggestion with

->

, or a partial suggestion with

Alt + ->

.

3. Tab Completion

Pressing

Tab

after a few characters lists possible commands; after a command name it lists sub‑commands and options; after a dash it lists argument options.

4. Web‑Based Configurator

Run

fish

then

fish_config

to open a browser UI where you can choose themes, configure the prompt, view functions, constants, history, and shortcuts.

5. Custom Configuration File

Fish loads

~/.config/fish/config.fish

on startup. You can define aliases, functions, and other settings there. Example:

<code>alias g "git"
alias gst "git status"
alias grs "git reset --soft"
alias grh "git reset --hard"
alias gb "git branch"
alias gba "git branch -a"
alias gl "git pull"
</code>

After adding these aliases, reopening Fish allows you to use commands like

gl

to pull code.

6. Simple, High‑Level Syntax

Fish syntax resembles high‑level languages, making it easy to learn. Common constructs include:

<code>if grep fish /etc/shells
  echo Found fish
else if grep bash /etc/shells
  echo Found bash
else
  echo Got nothing
end

switch (uname)
  case Linux
    echo Hi Tux!
  case Darwin
    echo Hi Hexley!
  case '*'
    echo Hi, stranger!
end

while true
  echo "Loop forever"
end

for file in *.txt
  cp $file $file.bak
end

function ll
  ls -lhG $argv
end
</code>
Fish Shellcommand linescriptingauto completionsyntax highlightinginteractive shellweb configurator
Efficient Ops
Written by

Efficient Ops

This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.