我使用 Readline 的时间和使用 Bash 一样长,这几乎贯穿了我的整个成年生活。它一直运行良好,所以我从未真正考虑过替换它。
当一位同事在屏幕共享会话中分享他的终端时,情况发生了变化。我注意到,在他按下 Enter 键之前,他的 shell 就已经用红色高亮显示了一个损坏的管道(broken pipe),而且他可以像在 Slack 中搜索消息一样轻松地模糊搜索命令历史记录。
这立刻引起了我的注意,于是我问他用的是什么。原来是 Flyline,一个用 Rust 编写的轻量级插件。
当天晚上我就把它安装在了我的主力 Ubuntu 工作站上,第二天早上又装到了一台 Rocky Linux 测试服务器上。两次安装都只需要一两条命令,而且不需要 sudo。
最让我印象深刻的是我不再需要那么多工具了。像模糊历史记录搜索和提示符增强这样的功能已经内置在 Flyline 中,而且因为它直接在 Bash 内部运行,而不是每次按键都启动外部程序,所以一切感觉都快速且响应灵敏。
Flyline 实际做了什么
Flyline 是一个用 Rust 编写的 Bash 可加载内建命令(loadable builtin),用于替代 GNU Readline——这个库几十年来一直在 Bash 中处理命令行编辑。
Readline 提供基础功能,例如移动光标、调出命令历史记录和 Tab 补全。Flyline 也能完成所有这些工作,但还增加了现代功能,如输入时的语法高亮、撤销和重做、用于点击和选择文本的鼠标支持、工具提示、动画光标,以及通过 Ctrl+R 进行的模糊历史记录搜索,类似于 fzf 提供的体验。
它还包含一个 Agent Mode(代理模式),允许你用简单的英语描述你想做的事情。随后,连接的 AI 代理可以为你建议相应的 Bash 命令。当你知道自己想要实现什么,却记不起确切的命令或其选项时,这尤其有用。我们将在本文稍后部分介绍此功能。
另一个优势是性能。由于 Flyline 直接在 Bash 进程内部运行,而不依赖外部包装脚本或启动独立程序,因此感觉快速且响应灵敏。它是使用 ratatui(一个用于构建终端用户界面的 Rust 库)构建的,这使 Flyline 比传统的 Bash 提示符具有更流畅、更现代的感觉。
前提条件
在安装 Flyline 之前,请确保你具备:
- 运行 Bash 4.4 或更高版本的 Linux 系统(可使用
bash --version检查)。 - 已安装 curl,因为快速安装程序会下载所需的文件。
- 默认安装不需要
sudo或 root 访问权限。 - 可选:如果你想从源代码构建 Flyline 而不是使用安装脚本,则需要 Rust 和 Cargo。
第 1 步:使用官方安装脚本安装 Flyline
安装 Flyline 最简单的方法是使用官方安装脚本,该脚本会自动为你的系统下载正确的二进制文件并更新你的 ~/.bashrc,以便每次启动 Bash 时都会加载 Flyline。
curl -sSfL https://raw.githubusercontent.com/HalFrgrd/flyline/master/install.sh | sh
以下是该命令各部分的作用:
curl从 GitHub 下载安装脚本。-s以静默模式运行curl,隐藏进度条。-S即使在静默模式下,如果下载失败也会显示错误信息。-f使curl在服务器返回错误时停止,而不是下载错误页面。-L跟随任何重定向至最终下载位置。| sh将下载的脚本直接发送给 shell 执行。
要立即开始使用 Flyline,请打开一个新终端或重新加载你的 Bash 配置:
source ~/.bashrc
一旦你的 shell 重新加载,Flyline 就会自动替换默认的 Readline 界面。

第 2 步:验证安装并运行交互式教程
重启终端或重新加载 ~/.bashrc 后,通过启动其内置的交互式教程来验证 Flyline 是否处于活动状态:
flyline run-tutorial

该教程是熟悉 Flyline 功能的最快方式。它会引导你了解语法高亮、模糊历史记录搜索、撤销和重做、Tab 补全、内联建议和鼠标支持,让你可以直接在终端中尝试每项功能。
如果你是从源代码构建 Flyline 而不是使用安装脚本,那么在使用之前你需要手动加载该内建命令。
在 Ubuntu、Debian、Rocky Linux、RHEL 以及大多数其他 Linux 发行版上,运行:
enable -f ~/.local/lib/flyline/libflyline.so flyline
如果你是从源代码编译 Flyline,还需要事先安装 Rust 工具链。
sudo apt install cargo rustc [On Ubuntu/Debian] sudo dnf install cargo rust [On RHEL/Rocky Linux]
在这种情况下,需要 sudo,因为你是在系统范围内安装 Rust 编译器及相关开发工具。标准的 Flyline 安装本身并不需要它。
第 3 步:尝试模糊历史记录搜索和鼠标支持
Flyline 最有用的功能之一是改进的命令历史记录搜索。你无需滚动浏览旧命令或搜索精确匹配项,只需使用几个关键词即可进行搜索。
按 Ctrl+R,然后输入你之前运行过的命令的一部分:
Ctrl+R > docker ps stopped

