type
Post
status
Published
date
Apr 12, 2025
slug
2025/04/12/(Reprinted)-Using-Fish-shell-under-Linux-Terminal-and-Beautifying-Mywood-Aaron-Blog-Garden
summary
tags
工具
category
技术分享
created days
new update day
icon
password
Created_time
Apr 12, 2025 01:01 AM
Last edited time
Apr 14, 2025 01:33 AM
一、背景
相信大多数开发者在使用 GNU/Linux 的同时也免不了使用终端这个“黑框框”😃。对于绝大多数终端而言,默认的 shell 皆为
bash
。原生的 bash 看起来并不“现代化”,哦~这不免比较糟糕!于是,在此基础上。开发者们通过选择其他 shell 代替 bash 以获得更佳的体验。比如:
zsh shell
,虽然原生的 zsh shell 有许多功能并不具备,但是在众多开发者的应用美化下,zsh shell 看起来很“现代化”。But 😃,虽然 zsh shell 深受开发者的喜爱,但是 zsh 整体加载性能并不是很快,同时需要依靠oh-my-zsh
的配置才能使得 zsh 更为优雅,配置相对麻烦。这就引出我们今天的主角“Fish shell”,相较于 zsh shell,
Fish shell
具有一下特点:- 开箱即用,内置自动提示、语法高亮、自动补全、搜索历史等功能,无需添加额外插件。
- 可视化的 Web 配置功能。
- 可以使用人机界面数据完成制表页。
- 具有
Oh-My-Fish
shell 框架,若 Fish shell 并不能满足您的需要,可以使用该框架进行更深入配置。
- 相较于
zsh shell
个更加高效的prompt
(命令提示符)加载速度。
这里,列出 Slant 网站“What are the best Linux shells?”6 佳 shell 排名:

了解完背景,就让我开始 Fish shell 之旅吧!
二、Fish 简介及安装
(一)、Fish 简介
什么是 Fish 呢?鱼 @_@ ? 。其实 Fish 的全名叫做“"friendly interactive shell”, 即友好的交互式 Shell。如其名,对比 Bash 和 Z shell(zsh) 来说,Fish 具有更加优雅的定制化策略、开箱即用的便捷。相信您一定会对 Fish 爱不释手!
(二)、Fish 安装
1、下载及安装
在 Fish 官网上有详细的教程供各位读者安装在不同的 GNU/Linux 发行版上(当然,Fish 远不止此,还可以安装在 Windows、macOS、BSD 上),由于笔者的工作环境在deepin(在V20版本下为基于Debian的操作系统)上,笔者仅对笔者使用的 GNU/Linux 发行版环境做详细介绍,望海涵。
- 首先我们,使用包管理器安装 fish shell
# Arch sudo pacman -S fish # Debian 系列(包括Ubuntu) sudo apt install fish
2、应用 Fish
由于大部分的终端默认 shell 使用的是 Bash,所以我们还需要修改当前使用的 shell 为 Fish。
- 我们首先通过命令“echo $SHELL”查看当前 shell:
$ echo $SHELL /usr/bash
- 输入命令“
cat /etc/shells
”查看操作系统中存在的 shell 有那些:
$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /bin/zsh /usr/bin/zsh /usr/bin/fish <-- 我们发现Fish已经安装
- 切换 shell,在这里通过
chsh
命令实现
$ chsh -s /usr/bin/fish
假如,同时希望
root
模式下也可以使用该 shell,则可以在该命令后面加上root
关键字# sudo chsh -s /usr/bin/fish root
- 重启电脑,打开终端,这个时候,Fish 应该已经配置完毕,并且能够输出下面内容!
Welcome to fish, the friendly interactive shell Type help for instructions on how to use fish tcy@test ~>
三、Fish 的特别之处
Fish 有什么特别之处?
简单易用
相对于需要进行大量的配置才能获得良好体验的 ZSH,Fish 原生附带有最为广泛使用的特性,比如:自动提示、语法高亮等等。同时其配置设置的语法清晰明了,通过模块化和 Web 可视化配置,能为您节省大量时间。
- 自动提示。
- Fish 会通过显示灰色提示,提醒您最近浏览历史,和您可能希望浏览的内容。如果命令有误,则会将命令设置为红色提醒您。
- 除了显示命令是否正确外,Fish 还可以显示你所搜索的目录是否存在、拼写是否正确、括号是否匹配等等。
- 哦~,除此之外,如果你觉得 Fish 的色彩显示并不美观,还可以自行配置美化。在 Fish 官网有详细的教程。
- 文件和命令高亮
- Fish 会将文件设置为绿色,目录设置为蓝色。(当然,颜色设置您也可以自行配置)、
- 当然,除了高亮当前目录下的文件与目录,还可以将命令高亮显示。比如输入“sudo apt”命令就会将“apt”进行高亮显示。

- 生成数据制表页
- Fish 可以解析各种格式的工具手册页,假如你不知道该命令下有什么作用,可以通过输入“Tab”键获得提示

