Fish - A phenomenal Unix Shell

Là một engineer, chắc hẳn bạn đã quen với việc sử dụng một công cụ đầy sức mạnh trên Linux hay MacOS, đó là Terminal. Tuy nhiên có thể bạn đã chán ngấy với giao diện nhàm chán của chương trình Bash mặc định ?

Bài viết này sẽ giới thiệu đến bạn một chương trình Shell nổi tiếng, với rất nhiều những chức năng nổi bật hơn so với Bash. Đó chính là Fish.

Những tính năng nổi bật của Fish

Support nhiều màu sắc

Không đơn điệu như Bash, Fish cho phép người dùng sử dụng tất cả 256 màu sắc khác nhau. Ta có thể tùy ý config những màu mà mình thích, cho những đối tượng thích hợp trong một câu command.

color.png

Khả năng gợi ý - Autosuggestions

Fish mang trong mình khả năng gợi ý câu lệnh một cách tuyệt vời.

Nó có thể báo cho bạn biết một câu lệnh có gõ sai hay không, một thư mục có tồn tại hay không ... hay cả những gợi ý về các câu lệnh bạn đã gõ từ trước, gợi ý về câu lệnh dựa trên document của câu lệnh đó (có thể xem thông qua câu lệnh man)

autosuggestion.png

Khả năng gợi ý về một câu lệnh đã từng gõ

dir.png

Một đường dẫn sai (thư mục không tồn tại) và đường dẫn đúng được hiển thị khác nhau

Config dễ dàng

Bên cạnh việc cho phép người dùng tự thiết lập config qua một file config riêng, Fish còn cho phép người dùng tùy biến thông qua một giao diện web trực quan, để những người mới làm quen cũng có thể có được những thiết lập mang đầy phong cách cá nhân.

config.png

Ngoài ra còn rất nhiều tính năng hữu ích khác, bạn có thể tham khảo thêm ở trang chủ của Fish.

Cài đặt

Phiên bản 2.1, phiên bản mới nhất của Fish thật sự là có một bước nhảy lớn, khi cho phép sử dụng các alias, hay các câu lệnh vốn có của Bash như là source. Bởi thế mình khuyên các bạn nên cài đặt bản Fish 2.1 (Nhiều phiên bản Ubuntu nếu cài qua sudo apt-get một cách bình thường thì sẽ chỉ cài được bản 2.0 mà thôi).

Ubuntu

Đầu tiên bạn cài đặt Fish thông qua các câu lệnh sau đây.

sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish

Sau đó, thiết lập để đưa Fish làm Shell mặc định của Ubuntu.

echo "/usr/bin/fish" | sudo tee -a /etc/shells
chsh -s /usr/bin/fish

Như vậy là công việc của bạn đã hoàn tất, giờ chỉ việc logout ra rồi vào lại để những thiết lập có hiệu lực. Sau đó hãy bật Terminal lên và bạn sẽ thấy Fish đã được thay thế cho Bash.

Nếu không muốn dùng Fish, và muốn quay về trình Bash mặc định thì bạn có thể dùng câu lệnh sau

chsh -s /bin/bash

Thao khảo hướng dẫn cài đặt trên các distribution khác tại đây

Mac OS

Cách đơn giản nhất để cài đặt trên Mac là cài đặt thông qua Homebrew

brew install fish

Sau khi cài đặt xong thì bạn cũng làm tương tự như phần ở Ubuntu để đưa Fish làm trình Shell mặc định.

echo "/usr/local/bin/fish" | sudo tee -a /etc/shells
chsh -s /usr/local/bin/fish

Config

Như đã nói ở phần trên, bạn có thể thực hiện việc các thiết lập cho Fish thông qua một giao diện web trực quan. Hãy sử dụng câu lệnh fish_config, để rồi bắt đầu tùy chỉnh những gì mình thích.

Ngoài ra, bạn còn có thể tự viết những config của mình ra một file riêng có tên config.fish, đặt nó bên trong thư mục ~/.config/fish/, để có thể config mà không cần phải sử dụng đến giao diện web.

Cách này rất thích hợp trong trường hợp bạn sử dụng Fish trên một remote server, và không access vào giao diện web config của nó được.

Dưới đây là nội dung file config mà mình vẫn đang sử dụng.

# Greeting when start
set -g -x fish_greeting 'HI, TRAN DUC THANG'

# fish git prompt
set __fish_git_prompt_showdirtystate 'yes'
set __fish_git_prompt_showstashstate 'yes'
set __fish_git_prompt_showupstream 'yes'
set __fish_git_prompt_color_branch yellow

# Status Chars
set __fish_git_prompt_char_dirtystate '⚡'
set __fish_git_prompt_char_stagedstate '→'
set __fish_git_prompt_char_stashstate '↩'
set __fish_git_prompt_char_upstream_ahead '↑'
set __fish_git_prompt_char_upstream_behind '↓'

set fish_color_error c35359

function fish_prompt
    set_color 18974e
    printf (date "+$c2%H$c0:$c2%M$c0:$c2%S>")
    set_color f2777a
    printf '%[email protected]%s%s%s%s> ' (whoami) (set_color ff8a00) (hostname | cut -d . -f 1) \
        (set_color $fish_color_cwd) (prompt_pwd)
    set_color $fish_color_error
    printf '%s ' (__fish_git_prompt)
    set_color normal
end

Config như trên rất thích hợp với những ai hay thường xuyên sử dụng git CLI, nó giúp bạn theo dõi được mình đang ở branch nào, và có gì thay đổi hay không.

fish_git.png

TL;DR