🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

什么是Fish Shell?一款连新手都会赞叹的用户友好型Shell 🐠

你是否对“黑屏”(也就是终端或控制台)感到畏惧?作为Web开发者,操作Git或执行构建任务时,总是免不了要输入命令,对吧?

“记不住命令……” “打字错误导致不停报错……” “配置太难,从入门到放弃……”

如果你有过这样的经历,那么一定要试试我们这次介绍的“Fish Shell”。Fish是“Friendly Interactive Shell”(友好交互式Shell)的缩写,正如其名,它是一款对新手极其友好的、超级易于使用的Shell。本文将不涉及深奥的理论,旨在让你通过复制粘贴来体验Fish的强大之处!


🚀 Fish Shell的过人之处!3个令人惊叹的亮点

Fish Shell有很多魅力,但我们特别为你介绍3个最能让新手感动的功能。

1. 像“预知未来”一样的“自动建议”功能

Fish Shell最大的亮点就是自动建议功能。它能记住你过去输入的命令,当你只输入几个字符时,它就会用浅灰色文字提示“你是不是想输入这个?”。如果建议正确,只需按下 (右箭头)键或 Ctrl+F 即可完成输入。再也不用重新输入长长的命令了!

例如,假设你之前输入过 `git switch feature/new-design` 这个命令。下一次你只需输入 `git s`……

$ git switch feature/new-design

它就会像这样自动为你建议剩余的部分。仅凭这一个功能,就能保证你的终端操作效率得到飞跃性的提升!


2. 错误一目了然!“语法高亮”

命令输入错误是导致报错的一大原因。Fish Shell可以实时地用颜色区分你输入的命令是否有效

例如,存在的命令 `git` 会以蓝色显示。

$ git

但是,如果你输入一个不存在的命令 `gitt`,它就会变成红色。这样你就可以在执行前发现“啊,我打错了!”

$ gitt

3. 无需配置文件!通过Web浏览器轻松定制

提到Shell的定制,你可能会想到编辑像 `~/.bashrc` 这样复杂的配置文件。有了Fish Shell,就完全不用担心了。请尝试执行以下命令:

$ fish_config

执行此命令后,浏览器会自动打开一个页面,你可以在上面一边预览效果,一边仅通过点击就能轻松定制颜色方案和提示符(等待输入命令的标志)的外观。即使是害怕黑屏的用户,也能直观地创建出自己喜欢的环境。


💻 先来动手试试!Fish Shell的基本操作

那么,让我们实际尝试一些Fish的命令吧。请将它们复制并粘贴到你的终端中,体验一下它的运作方式。

输出文字:`echo`

首先是基本的`echo`命令。它会将指定的字符串输出到屏幕上。这一点和其他Shell基本相同。

$ echo "Hello, Fish Shell!"
Hello, Fish Shell!

使用变量:`set`

在Fish Shell中处理变量需要使用 `set` 命令。我们不使用 `=`(等号),而是用空格分隔,这是Fish的风格。

$ set name "张伟"

要查看变量的内容,请在变量名前加上 `$` 并用 `echo` 输出。

$ echo $name
张伟

循环处理:`for` 循环

与其他Shell相比,Fish的`for`循环语法非常直观且易于阅读。

例如,让我们逐一显示从 `item-1` 到 `item-3` 的字符串。

$ for item in item-1 item-2 item-3
    echo $item
  end
item-1
item-2
item-3

你也可以使用命令的执行结果进行循环,例如 `(seq 1 3)`。这是一个生成从1到3的数字的命令。

$ for i in (seq 1 3)
    echo "Number: $i"
  end
Number: 1
Number: 2
Number: 3

创建简单函数:`function`

你可以将一系列常用命令组合成一个函数。这里,让我们创建一个名为 `hello` 的问候函数。

$ function hello
    echo "Hello, $argv!"
  end

这样,一个名为 `hello` 的新命令就创建好了。`$argv` 是一个特殊变量,用于接收传递给函数的参数(这里是名字)。

让我们马上执行一下刚创建的函数吧。

$ hello "World"
Hello, World!

💡 更进一步!高级用法

比别名更强大的缩写命令:`abbr`

`abbr`(abbreviation的缩写)可以让你将简短的关键词展开为长命令。它与别名(alias)类似,但`abbr`的特点是,在输入关键词后按空格键回车键,它会立即展开为完整的命令。这使你可以在执行前确认将要运行的命令。

让我们为Web开发者常用的 `git checkout` 创建一个缩写 `gco`。

$ abbr --add gco "git checkout"

这样,当你在终端输入 `gco` 并按空格时,它就会瞬间转换为 `git checkout`。这大大减少了打字量,真的非常方便!


⚠️ 注意!与bash的区别

尽管Fish非常出色,但它与许多Linux和macOS系统中的标准`bash` Shell存在一些差异。在从其他网站复制粘贴命令时尤其需要注意。

1. AND (&&) 的写法

当需要连续执行多个命令时,bash使用 `&&`,而Fish使用 `; and`。

错误 (bash的写法)

$ mkdir new_dir && cd new_dir

正确 (Fish的写法)

$ mkdir new_dir; and cd new_dir

2. 环境变量的设置方法

设置环境变量(例如添加PATH)的方法也不同。Bash使用 `export`,而Fish则使用 `set` 命令并附带 `-x` (export) 选项。

错误 (bash的写法)

$ export MY_VARIABLE="some_value"

正确 (Fish的写法)

$ set -x MY_VARIABLE "some_value"

只要掌握了这些差异,在大多数情况下你就不会遇到什么麻烦了。


总结

你觉得怎么样?希望通过复制粘贴,你已经体验到了Fish Shell的魅力,特别是像“自动建议”和“语法高亮”这样友好的功能。

即使是以前对终端操作感到畏惧的人,在使用Fish Shell后也一定会觉得“想更多地使用它!”。当命令操作变得轻松愉快时,开发效率也会大大提升。

如果你在阅读本文后对Fish Shell产生了兴趣,请务必阅读下一篇文章,将它实际安装并应用到你的开发环境中吧!


下一步 ▶ 如何安装和设置Fish (Linux / macOS)