Hiểu và làm chủ Linux shell - phần 1
Sau một thời gian viết bài trên Spiderum, mình nhận ra mình viết về nhiều chủ đề, nhưng chưa từng đóng góp gì cho anh em cùng ngành...
Sau một thời gian viết bài trên Spiderum, mình nhận ra mình viết về nhiều chủ đề, nhưng chưa từng đóng góp gì cho anh em cùng ngành IT. Một số tác giả đã viết về lịch sử Linux, lý do sử dụng Linux nên mình quyết định viết một loạt bài mới về Linux shell, một công cụ dòng lệnh mạnh mẽ và quan trọng đối với nhiều lập trình viên hay quản trị viên hệ thống.
Do tính đặc thù của ngành, mình giữ nguyên phần lớn các từ tiếng Anh và thêm vào giải nghĩa thay vì cố dịch và làm bạn đọc khó hiểu hơn. Nếu các bạn thấy hữu ích và đón nhận hãy để lại bình luận hay like để mình viết tiếp các phần sau nhé 😉
Distro Linux (bản phân phối Linux) mình sử dụng là Ubuntu 22.04 LTS và shell mình dùng là Bash. Nếu các bạn dùng các distro khác thấy câu lệnh không hoạt động như bài viết có thể thử chuyển sang Ubuntu/Bash nhé. Nào, chúng ta bắt đầu thôi!
Shell là cái gì, sao lại gọi là “vỏ”?
Để tìm câu trả lời, chúng ta cần hiểu một chút về kiến trúc hệ điều hành Linux
Như bạn thấy, kiến trúc Linux bao gồm 4 lớp từ ngoài vào trong như một củ hành (thứ ai cũng ăn ít nhiều khi dùng Linux 😂) trong đó lớp bên ngoài tương tác với lớp bên trong:
App/Utilities: các ứng dụng, tiện ích như Office mà chúng ta sử dụng hàng ngày.
Shell: lớp “vỏ” bao quanh kernel, là trình thông dịch lệnh người dùng gửi đến qua CLI (giao diện dòng lệnh) Shell sau đó ra lệnh cho kernel và xuất output (kết quả) lên CLI.
Kernel: “nhân” Linux chịu trách nhiệm quản lý tài nguyên hệ thống, nhận lệnh từ shell và tương tác với hardware.
Hardware: phần cứng bao gồm CPU, RAM, SSD ..v..v
Bạn có thể hiểu một shell đóng vai trò trung gian giao tiếp giữa người dùng và kernel. Khi bạn ra lệnh cho shell, shell chuyển các lệnh này cho kernel để thực thi. Vì shell hoạt động thông qua CLI nên chúng ta có 2 lựa chọn sử dụng shell:
- Gõ lệnh trực tiếp vào CLI: giao diện dòng lệnh tuy thô sơ nhưng lại rất mạnh vì nó cho phép người dùng tương tác với hệ thống qua vô vàn câu lệnh khác nhau kèm tham số. Gõ lệnh trực tiếp phù hợp cho các tác vụ chạy một lần.
- Viết shell script để thực thi sau: lựa chọn này cho phép người dùng tự động hóa các tác vụ muốn thực hiện. Họ có thể tự thực thi đoạn mã mình viết hoặc lên lịch chạy cho chúng vào thời điểm mong muốn. Shell script phù hợp cho các tác vụ lặp đi lặp lại.
Các distro Linux và MacOS gọi trình nhập lệnh bằng nhiều tên gọi như terminal, console, command line, konsole, xterm, terminator… nhưng bạn cần phân biệt chúng với shell. Terminal cung cấp một giao diện cửa sổ có dấu nhắc để người dùng có thể gõ lệnh và sau đó hiển thị kết quả dưới dạng văn bản. Shell xử lý lệnh và trả về kết quả. Terminal thuộc lớp App ngoài cùng trong kiến trúc Linux. Shell thuộc lớp thứ 2 sau App. Như vậy, thứ tự thực thi một lệnh diễn ra như sau:
Người dùng > terminal > shell > kernel > hardware
Khi terminal được thực thi, nó sẽ khởi động shell mặc định mà bạn thiết lập trên hệ thống, điều này làm một số người nghĩ rằng terminal và shell là một. Tuy nhiên, như mình đã nói ở trên, terminal chỉ là phần giao diện bên ngoài. Bạn hoàn toàn có thể thay đổi shell mặc định cũng như chuyển sang dùng shell khác trên cùng một terminal.
Những shell phổ biến hiện nay
Bash (Bourne again shell): là hậu duệ của Sh được nâng cấp với nhiều tính năng hơn. Bash ra mắt năm 1989 dành cho dự án GNU. Nó có mặt trên hầu hết các distro, thường được đặt là shell mặc định, cũng là shell mình dùng hàng ngày. Đường dẫn tới Bash là /bin/bash
Sh (the Bourne shell): được viết bởi và đặt theo tên nhà khoa học máy tính Stephen Bourne (không phải Jason Bourne) cho Version 7 Unix phát hành năm 1979. Sh gần như là ông tổ của các shell, nó thay thế cho Unix shell đầu tiên tên là Thompson. Tuy là một shell lâu đời, nó vẫn có mặt trên tất cả các distro ngày nay. Đường dẫn tới Sh là /bin/sh
Zsh (the z shell): z shell là một shell dành cho Unix. Nó được viết bởi Paul Falstad vào năm 1990 với nhiều chức năng hơn Sh. Zsh cho phép người dùng tùy biến mạnh mẽ và cung cấp nhiều chức năng cao cấp. Nếu bạn dùng Macbook, bạn sẽ thấy nó khi mở ứng dụng Terminal. Đường dẫn tới Zsh là /bin/zsh
Trên đây là kiến thức cơ bản để bạn có thể bước vào thế giới phức tạp của các shell Linux. Trong thực tế còn nhiều shell khác như fish, tcsh, ksh, Oh My Zsh ..v..v nếu bạn muốn mày mò tùy biến. Đi sâu hơn vào chi tiết, các shell còn khác nhau về mức độ hỗ trợ chuẩn POSIX hay tính tương thích khi một shell chạy script được viết cho shell khác.
Lời khuyên của mình cho các bạn mới bắt đầu là học Bash vì nó là một shell tốt cho cả người học cũng như người dùng cao cấp. Với Bash bạn có thể làm mọi công việc quản lý server cũng như phát triển phần mềm.
Bài viết cũng đã dài, chúng ta sẽ tìm hiểu giao diện terminal và những lệnh đầu tiên trong bài viết sau nhé, cảm ơn các bạn đã đọc và chúc các bạn cuối tuần vui vẻ! 🌞
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