请注意,即使你输入的单词顺序与原始命令不同,搜索仍然能找到匹配的命令。这种模糊匹配使得查找冗长或复杂的命令变得更加容易,而无需记住它们的确切语法。
当你正常输入命令时,Flyline 还会根据你的命令历史记录显示内联建议。如果建议的命令正是你想要的,请将光标移至行尾,然后按 右方向键 或 End 键接受它。
Flyline 还默认启用了鼠标支持。你可以点击当前命令行的任意位置来移动光标,或者在编辑命令时点击并拖动以选择文本。
第 4 步:自定义你的提示符
Flyline 兼容你现有的 PS1 提示符,因此如果你已经自定义了 Bash 提示符,则无需更改任何内容。不过,它还增加了对 RPS1(右对齐提示符)以及 PS1_FILL(填充左右提示符之间的空间)的支持。
例如,你可以在左侧显示常规提示符,在右侧显示当前时间:
echo 'PS1="\u@\h:\w\$ "' >> ~/.bashrcecho 'RPS1="\t"' >> ~/.bashrcecho "PS1_FILL='-'" >> ~/.bashrcsource ~/.bashrc
你的提示符将如下所示:
ravi@tecmint:~/projects -------------------- 14:32:07 $
右侧的时间戳会在提示符重绘时自动更新,因此它始终显示当前时间。
如果你喜欢自定义时间格式,可以使用 \D{format} 代替 \t。Flyline 支持 Chrono 格式字符串,允许你以不同的格式显示时间,包括毫秒。
例如:
RPS1='\D{%H:%M:%S.%3f}'
这将以 小时:分钟:秒.毫秒 的格式显示时间。
设置 Agent Mode(可选)
Flyline 的一项突出功能是 Agent Mode,它允许你用简单的英语描述你想做的事情,并由 AI 助手建议相应的 Bash 命令。
Agent Mode 默认未启用,因此你需要使用 flyline set-agent-mode 命令进行配置,以指定触发前缀和 Flyline 应使用的 AI 命令行工具。
flyline set-agent-mode \ --system-prompt "Be concise. Answer with a JSON array of at most 3 items with objects containing: command and description. Command will be a Bash command." \ --trigger-prefix 'ai: ' \ --command 'claude --print'
以下是每个选项的作用:
--system-prompt告诉 AI 如何格式化其响应。在此示例中,它返回一个包含 Bash 命令和简短描述的 JSON 数组,以便 Flyline 能够正确显示它们。--trigger-prefix 'ai: '定义告诉 Flyline 将你的输入发送给 AI 的文本。你可以将 ai: 替换为你喜欢的任何前缀。--command 'claude --print'指定 Flyline 应使用的命令行 AI 客户端。在此示例中,它使用带有您现有身份验证的 Claude Code,因此无需额外的 API 密钥。
如果命令执行成功,您将看到:
Agent mode configured. Trigger prefix: 'ai: '
为避免每次打开终端时都要配置代理模式(Agent Mode),请将相同的 flyline set-agent-mode command 添加到您的 ~/.bashrc 中。
配置完成后,在行首输入触发前缀,后跟您的请求:
ai: list files older than three days
禁用 Flyline
如果您想切换回默认的 Readline 界面,无需卸载 Flyline。只需在当前 Bash 会话中禁用它即可。
enable -d flyline
这仅影响您当前的终端会话。如果您关闭终端并打开一个新终端,Flyline 将通过安装期间添加到 ~/.bashrc 中的 enable -f 行再次加载。
如果您想永久移除 Flyline,请从 ~/.bashrc 中删除 enable -f 行,并从其安装目录(通常位于 ~/.local/lib/flyline/ 下)中删除 Flyline 库。
结论
Flyline 让 Bash 提示符更具现代感,同时不会改变 Bash 本身的工作方式。您可以获得语法高亮、模糊历史搜索、鼠标支持、内联建议以及可选的 AI 驱动命令生成等功能,所有这些都不需要 root 权限或复杂的设置。
如果您正在寻找一种让 Bash 更易于使用且体验更好的简单方法,Flyline 绝对值得一试。在日常工作流中使用几天,您很快就会知道哪些功能会成为您日常工作的一部分。