What is fish?
fish is a smart and user-friendly command line shell. It suggests commands as you type from your history and completions, highlights syntax as you write it, generates tab completions from your installed man pages, and drops the arcane quoting rules other shells inherited. All of it works out of the box — there is no configuration to write before fish is pleasant to use.
⚡ Key Features of fish
💡 Autosuggestions
As you type, fish suggests the rest of the command from your history and completions. Press → to accept it.
🎨 Syntax Highlighting
Commands are coloured as you write them, so a typo or an unclosed quote is obvious before you press Enter.
⌨️ Completions From Man Pages
fish parses your installed man pages to generate tab completions, so even obscure tools complete their options.
🧠 Sane Scripting
No word splitting surprises, no [[ ]] versus [ ], and real lists. Scripts read the way they behave.
🔍 Searchable History
Type a prefix and press ↑ to walk only the matching commands, with substring search built in.
🛠️ Configurable In Your Browser
fish_config opens a UI for prompts, colours, functions and bindings — no dotfile archaeology required.
apt upgrade keeps you on the latest version.
📦 Installation from deb.griffo.io
Step 1: Add Repository
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updateStep 2: Install fish
# Install latest fish
sudo apt install fish
# Verify installation
fish --version# Install latest fish
apt install fish
# Verify installation
fish --versionStep 3: Make fish Your Shell
# Make fish your login shell — the package already registered it in /etc/shells
chsh -s /usr/bin/fish
# Or just start it for this session
exec fish
# Tweak the prompt, colours and key bindings
fish_config🎯 Basic Usage Examples
Everyday interactive use:
# Accept the greyed-out autosuggestion
→ # or Ctrl-F
# Search history for every command starting with git
git↑
# Jump to a directory without typing cd
/etc/apt
# Open the browser-based configuration
fish_configScripting without the footguns:
# Lists are real lists — no word splitting
set files *.txt; echo (count $files) files
# Command substitution needs no backticks
echo "today is "(date +%A)
# Conditionals read as English
if test -f /etc/os-release; echo found; end
# Loop over a list
for f in *.md; echo processing $f; endMaking it yours:
# Define a function and save it for next time
function ll; ls -lh $argv; end; funcsave ll
# Abbreviations expand as you type, unlike aliases
abbr -a gco git checkout
# Add to PATH permanently, without editing a dotfile
fish_add_path ~/.local/bin
# Set a universal variable, shared by every fish session
set -U EDITOR nvim🔧 Works Well With
fish is a first-class citizen for the modern terminal toolchain:
- starship: cross-shell prompt with native fish support
- zoxide:
zoxide init fishand jump to directories by frecency - fzf: ships fish key bindings for history and file search
- atuin: replaces fish's history with a searchable, synced database
- Oh My Posh: another prompt engine with a fish initialiser
🚀 Why Choose deb.griffo.io?
- Official Debian: available, but frozen at the version that shipped with the release
- Manual Installation: requires a Rust toolchain and CMake, or hand-managing a binary
- deb.griffo.io: latest version with automatic updates
- ✅ Latest Features: the newest interactive improvements and performance work
- ✅ No Manual Setup: pre-built binaries, no cargo build needed
- ✅ Automatic Updates: packages updated within hours of upstream releases
- ✅ Complete Package:
fish,fish_indent,fish_key_readerand the man pages - ✅ No Dependencies: statically linked musl build; functions and completions are embedded, so there is no fish-common to install
- ✅ Multi-Distribution: works on Bookworm, Trixie, Forky and Sid
- ✅ Easy Maintenance: standard apt commands for updates
📦 Package Build Repository
The Debian packages are automatically built and maintained in this GitHub repository:
- 🐟 fish-shell-debian - Latest release builds
🔗 Related Packages
Also available from deb.griffo.io:
- Starship - Cross-shell prompt that supports fish natively
- zoxide - Smarter cd, with a fish initialiser
- fzf - Fuzzy finder with fish key bindings
- Atuin - Shell history you can actually search
💝 Support This Project
If this repository saves you time and effort, please consider supporting it!