[Series] [Linux programming] Những khái niệm cơ bản [Part 2]
LINUX và 1 vạn câu hỏi vì sao
1. Linux Shell - Trình thông dịch:
Vỏ Linux, shell, là một chương trình được thiết kế chuyên biệt để đọc lệnh nhập từ users và thực thi. Nôm na thì nó khá giống trình biên dịch ở chỗ nó dịch mã người dùng thành mã máy. Khác biệt là nó đọc từng lệnh một trong khi trình biên dịch sẽ quét và xử lí toàn bộ. Một cách dễ hiểu, shell đóng vai trò trung gian như giao diện giúp người dùng tương tác với OS, khi nhập lệnh, nó sẽ diễn giải các lệnh đó, cung cấp giao diện người dùng dưới dạng mã lệnh (Command Line Interface - CLI). Một thuật ngữ khác dành cho shell là command intepreter - trình thông dịch.
Người dùng có thể tương tác với shell thông qua trình giả lập terminal - Terminal Emulator (GNOME Terminal (mặc định trong Ubuntu), Terminator, Guake, Kitty, Rxvt - Unicode, etc), hoặc trực tiếp thông qua cổng Serial, dùng Secure shell (SSH) trên hệ thống Server lớn (này thì cứ puTTY, Tera Term, WinSCP, minicom, vv mà phang).
Khác biệt của shell ở các hệ thống UNIX, UNIX-like so với các OS khác là shell không phải một phần của Kernel mà shell đơn giản là một tiến trình người dùng (user process). Để xem trên Linux distro của bạn đang dùng shell gì, bạn có thể kiểm tra file /etc/shells. Một số shell trên Cygwin (do mình lười mở máy ảo Linux :v)
$ minhm@DESKTOP-OSU08TV ~ $ cat /etc/shells /bin/sh /bin/ash /bin/bash /bin/dash /bin/mksh /bin/pdksh /bin/posh /bin/tcsh /bin/zsh /usr/bin/sh /usr/bin/ash /usr/bin/bash /usr/bin/dash /usr/bin/mksh /usr/bin/pdksh /usr/bin/posh /usr/bin/tcsh /usr/bin/zsh
2. Các shell phổ biến:
Bourne shell (sh): Là shell lâu đời nhất viết bởi Steve Bourne (7th ed UNIX). Bourne shell hầu như có tất cả các chức năng của một shell cơ bản: điều hướng I/O, piping, quản lí biến môi trường, chạy nền, globbing (dùng kí tự để đại diện tên tệp), vâng vâng và mây mây.
Korn shell (ksh): Shell này hiện nay mình đang dùng cho scripting trên QNX Neutrino (tham khảo: QNX available shells). ksh lấy ý tưởng từ Bourne shell, viết bởi David Korn ở Bell Labs. Trong khi có những tính năng mới tương tự C shell (csh), và khá tương đồng với bash, nó vẫn đảm bảo tính tương thích với Bourne shell. ksh có cú pháp lặp tốt hơn, cách lặp lệnh tự nhiên và sử dụng mảng liên kết (tham khảo: Korn shell cheat sheet).
Bourne Again Shell (bash): đây là shell nằm trong dự án GNU, được xem như một phiên bản khác của Bourne shell trong GNU. Tác giả của bash là Brian Fox và Chet Ramey. bash có thể được xem như là shell phổ biến nhất trên Linux distro, vì nó được cài mặc định (!?). Tuyệt đối không được nhầm lẫn giữa Bash và Bourne shell vì Bourne shell (sh) trên Linux thực chất được bash giả lập gần nhất có thể, về bản chất nó không phải Bourne shell, thao khảo: Differences between bash and sh). Bash aliasing: mình recommend dùng bash aliasing trên mọi mặt trận vì giúp tiết kiệm rất nhiều thời gian gọi lệnh. Không chỉ aliasing trong .bashrc mà mình aliasing luôn git commands trong .gitconfig, tham khảo: git aliases.
Một lưu ý thú vị là tiêu chuẩn POSIX.2-1992 được ra đời dành cho các shell dựa trên ksh sau này. Hiện tại, cả ksh và bash đều theo chuẩn POSIX nhưng có thêm thắc các tính năng mở rộng.
Friendly Interactive Shell (fish): recommend! Mình thích nhất tính năng Glorious VGA color, cho phép hỗ trợ 24 bit true color. Lệnh không đúng sẽ có màu đỏ, lệnh đúng màu xanh lam (tham khảo: FISHSHELL).
Ngoài ra còn có csh (C shell), tcsh (T-TENEX, cải tiến của csh), zsh (Z shell), etc.
Tiếp theo: Users và Groups
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất