43 个开发者工具,始终保持最新 — 上游每次发布后数小时内即可通过 apt 获取。 加入 Discord

📅 自 起,使用本 apt 镜像将需要订阅。 查看价格

🐟 在 Ubuntu 上安装最新版 fish

友好的交互式 shell

最新版本:4.8.1 · 更新于 2026-08-11
来源版本
deb.griffo.io4.8.1 ✅
官方 Ubuntu4.2.1 🛑
← 返回首页

什么是 fish?

fish 是一个聪明且易用的命令行 shell。它会在你输入时根据历史记录和补全建议命令的其余部分,实时高亮语法,从已安装的手册页生成 Tab 补全,并摒弃了其他 shell 继承下来的晦涩引号规则。这一切开箱即用——无需任何配置,fish 就已经很好用。

🚀 为什么最新版本很重要: fish 4 用 Rust 重写,此后迭代很快:启动更快、补全更好,交互体验持续打磨。官方源中冻结的版本早于其中大部分改进。

⚡ fish 的主要特性

💡 自动建议

输入时,fish 会根据历史记录和补全建议命令的其余部分。按 → 即可采纳。

🎨 语法高亮

命令在书写时即着色,因此拼写错误或未闭合的引号在按下回车前就一目了然。

⌨️ 从手册页生成补全

fish 解析已安装的手册页来生成补全,即使冷门工具也能补全其选项。

🧠 合理的脚本语言

没有分词带来的意外,没有 [[ ]][ ] 之分,并且有真正的列表。脚本读起来就是它运行的样子。

🔍 可搜索的历史

输入前缀后按 ↑,只在匹配的命令中浏览,并内置子串搜索。

🛠️ 在浏览器中配置

fish_config 会打开一个界面来设置提示符、配色、函数和按键绑定——无需翻找配置文件。

🚀 始终领先于官方软件源: Debian 和 Ubuntu 在发布时会冻结软件包版本——本仓库通常在数小时内发布新的上游版本。只需 apt upgrade 即可保持最新。

📦 从 deb.griffo.io 安装

运行命令

步骤 1:添加仓库

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 update
install -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 update

步骤 2:安装 fish

# 安装最新版 fish
sudo apt install fish

# 验证安装
fish --version
# 安装最新版 fish
apt install fish

# 验证安装
fish --version

步骤 3:把 fish 设为你的 shell

# 将 fish 设为登录 shell —— 软件包已把它注册到 /etc/shells
chsh -s /usr/bin/fish

# 或仅在本次会话中启动它
exec fish

# 调整提示符、配色和按键绑定
fish_config

🎯 基本使用示例

日常交互使用:

# 采纳灰色的自动建议
→   # 或 Ctrl-F

# 在历史中搜索所有以 git 开头的命令
git↑

# 不输入 cd 也能进入目录
/etc/apt

# 打开基于浏览器的配置界面
fish_config

没有陷阱的脚本编写:

# 列表就是真正的列表——不会分词
set files *.txt; echo (count $files) 个文件

# 命令替换不需要反引号
echo "今天是 "(date +%A)

# 条件语句读起来很自然
if test -f /etc/os-release; echo 已找到; end

# 遍历列表
for f in *.md; echo 正在处理 $f; end

打造你自己的 shell:

# 定义函数并保存以便下次使用
function ll; ls -lh $argv; end; funcsave ll

# 缩写会在输入时展开,这一点与别名不同
abbr -a gco git checkout

# 永久加入 PATH,无需编辑配置文件
fish_add_path ~/.local/bin

# 设置所有 fish 会话共享的通用变量
set -U EDITOR nvim

🔧 良好搭配

在现代终端工具链中,fish 是一等公民:

  • starship: 跨 shell 提示符,原生支持 fish
  • zoxide: zoxide init fish,按使用频率跳转目录
  • fzf: 自带用于历史与文件搜索的 fish 按键绑定
  • atuin: 用可搜索、可同步的数据库替换 fish 的历史记录
  • Oh My Posh: 另一款带 fish 初始化脚本的提示符引擎

🚀 为什么选择 deb.griffo.io?

📊 仓库对比:
  • 官方 Ubuntu: 有提供,但冻结在发布时的版本
  • 手动安装: 需要 Rust 工具链和 CMake,或手动管理二进制文件
  • deb.griffo.io: 最新版本,自动更新

📦 软件包构建仓库

Ubuntu 软件包在此 GitHub 仓库中自动构建和维护:

🔗 相关软件包

deb.griffo.io 还提供:

🎯 适合: 希望 shell 默认就好用的人、厌倦手动配置补全与提示符的开发者,以及经常写 shell 脚本、深受 POSIX 引号规则之苦的人。

📦 本仓库最近发布

❓ 常见问题

fish 在官方 Ubuntu 软件源中吗?

在,但官方 Ubuntu 源只提供 fish 4.2.1,而本仓库提供 fish 4.8.1,每次上游发布后数小时内重新构建。

如何在 Ubuntu 上安装最新版 fish?

按上方说明一次性添加 deb.griffo.io 仓库,然后运行:sudo apt install fish。之后通过常规的 sudo apt upgrade 获取新版本。

软件包是否有签名?如何构建?

每个软件包都使用仓库的 GPG 密钥(EA0F721D231FDD3A0A17B9AC7808B4DD62C41256)签名,并基于上游发布在公开的 GitHub 仓库中构建,任何人都可以审查。

支持哪些 Ubuntu 版本?

Ubuntu 22.04 Jammy、24.04 Noble、25.10 Questing 和 26.04 Resolute。