- 自动补全
- 输入命令时,Fish 会自动显示上一次使用该命令历史记录(如果还希望查看之前的历史,还可以通过按"up”向上键查看)。
- 假如,并没有该命令历史记录,则会显示可能使用的命令。
- 使用
Tab
键进行补全,假如有多种结果,则会都列出来并显示给出理由。当然,除了补全命令外,还可以补全参数以及 Git 分支,是不是很优雅 b( ̄▽ ̄)d 。
- Ctrl^R 分行显示
- 以前的 bash shell 在使用 Ctrl^R 的时候,一次只能显示一条历史命令,而 fish 则可以一次显示多个,然后使用上下键来进行选择。

- 可视化 Web 配置页面
- 笔者认为这绝对是 Fish 如此受欢迎的原因之一,可视化的操作为配置 Fish 提供很大的帮助。

解释:进入可视化界面,仅需要在 Fish shell 下输入“fish_config
”命令即可,fish会自动在浏览器页面中打开如上所示的本地界面。在可视化 Web 页面下,您可以设置主题颜色(包括自定义)、提示符样式、函数、变量、查看历史命令、快捷键、设置缩写(选择好了之后,一定要记得点击 set 呦!)
- 简单的配置
- Fish 通过函数封装命令或者起别名。同时 Fish 使用的语法也很简单,比如常见的:“if”、“switch”、“for”、“while”等。
相信你一定会爱上 Fish 的!
四、Fish 的配置与美化
注意:由于 Fish 对于笔者来说已经足够优秀了,所以笔者仅仅对 Fish 进行简单的微调和美化,如果还希望更加深入了解 Fish,可以直接在输入help
命令,查看 Fish 的帮助文档。请见谅。
终于来到本文的第二个关键点了!体验完 Fish 是不是觉得很 nice?
假如,您觉得 Fish 还差一点味道。那么欢迎来到 Fish 的配置与美化。 😉
本节共分为三节,分别介绍:对 Fish 进行配置、oh-my-fish 使用、oh-my-posh 使用。
那么,开始吧!
(一)、对 Fish 进行配置
Fish 的配置文件位于
~/.config/fish/config.fish
。由于,Fish 使用函数对命令进行封装。我们也可以直接在可视化 Web 页面通过编写函数实现我们想要的效果。

在这里,我仅做一个演示,望理解。
背景:每次启动 Fish 时都会出现简介,笔者觉得比较烦。希望能够隐藏或者自定义简介。
步骤:
1、输入命令:
help
查看官方 帮助文档。= =b2、在配置文件
~/.config/fish/config.fish
可以通过命令“set -U fish_greeting”关闭开始简介。3、如果想要自定义简介,则可以输入“fish_config”命令打开可视化 Web 页面,在
functions
窗口找到“fish_greeting”函数,并输入代码:# Defined in /home/AaronLi/.config/fish/functions/fish_greeting.fish @ line 1 function fish_greeting echo '您想输入的文字' end
修改完函数,再在配置文件
~/.config/fish/config.fish
中输入命令 “set -g fish_greeting”
即可。Fish 的函数封装方式看起来更具模块化,但是任何事务都具有两面性。或许在别人看来纯粹徒增烦恼。但是不管怎么样,希望大家都对 Fish 的配置有一个初步地了解。
(二)、使用 Oh-My-Fish
相信大家都听说过“Oh-My-Zsh”,对“Oh-My-Fish”可能有些陌生,其实“Oh-My-Fish”和“Oh-My-Zsh”一样都是基于对应 shell 所设计的框架,通过该框架您可以自行安装所需扩展、Shell 外观等。
1、安装 Oh-My-Fish
使用以下命令即可:
curl -L https://get.oh-my.fish | fish
2、使用 Oh-My-Fish 进行美化
通过使用“omf list”命令,可以查看 Fish 中已经安装的插件和主题。比如:我并未安装任何主题,则会显示:
$ omf list Plugins fish-spec omf Themes default
如果想要更改背景,则可以使用:
omf theme
查看 Oh-My-Fish 全部背景和已经安装背景。如果希望查看背景具体效果,则可以 点击这里
有关主题的一些命令,可以查看:
omf install 主题名 #安装主题 omf theme 主题名 #更换主题 omf search 主题名 #搜索主题 omf search -t 主题名 #限制搜索主题,比如 omf search -t cha 便仅会搜索含有 cha 名的主题
同样,插件的使用命令也类似:
omf install 插件名 #安装主题 omf theme 插件名 #更换主题 omf search 插件名 #搜索主题 omf search -p 插件名 #限制搜索插件
如果还想了解更多信息,可以查看 Oh-My-Fish 官方 README 文件,也可以阅读 Linux 中国推出的 Oh My Fish! 让你的 Shell 漂亮起来。
3、使用 oh-my-posh 美化
注意:使用 oh-my-posh 需要 Fish 版本高于或等于 V3.4.0可以使用命令“fish --version”查看当前 Fish 版本
oh-my-posh 是什么?用官方原话来说是:“A prompt theme engine for any shell.”,适用于任何 shell 的提示主题引擎。
如其名,oh-my-posh 对主流的 shell 都进行了配置。笔者喜欢使用 oh-my-posh 的原因便因其美丽的主题和对 Git 的良好支持。
比如,笔者现在所使用的一款主题
clean-detailed
:
除了常规的显示当前目录外,还显示 CPU 使用率、内存所占容量、命令执行时间以及最为重要的 Git 信息显示。
是不是觉得挺不错的。づ ̄ 3 ̄) づ
就让我们开始 oh-my-posh 美化之路吧!
注意:在本次配置过程中,会进行详略讲解。如果读者并未明白某个配置过程,可以查阅「官方文档」
(1)、安装 oh-my-posh
- 包管理器安装
如果你的包管理器系统中有 oh-my-posh 的话,那你可以直接使用包管理器进行安装。例如,Arch Linux。
sudo pacman -S oh-my-posh
- 直接下载二进制文件安装
# 注意:此 CPU 架构为 amd64 sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh # 注意:此 CPU 架构为 arm64 sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-arm64 -O /usr/local/bin/oh-my-posh # 注意:此 CPU 架构为 arm sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-arm -O /usr/local/bin/oh-my-posh
并设置其权限:
sudo chmod +x /usr/local/bin/oh-my-posh
解释:如果读者不知晓自己电脑的处理器体系结构,可以在命令行输入命令“uname -m”查看。比如:笔者输出结果为“X86_64”,那么我就应该选择“amd64”。
以上是笔者自己的做法,但其实官方提供了一个脚本,但是由于其脚本下载github源文件速度太慢所以被舍弃。
以下是官方的做法:
curl -s https://ohmyposh.dev/install.sh | bash -s # 上述是官方原本的写法,如果你不是root用户,请使用下述方式: # curl -s https://ohmyposh.dev/install.sh | sudo bash -s
默认的安装路径为:
/usr/local/bin/oh-my-posh
,可以自己设置路径,比如我希望在~/bin
下,那么则应该写为:curl -s https://ohmyposh.dev/install.sh | sudo bash -s -- -d ~/bin
注意,如果你安装的路径为自定义,则需要在
~/.config/fish/config.fish
下,也就是在fish的配置文件下设置oh-my-posh的PATH。(2)、下载主题
# 创建主题存放文件夹,读者可以根据需要自定义存放位置, # 如果自定义修改位置,那么后续的命令也需要做出相应更改 mkdir ~/.poshthemes # 获取主题zip文件并存放至对应主题文件夹(如果使用该命令下载zip较慢, # 可以通过复制该URL使用“github文件加速下载下载”文件 wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip # 解压主题压缩包文件 unzip ~/.poshthemes/themes.zip -d ~/.poshthemes # 将所有主题文件设置可读权限 chmod u+rw ~/.poshthemes/*.omp.* # 删除主题压缩包 rm ~/.poshthemes/themes.zip
(3)、安装字体
因为 oh-my-posh 的主题需要显示字体图标,所以需要使用 Nerd Fonts“家族”的字体。在 oh-my-posh 官方文档推荐使用 Meslo LGM NF 字体,但是根据笔者的经验,使用其他“Nerd Fonts”也是没有问题的。比如笔者使用的字体便是“JetBrainsMono Nerd Font”,随读者自己的爱好。
除了手动下载安装字体外,oh-my-posh 也提供在线安装:
sudo oh-my-posh font install
通过移动上下键选择自己想要安装的字体即可。
(5)、配置 Fish 主题
使用 oh-my-posh 配置 Fish 也比较简单,只需要将下面的这段命令添加到 fish 的配置文件的最后一行即可。
# 注意“~/.poshthemes/jandedobbeleer.omp.json”,根据实际安装情况选择读者自己设置的 oh-my-posh 主题位置而定,在此仅作为参考。 oh-my-posh init fish --config ~/.poshthemes/jandedobbeleer.omp.json | source
注意
主题可以在官网查看,当读者看到适合自己的主题时,可以暂时通过命令“oh-my-posh init fish --config ~/.poshthemes/看到的主题名.omp.json | source”查看使用效果,如果合适则直接将该命令添加到fish的配置文件中即可。
重载 Fish 配置文件,那么 oh-my-posh 便成功完成美化。
. ~/.config/fish/config.fish
至此,便结束 Fish 的配置与美化。
如果,读者对配置教程有不明白地方,可以阅读下方的参考文档。
参考
如果觉得还不错,可以通过点击右侧设置按钮赏笔者一杯咖啡,谢谢支持啦~~。
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。

- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2025/04/12/(Reprinted)-Using-Fish-shell-under-Linux-Terminal-and-Beautifying-Mywood-Aaron-Blog-Garden
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章