Fish - shell tương tác thân thiện
(github.com/fish-shell)- fish là một shell dòng lệnh thân thiện với người dùng, hoạt động trên macOS, Linux và các hệ liên quan, đồng thời cung cấp tô sáng cú pháp, gợi ý tự động khi nhập và hoàn thành bằng phím Tab mà không cần cấu hình riêng
- Về cơ bản, nó hoạt động tương tự các shell khác như bash hay zsh, nhưng những khác biệt chính có thể tìm bằng mục “unlike other shells” đã được tổng hợp trong hướng dẫn chính thức
- Đường dẫn cài đặt được chia theo từng nền tảng; trên macOS hỗ trợ Homebrew, MacPorts, trình cài đặt từ fishshell.com và ứng dụng độc lập
- Phiên bản macOS được hỗ trợ tối thiểu là 10.12
- Các gói Debian, Fedora, openSUSE, Red Hat Enterprise Linux/CentOS cho Linux được cung cấp qua openSUSE Build Service
- Có thể cài gói Ubuntu thông qua fish PPA
- Trên Windows 10/11 có thể cài bằng quy trình bản phân phối Linux của WSL hoặc tự build từ mã nguồn; mọi phiên bản Windows đều hỗ trợ cài qua Cygwin hoặc MSYS2
- Sau khi cài đặt, chỉ cần chạy
fishtrong shell hiện tại để bắt đầu sử dụng; có thể xem tài liệu người dùng qua lệnhhelptrong fish và tài liệu chính thức - Để chạy, cần các tiện ích POSIX cơ bản và những tiện ích hệ thống *nix thông dụng như
mktemp; một số tính năng tùy chọn sẽ cần thêm công cụ riêng- Tính năng tạo tự động hoàn thành dựa trên trang hướng dẫn và công cụ cấu hình web
fish_configcần Python 3.5+ - Tích hợp clipboard hệ thống cần một trong các công cụ
xsel,xclip,wl-copy/wl-paste,pbcopy/pbpaste - Hoàn thành đầy đủ cho
yarnvànpmcần mô-đun NPMall-the-package-names
- Tính năng tạo tự động hoàn thành dựa trên trang hướng dẫn và công cụ cấu hình web
- Việc build từ mã nguồn cần Rust 1.85 trở lên, CMake 3.15 trở lên và trình biên dịch C; PCRE2 và gettext được xử lý như các phụ thuộc tùy chọn
- Hỗ trợ cả build bằng CMake và Cargo; bản build Cargo đặt tệp nhị phân độc lập vào
~/.cargo/bin/, còn cài đặt đầy đủ bằng CMake cung cấp man page ở vị trí chuẩn, bản sao cục bộ của tài liệu HTML, cùng các tùy chọn thư mục bổ sung cho hàm, hoàn thành và cấu hình
2 bình luận
Hiện tôi đang dùng zsh, nhưng lần tới có dịp thì chắc cũng nên thử dùng fish xem sao.
Ý kiến trên Hacker News
Ưu điểm lớn nhất của fish là hầu như không cần cấu hình. Tôi 41 tuổi, có gia đình, nên hoàn toàn không còn kiên nhẫn để phí thời gian cấu hình công cụ; còn zsh thì lần nào tôi cố làm cho nó dùng ổn cũng có cảm giác nó cản trở mình
Nhiều script zsh cũng khó có thể gọi là vững chắc; nếu dùng shell thường xuyên, rốt cuộc bạn sẽ gặp các trường hợp biên mà những mớ script người dùng chủ yếu được cóp nhặt từ đâu đó không xử lý được
dotfiles fish của tôi là https://github.com/mattgreen/dotfiles/tree/master/fish, chỉ có hệ thống plugin dựa trên submodule, prompt git bất đồng bộ, alias và vài biến môi trường
fish gần như đã cung cấp sẵn mọi thứ nên không cần bảo trì, và giờ điều duy nhất tôi mong muốn là biến prompt bất đồng bộ thành tính năng hạng nhất, vì do phải theo dõi trạng thái nên việc này để shell đảm nhiệm sẽ tốt hơn code người dùng
Điều khó chịu hơn là khi họ nhờ trợ giúp, các lệnh tôi chỉ cho họ đều không chạy được trong fish, khiến việc xử lý sự cố chậm đi rất nhiều
Phần lớn cấu hình zsh còn lại là tiện ích prompt và những thứ tôi thêm trong vài năm qua; tôi không dùng cũng không cần plugin. Nếu cần, zplug mà tôi từng thử trước đây thật sự rất dễ cấu hình và sử dụng
[1]: https://github.com/mid-kid/config/blob/master/shell/.zshrc#L...
/bin/sh, tôi đã chuyển sang Fish vì những lý do tương tựXét về trải nghiệm người dùng, nó vượt xa các shell khác, và thật đáng ngạc nhiên là nó chưa được chọn làm mặc định trên các hệ điều hành như Mac. Với Fish, tôi có thể hướng dẫn người nhà làm việc trong terminal mà không ai bực bội hay bỏ cuộc; với các shell khác thì khó nói vậy
Vài năm trước tôi mất khoảng một giờ để chọn plugin muốn dùng và tạo repo, giờ máy mới chỉ cần 5–10 phút là sẵn sàng
Tôi dùng Fish làm login shell hơn 10 năm rồi, và khác với nhiều người, tôi cũng dùng nó cho scripting. Với các tác vụ đơn giản, nó có ít bẫy hơn bash nên viết script dễ chịu hơn nhiều
Khi đọc hướng dẫn trên mạng, chuyển các ví dụ bash sang fish là việc nhỏ. Tôi không hiểu vì sao người ta coi đó là vấn đề, và thực tế tôi chưa từng gặp rắc rối vì nó
set -ecủa bash. Tôi biết rất khó để làm cho nó hoạt động đúng trong mọi trường hợp, chẳng hạn cả pipefail, nhưng tôi không muốn viết nhiều script nếu thiếu tính năng nàyTôi đã dùng fish khoảng 5 năm và giờ không muốn quay lại nữa. Không cần cài thêm bất kỳ tính năng nào, trạng thái mặc định của nó đã làm được tất cả những gì cấu hình zsh cũ của tôi từng làm sau khi gắn thêm cả trình quản lý gói lẫn plugin
Thứ duy nhất tôi đổi là thêm spacefish, và giờ là starship.rs
zcũng đáng thử. Và hiện tôi không xem được cấu hình của mình, nhưng có một plugin thông báo khi lệnh chạy nền lâu kết thúc, khá hữu íchĐã lâu rồi nên tôi thử gom các thread liên quan. Còn thread nào nữa không?
What's Happening with Fish Releases? - https://news.ycombinator.com/item?id=36875727 - tháng 7 năm 2023
My shell setup with Fish and Tmux (2021) - https://news.ycombinator.com/item?id=35672358 - tháng 4 năm 2023
Ask HN: Are alternative (oil, nu, etc.) shells usable as daily drivers? - https://news.ycombinator.com/item?id=34722208 - tháng 2 năm 2023
Rewrite it in Rust - https://news.ycombinator.com/item?id=34588340 - tháng 1 năm 2023
Fish 3.6.0 - https://news.ycombinator.com/item?id=34298157 - tháng 1 năm 2023
Fish Shell 3.5.0 - https://news.ycombinator.com/item?id=31768405 - tháng 6 năm 2022
Fish 3.4.0 - https://news.ycombinator.com/item?id=30734072 - tháng 3 năm 2022
Fish 3.4.0 Released - https://news.ycombinator.com/item?id=30660587 - tháng 3 năm 2022
Ask HN: Oil or Fish Shell? - https://news.ycombinator.com/item?id=30154652 - tháng 1 năm 2022
The fish shell is amazing - https://news.ycombinator.com/item?id=29341390 - tháng 11 năm 2021
Nsh: A fish/bash-like Posix shell in Rust - https://news.ycombinator.com/item?id=28967257 - tháng 10 năm 2021
Fish Shell 3.3 - https://news.ycombinator.com/item?id=27663637 - tháng 6 năm 2021
Fish shell - https://news.ycombinator.com/item?id=27180420 - tháng 5 năm 2021
Fish Shell 3.2 - https://news.ycombinator.com/item?id=26302678 - tháng 3 năm 2021
Fish is not operational on a VT220 terminal (2015) - https://news.ycombinator.com/item?id=25526237 - tháng 12 năm 2020
New Features in the Fish Shell - https://news.ycombinator.com/item?id=24631138 - tháng 9 năm 2020
Dolphins learn from their peers to use empty shells to catch fish - https://news.ycombinator.com/item?id=23660910 - tháng 6 năm 2020
Fish Shell 3.1.0 - https://news.ycombinator.com/item?id=22314671 - tháng 2 năm 2020
Fish: A command line shell for the 90s - https://news.ycombinator.com/item?id=21361696 - tháng 10 năm 2019
Show HN: Fisher 3.0 – the package manager for the fish-shell - https://news.ycombinator.com/item?id=18920972 - tháng 1 năm 2019
Fish shell 3.0 - https://news.ycombinator.com/item?id=18776765 - tháng 12 năm 2018
Fish: A user-friendly command line shell for macOS, Linux, etc - https://news.ycombinator.com/item?id=15910897 - tháng 12 năm 2017
Fish (Shell) for a Week - https://news.ycombinator.com/item?id=14422672 - tháng 5 năm 2017
Why I'm Hooked on Fish Shell (and How to Set It Up Right) - https://news.ycombinator.com/item?id=14417046 - tháng 5 năm 2017
The fish shell is awesome - https://news.ycombinator.com/item?id=14179081 - tháng 4 năm 2017
Fish Shell Design Principles - https://news.ycombinator.com/item?id=11102941 - tháng 2 năm 2016
Fish shell 2.2 - https://news.ycombinator.com/item?id=9873090 - tháng 7 năm 2015
Fish shell - https://news.ycombinator.com/item?id=9566441 - tháng 5 năm 2015
FISH Shell: A dynamic shell - https://news.ycombinator.com/item?id=8783150 - tháng 12 năm 2014
Fish shell 2.1 - https://news.ycombinator.com/item?id=6626635 - tháng 10 năm 2013
fish shell - https://news.ycombinator.com/item?id=6224524 - tháng 8 năm 2013
Fish shell 2.0 - https://news.ycombinator.com/item?id=5723235 - tháng 5 năm 2013
Fish 2.0 shell beta - https://news.ycombinator.com/item?id=5567639 - tháng 4 năm 2013
Fish: Finally, a command line shell for the 90s - https://news.ycombinator.com/item?id=4073162 - tháng 6 năm 2012
Fish sucks (but your shell sucks more) - https://news.ycombinator.com/item?id=2031110 - tháng 12 năm 2010
Fish - The friendly interactive shell - https://news.ycombinator.com/item?id=820677 - tháng 9 năm 2009
Fish Shell: A User-Friendly Shell or Like a Heavily Customized zsh - https://news.ycombinator.com/item?id=811113 - tháng 9 năm 2009
https://news.ycombinator.com/item?id=23660910 có lẽ là một liên kết bẫy để xem ai đang theo dõi :)
Tôi từng dùng thử zsh một thời gian, nhưng ở trạng thái mặc định thì thực ra nó gần giống bash, và tôi có ấn tượng rằng muốn thấy ưu điểm thì phải bỏ thời gian tùy biến. Tôi không muốn tốn thời gian cho cấu hình shell, chỉ muốn nó chạy tốt ngay
Fish tốt hơn bash thấy rõ dù không cần cấu hình gì, và tự động hoàn thành như phép màu thì gần như thay đổi cuộc sống
Hồi đại học tôi dùng fish trên Ubuntu, và chiếc MacBook nhận ở công việc đầu tiên cũng được cấu hình dùng fish. Khi đó chỉ có một người phụ trách DevOps, mà tài liệu thiết lập ứng dụng và script chỉ viết cho zsh hoặc bash; thành thật mà nói tôi đã nghĩ chuyển sang zsh cũng được
Nhưng người đó ngăn tôi lại, rồi dành nửa ngày học fish và thêm cả script fish vào tài liệu. Thật sự là một người đáng biết ơn
Điểm hay của fish là ngay từ đầu nó đã cung cấp khá nhiều tính năng tiện lợi mà không cần cài plugin. Tôi chỉ thêm starship.rs và tích hợp fzf
Tôi rất thích tagline của fish, và nó khá buồn cười. Tôi đã dùng một thời gian và thấy đủ ổn, nhưng về chiến lược phát triển thì họ chủ ý tránh các tùy chọn có thể cấu hình
Có vài thứ cứ làm tôi khó chịu, nhưng không có cách đổi hành vi, nên tôi chuyển sang zsh và làm cho nó hoạt động giống fish nhưng theo cách mình muốn. Với tôi đó là quyết định đúng và đáng khuyên dùng. Tôi cũng không thích oh-my-zsh hay trình quản lý plugin cho lắm
Tôi dùng fish, zsh, và giờ cả elvish nữa; điều quan trọng với tôi là gợi ý tự động và khả năng lấy lịch sử bằng phím mũi tên lên. zsh có mô-đun gợi ý tự động, còn elvish có lịch sử bằng mũi tên lên nhưng chỉ khớp phần đầu
Vì vậy fish vẫn dẫn trước, còn elvish đứng thứ hai vì việc nhập lệnh rồi nhấn mũi tên lên một lần gần như cho cảm giác như gợi ý tự động. Tôi chưa tìm được cách làm việc đó trong zsh, và về xử lý khối lệnh thì tôi cũng thích cách của fish và elvish hơn phong cách truyền thống của họ sh
Sai lầm lớn nhất của fish là không tương thích với bash. Tôi đã quá quen với bash, và trong một số hệ thống ở công ty chỉ có thể truy cập bash, không thể cài fish, nên tôi không muốn đổi
Việc phải qua lại liên tục giữa các ngôn ngữ scripting khác nhau rất khổ, và có lẽ sẽ không thể làm thoải mái bằng trí nhớ cơ bắp
#!/bin/bashở đầu script và tiếp tục scripting bằng bash, còn shell tương tác thì dùng fish, không được sao?Cá nhân tôi hầu như không đưa những thứ phức tạp như vậy vào shell; đến mức đó thì tôi tách ra thành script
bassthì tôi thấy không còn mấy nhu cầu phải chuyển đổihttps://github.com/edc/bass
Tôi không dùng fish, nhưng nó có một tính năng tuyệt vời mà zsh vẫn chưa sao chép được. Nó tạo tự động hoàn thành từ trang man, nên gần như với mọi chương trình bạn đều tự động có được hoàn thành cơ bản cho các flag