Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích

Khi mở terminal, rất có thể nó dùng Bash làm môi trường UNIX shell. Nhưng tồn tại các môi trường "shell" khác.

Có môi trường khác như C Shell, Korn Shell, Z Shell, thậm chí Fish Shell. Tất cả shell khác nhau có ưu/nhược điểm riêng, bạn nên cân nhắc trước khi chọn cho hệ thống.

Trong bài này, tôi sẽ đi qua một vài shell phổ biến cùng tính năng chính để bạn chọn.

Bash Shell

Bash Shell (Bourne Again Shell) là UNIX shell và ngôn ngữ lệnh. Được viết bởi Brian Fox cho GNU Project như phần mềm miễn phí thay thế Bourne Shell (sh).

Bash phát hành 1989, và đối với hầu hết distro Linux là shell mặc định. Distro khác như Kali Linux dùng Z Shell mặc định.

Bash là một trong những chương trình đầu tiên Linus Torvalds (người tạo Linux) port sang Linux.

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích Image Source

Điều không nên nhầm lẫn: Bash cũng là ngôn ngữ lập trình. Vì vậy nó là "Shell", nhưng bạn cũng có thể lập trình hành vi trong Bash. Ví dụ:

#!/bin/bash echo "Hello World" 

Điểm chính về Bash

  • Hầu hết user dùng Bash, vì nó là shell mặc định trên hầu hết hệ thống
  • Bash không có inline wildcard expression. Wildcard expression là khi muốn tìm pattern trong Shell, giống Regex. Ba wildcard chính: *, ?, [].
  • Không tự động đổi tên thư mục
  • # được coi là comment trong scripting
  • Có settings shopt
  • Prompt có backslash escapes
  • Cài đặt user nằm trong .bashrc

Z Shell

Z Shell, hay Zsh cũng là UNIX shell rất giống Bash. Bạn cũng có thể script và dùng shell như command interpreter.

Zsh là mở rộng của Bourne shell với nhiều cải tiến. Zsh phát hành 1990 bởi Paul Falstad, có tính năng Bash, Korn Shell, C Shell chia sẻ.

macOS mặc định dùng Zsh Shell.

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích Image Source

Điểm chính về Zsh

  • Có autocompletion khi dùng terminal. Khi nhấn Tab ↹ để autocomplete lệnh, không chỉ autocomplete mà còn hiển thị dropdown tất cả file/thư mục khác có thể:

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích

  • Hỗ trợ inline wildcard expressions
  • Cấu hình được nhiều hơn Bash
  • Hỗ trợ plugins và themes. Đây là danh sách plugins cho Zsh.

Cũng có framework xây quanh Z Shell. Phổ biến nhất là Oh My Zsh, framework community-driven, open-source quản lý cấu hình Zsh. (Tôi dùng Oh My Zsh 😄)

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích Image Source

Zsh và Oh My Zsh tương tự nhưng không hoàn toàn giống. Nhắc lại, Oh My Zsh là cách quản lý cấu hình Zsh, không phải Shell bản thân.

Fish Shell

Fish là môi trường UNIX shell nhấn mạnh vào interactivity (tương tác) và usability (khả năng sử dụng). Khác với Zsh, Fish mục tiêu cho user interactivity mặc định thay vì tin user tự cấu hình.

Được tạo bởi Axel Liljencrantz năm 2005. Fish được coi là "exotic shell" vì không tuân thủ chuẩn POSIX shell. [[Source](https://en.wikipedia.org/wiki/Fish_(Unix_shell)]

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích Image Source

Điểm chính về Fish

  • Fish có "search as you type" (tìm kiếm khi gõ) gợi ý tự động dựa trên lịch sử lệnh và thư mục bạn đang ở. Tương tự history search của Bash, history search của Fish Shell luôn bật. Nhờ đó user nhận feedback tương tác khi làm việc terminal.

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích Image Source

  • Fish ưu tiên features as commands (tính năng như lệnh) thay vì syntax. Điều này làm tính năng hiển thị qua lệnh với options và help text
  • Vì Fish mặc định có sẵn nhiều cấu hình, người ta cho là thân thiện với người mới hơn các option sh khác như Zsh.
  • Ngôn ngữ scripting của Fish khác Zsh và Bash. Zsh dùng nhiều aliases trong khi Fish tránh dùng aliases trong scripting.

Nếu chỉ làm script bằng lệnh cơ bản như cd, cp, vim, ssh, v.v., bạn không nhận thấy khác biệt cách Fish và Bash scripting hoạt động.

Một trong những khác biệt lớn nhất là khi capture output từ lệnh. Trong Bash bạn quen với:

todays_date=$(date) echo "Todays date is $todays_date" 

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích

Todays Date is Tue Dec 13 15:29:28 CST 2022 

Trong Fish, capture output hoạt động khác. Tương đương Fish trong scripting:

set date (date) echo "Todays Date $date" 

Chọn Linux Shell phù hợp: Bash, Zsh, Fish – Tính năng & Lợi ích giải thích

todays date is Tue Dec 13 21:35:03 UTC 2022 

Kết luận

Bash, Z Shell, Fish Shell đều có mérite riêng, cùng một số điểm tương đồng. Bạn dùng hiệu quả từng cái trong môi trường làm việc bây giờ vì đã hiểu hơn về chúng.

Nếu muốn cấu hình nhiều hơn, dùng Zsh (hoặc cài Oh My Zsh). Nếu muốn trải nghiệm terminal tương tác nhiều mà ít cấu hình, dùng Fish Shell. Nếu muốn cảm giác kinh điển, giữ Bash.

Tất cả tùy vào sở thích bạn như developer – chọn shell phù hợp nhất.

Hy vọng giúp ích! Cảm ơn đã đọc 🐚🐚🐚

Học lập trình miễn phí. Chương trình mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người tìm việc lập trình viên. Bắt đầu ngay