本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序

腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
关于 Fish shell 目前百度百科上还没有相对应的的词条,但是现实中可能已经被大家用乱了。Fish shell 被称为宇宙第一shell。
FISH(friendly interactive shell)是一个用户友好的命令行 shell,主要是用来进行交互式使用。shell 就是一个用来执行其他程序的程序。
命令行是程序员的必备技能。图形界面虽然好看,解决问题还是要靠命令行。
命令行由 Shell 提供。各种命令通过 Shell,传递给操作系统的内核。学习命令行就是在学习 Shell。
Shell 有好几种,目前最常用是 Bash 和 zsh。但是,在我看来,它们都不如 Fish Shell 好用。
五年前,我第一次尝试 Fish,感到很惊艳,一直用到现在。本文介绍 Fish 的主要特点,希望你也来尝试它。
Fish 简介
Fish 是"the friendly interactive shell"的简称,最大特点就是方便易用。很多其他 Shell 需要配置才有的功能,Fish 默认提供,不需要任何配置。
如果你想拥有一个方便好用的 Shell,又不想学习一大堆语法,或者花费很多时间配置,那么你一定要尝试一下 Fish。
Fish 安装
Ubuntu 和 Debian 的安装方法。
$ sudo apt-get install fish
Mac 的安装方法。
$ brew install fish
其他系统的安装请参考官方网站。
Fish 启动与帮助
安装完成后,执行 fish 命令 就可以启动 Fish。
$ fish
使用过程中,如果需要帮助,可以输入help
命令。浏览器就会自动打开,显示在线文档。
$ help
Fish 彩色显示
进入 Fish 以后,你注意到的第一件事,可能就是它默认彩色显示。
# 无效命令为红色 $ mkd # 有效命令为蓝色 $ mkdir
有效路径会有下划线。
$ cat ~/xttblog
上面代码表示,存在以~/xttblog开头的路径。如果没有下划线,你就知道这个路径不存在。
Fish 自动建议
Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。
# 命令建议 $ /bin/hostname # 参数建议 $ grep --ignore-case # 路径建议 $ ls node_modules
如果采纳建议,可以按下→或Control + F。如果只采纳一部分,可以按下Alt + →。
Fish 自动补全
输入命令时,Fish 会自动显示匹配的上一条历史记录。
$ git commit -m "feat: first commit"
如果没有匹配的历史记录,Fish 会猜测可能的结果,自动补全各种输入。比如,输入pyt
再按下Tab
,就会自动补全为python
命令。
如果有多个可能的结果,Fish 会把它们都列出,还带有简要介绍。
$ vi[按下 Tab 键] vi (Executable link, 2.7MB) view (Vi IMproved, 一个程序员的文本编辑器) viewer.py (Executable, 967B) viewres (Graphical class browser for Xt) ...and 12 more rows
这时,再按一次tab
,就可以在这些命令之中选择。
除了补全命令,Fish 还可以补全参数。比如,ls
命令的-l
参数后面按下Tab
键,就会显示可以连用的其他参数。
$ ls -l[按下 Tab 键] -l1 (List one file per line) -lA (Show hidden except . and ..) -la (Show hidden) -lB (Ignore files ending with ~) ...and 16 more rows```
Fish 还可以自动补全 Git 分支。
$ git checkout master
Fish 易懂的语法
Fish 的语法非常自然,一眼就能看懂。if语句。
if grep fish /etc/shells echo Found fish else if grep bash /etc/shells echo Found bash else echo Got nothing end
switch语句。
switch (uname) case Linux echo Hi Tux! case Darwin echo Hi Hexley! case FreeBSD NetBSD DragonFly echo Hi Beastie! case '*' echo Hi, stranger! end
while循环。
while true echo "Loop forever" end
for循环。
for file in *.txt cp $file $file.bak end
Fish 函数
Fish 的函数用来封装命令,或者为现有的命令起别名。
function ll ls -lhG $argv end
上面代码定义了一个ll函数。命令行执行这个函数以后,就可以用ll命令替代ls -lhG。其中,变量$argv表示函数的参数。
下面是另一个例子。
function ls command ls -hG $argv end
上面的代码重新定义ls命令。注意,函数体内的ls之前,要加上command,否则会因为无限循环而报错。
Fish 提示符
fish_prompt函数用于定义命令行提示符(prompt)。
function fish_prompt set_color purple date "+%m/%d/%y" set_color FF0 echo (pwd) '>' set_color normal end
执行上面的函数以后,你的命令行提示符就会变成下面这样。
02/06/13 /home/tutorial >
Fish 配置
Fish 的配置文件是~/.config/fish/config.fish,每次 Fish 启动,就会自动加载这个文件。
我们可以在这个文件里面写入各种自定义函数,它们会被自动加载。比如,上面的fish_prompt函数就可以写在这个文件里面,这样每次启动 Fish,就会出现自定义的提示符。
Fish 还提供 Web 界面配置该文件。
$ fish_config
输入上面的命令以后,浏览器就会自动打开本机的 8000 端口,用户可以在网页上对 Fish 进行配置,比如选择提示符和配色主题。
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Linux Fish shell 安装、配置、函数使用教程