Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Shell Linux Nào Tốt Nhất? So Sánh 5 Shell Phổ Biến

Hài lòng với bash shell trên Linux? Hay muốn thử thay thế? Có tsch, fish, KornShell, Z Shell. Shell nào tốt nhất?

Shell Linux Là Gì?

Viết ứng dụng thường dùng ngôn ngữ cấp cao (C#, Java, C++...). Máy tính hiểu binary (0/1). Compiler dịch ngôn ngữ cấp cao -> file binary executable.

Shell là interpreter (đ thông dịch). Giống compiler nhưng dịch từng câu lệnh một (compiler quét toàn chương trình). Shell là giao diện tương tác với OS: gõ lệnh -> shell dịch và thực thi. Copy file, piping, liệt kê file... đều do shell xử lý.

Xem shell có sẵn trên hệ thống:

cat /etc/shells

Xem shell đang dùng:

echo $0

1. Bash (Bourne-Again Shell)

Shell phổ biến nhất, default trên hầu hết Linux distro (default GNU shell). Ra mắt 1989, phát triển nhiều thập kỷ.

Tiền thân: Bourne Shell (sh) - shell Unix gốc. Ưu điểm: script sh chuyển sang bash không đổi code. Cải tiến:

  • Hoàn thành lệnh (Command completion)
  • Lịch sử lệnh (Command history)

Tài liệu online thường giả định dùng bash. Nhược điểm: viết script bash không luôn thanh lịch, dễ đọc.

2. KornShell (ksh)

Từ Bell Labs, thập niên 1980. Ít khác biệt với bash, mỗi cái có ưu điểm nhỏ. ksh có lệnh cd old new: từ /Downloads/foo/bar/one/foobar đến /Downloads/foo/bar/two/foobar chỉ gõ cd one two.

Người dùng ksh lâu năm khen ưu điểm scripting:

  • Cú pháp vòng lặp tốt hơn
  • Cách tự nhiên lặp lại lệnh
  • Mảng liên hợp (Associative arrays)

Khó tìm trợ giúp ksh online. Cài đặt:

sudo apt install ksh
ksh

3. Tcsh

Gốc Unix sớm. Phiên bản cải tiến của C shell (csh). Tính năng:

  • Hoàn thành dòng lệnh lập trình được
  • Chỉnh sửa dòng lệnh
  • Thêm đối số cho alias
  • Truy cập lịch sử lệnh dễ dàng

Chạy lệnh bằng !n (n = số thứ tự trong history). History tab completion: !a -> mở rộng lệnh cuối cùng bắt đầu bằng "a". Bash phải gõ !a:p xem rồi !! chạy.

Cài đặt:

sudo apt install tcsh
tcsh

Tcsh là default shell cho BSD (FreeBSD). Điểm mạnh: ngôn ngữ scripting hữu ích cho lập trình C - prototype chương trình C nhỏ mà không nhầm ngoặc khi chuyển đổi giữa C và shell scripting.

4. Fish (Friendly Interactive Shell)

Có chút hài hước: slogan "Finally, a command line shell for the 90s" (dù ra mắt 2005). Tính năng nổi bật:

  • Lệnh sai cú pháp hiển thị đỏ
  • Cú pháp đúng hiển thị xanh
  • Gợi ý tự động hoàn thành (Auto-complete suggestions)
  • Hoàn thành lệnh dựa trên man page cục bộ

Tính năng cuối: thêm cú pháp từ man page phần mềm mới cài vào gợi ý tự động. Muốn quen dòng lệnh -> fish là điểm khởi đầu tốt.

Thử fish:

sudo apt install fish
fish

5. Z Shell (zsh)

Nhiều người coi đây là shell tốt nhất. Zsh giống bash, ksh, kết hợp tính năng tcsh:

  • Danh sách tự động hoàn thành có thể điều hướng (Navigable autocompletion list)
  • Sửa lỗi chính tả vượt trội
  • Hoàn thành dòng lệnh
  • Lịch sử chia sẻ giữa các terminal
  • Globbing (ký tự đại diện tên file)

Globbing zsh rất mạnh: vim /u/l/b/a -> mở /usr/local/bin/autoupdate.sh.

Cấu hình zsh lần đầu có thể lâu nếu không dùng config mặc định. Thử:

sudo apt install zsh
zsh

Shell Nào Phù Hợp Với Bạn?

Sự có sẵn của nhiều lựa chọn tuyệt vời. Mỗi shell là nhìn vào lịch sử computing, nơi lập trình viên muốn làm theo cách riêng.

Khác biệt lớn nằm ở cú pháp scripting. Mỗi shell có nuance riêng. Bash thống trị thị phần -> dễ tìm trợ giúp nhất. Bash là all-rounder tốt nhất, đáp ứng nhu cầu của tất cả trừ power user nhất.

Khi đã chọn shell, hãy nắm vững cơ bản shell scripting.