内容提要
这篇文章介绍了fish shell的优势和劣势,包括补全和提示方面的强大功能、快速速度和简单配置。然而,它的兼容性不佳,无法直接运行某些shell脚本。作者认为fish shell适合个人电脑使用。文章还介绍了使用atuin管理shell历史记录的方法,并解释了如何在fish shell中解除atuin的方向键绑定。
延伸解读
fish 的补全与提示:效率提升的关键
文章指出 fish 的补全和提示功能比 zsh 更强大,几乎无需额外配置就能提供智能提示。例如在 wine 源码目录输入一个点就提示完整命令,输入 ip 命令后按 Tab 会显示子选项和核心提示。这种体验让作者感觉有 AI 加持,能有效提升日常工作效率。
兼容性代价:fish 的局限与应对
fish 的兼容性不佳,无法直接运行部分 shell 脚本,激活 Python 虚拟环境需使用 activate.fish 脚本。遇到无法运行的脚本时,作者会临时切换到 bash。由于大多数系统自带 bash,这增加了使用成本,因此作者认为 fish 更适合个人电脑而非服务器环境。
atuin 历史管理:本地掌控与便携性
atuin 将 shell 历史记录存储在 SQLite 数据库中,包含时间、命令、退出状态码、工作目录和主机名等信息。作者不使用云同步,认为个人数据应自己掌控。通过导入其他 shell 的历史记录,atuin 相当于一个便携的 history 数据库,备份数据库文件即可在新电脑上恢复历史。
解除 atuin 方向键绑定:保留习惯与高级搜索
atuin 默认接管方向键,可能影响习惯。在 fish 中,可通过设置 ATUIN_NOBIND 为 true 并重新绑定 Ctrl+R 来解除方向键绑定,同时保留 atuin 的搜索功能。作者认为这样既能使用默认方向键,又能利用 atuin 更强大的搜索,平衡了习惯与效率。
Q&A
fish shell 相比 zsh 有哪些优势?
fish shell 的补全和提示功能比 zsh 更强大,几乎无需额外配置就能获得类似 AI 加持的提示体验;速度更快;配置简单,可通过 fish_config 在网页界面配置颜色和提示符,也可用 help 查看离线文档。
fish shell 有什么缺点或兼容性问题?
fish shell 兼容性不好,部分 shell 脚本无法直接运行,需要临时切换到 bash;激活 Python 虚拟环境需使用 activate.fish 脚本。
atuin 是什么?它有什么作用?
atuin 是一个管理 shell 历史记录的工具,可以导入其他 shell 的历史记录,历史记录默认存储在 SQLite 数据库中,便于在新电脑上恢复历史记录。
如何在 fish shell 中解除 atuin 对方向键的绑定?
在 fish 配置文件 config.fish 中设置 set -gx ATUIN_NOBIND "true",然后执行 atuin init fish | source,并手动绑定 Ctrl+R 到 _atuin_search,这样方向键就恢复默认功能。
atuin 的历史记录存储在哪里?如何备份?
atuin 的历史记录默认存储在 SQLite 数据库文件中,路径为 ~/.local/share/atuin/history.db,保存该文件即可备份历史记录,在新电脑上恢复。
fish shell 适合在什么场景下使用?
fish shell 适合在个人电脑上使用,快捷方便,能有效提升工作效率,但因其兼容性问题,可能不适合需要运行大量 bash 脚本的环境。