fish 是一款智能且用户友好的命令行 Shell,适用于 macOS、Linux 及其他操作系统。fish 包含语法高亮、输入时自动提示以及 Tab 键补全等功能,无需任何配置即可使用。
如需下载、查看屏幕截图等,请访问 https://fishshell.com/。
fish 的工作方式与其他 shell(例如 bash 或 zsh)类似。一些重要的区别可以在
https://fishshell.com/docs/current/tutorial.html 上搜索“unlike other shells”找到。
详细的用户文档可以通过在 fish 中运行“help”获取,也可以在https://fishshell.com/docs/current/index.html 获取。
macOS
fish 可以安装:
brew install fish
sudo port install fish
支持的最低 macOS 版本为 10.10“Yosemite”。
Debian、Fedora、openSUSE 和 Red Hat Enterprise Linux/CentOS 的软件包可从 openSUSE Build服务
获取。
Ubuntu 的软件包可从fish PPA
获取,可使用以下命令安装:
sudo apt-add-repository ppa:fish-shell/release-4
sudo apt update
sudo apt install fish
如果您的平台没有可用的软件包,您可以从 fishshell.com 和 GitHub 上的 fish-shell 获取 GPG 签名的 tarball。请参阅“构建”部分以获取相关说明。
安装完成后,从当前 shell 运行 fish 即可试用!
运行 fish 需要:
编译 fish 需要:
Sphinx 也是可选的,用于从克隆的 git 仓库构建文档。
此外,运行完整的测试套件需要 Python 3.5+、tmux 和 pexpect 包。
与其从源代码构建,不如考虑使用适合您平台的打包版本。使用以下步骤会使 Fish 的卸载或升级变得困难。您可以从上面的链接获取发布包,并且 Fish 的最新开发版本适用于许多平台。
要安装到 /usr/local,请运行:
mkdir build; cd build
cmake ..
cmake --build .
sudo cmake --install .
可以使用 cmake 的 -DCMAKE_INSTALL_PREFIX
参数更改安装目录。
除了常规的 CMake 构建选项(例如 CMAKE_INSTALL_PREFIX)之外,fish 的 CMake 构建还提供了一些其他选项来自定义。
您也可以构建嵌入数据文件的 Fish。
这将包含所有数据文件,例如主 Fish 二进制文件中包含的函数或 Web 配置工具。
Fish 会直接从其自身的二进制文件中读取这些数据文件,并在需要时打印出来。某些文件,例如 Web 配置工具和手册页补全生成器,将按需提取到临时目录中。您可以使用 status list-files
列出文件,并使用 status get-file path/to/file
打印一个文件(例如,status get-file functions/fish_prompt.fish
可获取默认提示符)。
要安装嵌入文件的 Fish,只需使用 cargo 命令,例如:
cargo install --path /path/to/fish # if you have a git clone
cargo install --git https://github.com/fish-shell/fish-shell --tag "$(curl -s https://api.github.com/repos/fish-shell/fish-shell/releases/latest | jq -r .tag_name)" # to build the latest release
cargo install --git https://github.com/fish-shell/fish-shell # to build the latest development snapshot
这会将二进制文件放置在 ~/.cargo/bin/
中,但您可以将其放置在任何您想要的位置。
此构建不包含 HTML 文档(帮助将打开在线版本)。它将尝试使用 sphinx-build
构建手册页。如果该命令不可用,而您希望包含手册页,则需要安装 sphinx-build 并重新触发构建脚本,例如,通过设置 FISH_BUILD_DOCS=1
:
FISH_BUILD_DOCS=1 cargo install --path .
将其设置为“0”将禁用手册页的包含。
要禁用翻译,请通过将 --no-default-features --features=embed-data
传递给 cargo 来禁用 localize-messages
功能。
您也可以静态链接此构建版本(但不针对 glibc),并将其移动到其他计算机。