Trong hệ điều hành Linux/Unix, shell là một thành phần rất phổ biến. Tuy nhiên vẫn chưa nhiều người hiểu được shell là gì và đặc điểm cơ bản khi sử dụng các lệnh trong shell. Trong bài viết này, BKHOST sẽ cùng bạn tìm hiểu về Linux shell.
Shell là gì?
Shell là một chương trình cung cấp cho bạn một giao diện với hệ thống Unix. Nó nhận thông tin đầu vào từ người dùng và thực hiện tập lệnh của các chương trình máy tính dựa trên những thông tin ấy. Khi một chương trình kết thúc việc thực hiện tập lệnh, shell sẽ hiển thị kết quả đầu ra của chương trình đó.
Shell là môi trường mà chúng ta có thể chạy các lệnh, chương trình và script shell. Trong một shell có nhiều kiểu khác nhau, nó giống như việc các hệ điều hành có những kiểu riêng biệt. Mỗi kiểu của shell đều có một bộ lệnh và chức năng được xác định riêng.
Dấu nhắc lệnh trong Shell
Trong shell có một dấu nhắc lệnh $
. Khi dấu nhắc lệnh này được shell đưa ra, bạn có thể nhập lệnh vào. Sau khi bạn nhấn enter, shell sẽ tiếp nhận thông tin đầu vào mà bạn cung cấp. Từ đầu tiên của thông tin nhập vào là từ mà shell dùng để xác định lệnh bạn muốn thực thi. Giữa các từ ấy không được có khoảng trống. Dấu nhắc lệnh hoàn toàn có thể tùy chỉnh theo ý của mình nếu bạn sử dụng biến môi trường PS1 được giải thích trong phần Environment tutorial.
Dưới đây là một ví dụ đơn giản của lệnh date mà hiển thị ngày và thời gian hiện tại:
{{EJS0}}
Các loại Shell
Trong Unix gồm có hai loại shell chính là Bourne shell và C shell. Bourne shell có dấu nhắc lệnh mặc định là ký tự “$
”. Còn C shell sẽ có ký tự là “%
”.
Bourne shell có các danh mục phụ bao gồm:
- Bourne shell (sh)
- Korn shell (ksh)
- Bourne Again shell (bash)
- POSIX shell (sh)
Các danh mục phụ của C shell bao gồm:
- C shell (csh)
- TENEX/TOPS C shell (tcsh)
Vào giữa những năm 1970, Stephen R. Bourne đã viết ra phần mềm Unix gốc khi đang làm việc tại AT&T Bell Labs ở New Jersey. Được gọi là “shell” do Bourne shell là shell đầu tiên có mặt trên hệ thống Unix.
Trên hầu hết các phiên bản Unix, Bourne shell thường được cài đặt ở dạng /bin/sh. Do đó, ở các phiên bản khác nhau của Unix, các script thường được viết bởi shell này. Trong bài viết này, hầu hết các khái niệm shell đều được viết dựa trên Bourne shell.
Shell Script
Shell Script của nó là một danh sách các lệnh, các lệnh sẽ được thực hiện theo thứ tự đã liệt kê. Một shell script tuyệt vời sẽ có chú thích, đứng trước # và diễn đạt các bước rõ ràng.
Sẽ có các kiểm tra mà trong đó sẽ có điều kiện như giá trị A lớn hơn giá trị B. Chúng ta có thể xem, đọc một lượng lớn dữ liệu hoặc file khi được các vòng lặp cho phép. Sau đó chúng ta có thể dùng các dữ liệu và biến để lưu trữ hoặc đọc các dữ liệu, script chứa các hàm.
Để giúp bạn hiểu rõ hơn về shell script, dưới đây sẽ là một số ví dụ. Các tập lệnh và chức năng của shell đều sẽ được diễn đạt một cách dễ hiểu. Về cơ bản thì đây vẫn chỉ là những script đơn giản. Trong các script này sẽ có một số phần cần thiết cho môi trường shell biết phải làm gì và khi nào thực hiện.
Ví dụ về script
Giả sử chúng ta tạo ra một tập lệnh test.sh, trước khi bạn thêm bất cứ thứ gì vào tập lệnh này, bạn phải sử dụng cấu trúc shebang để thông báo cho hệ thống rằng có một tập lệnh đang bắt đầu chạy.
Hãy nhớ là tất cả các tập lệnh đều có phần đuôi “.sh”. Với các tập lệnh có đuôi sh, hệ thống sẽ biết rằng các tập lệnh sau đó đều được thực hiện bởi trình Bourne. Ví dụ nhập các lệnh với cấu trúc shebang như sau:
{{EJS1}}
Comment trong Shell
Bạn có thể đưa phần comment của mình vào script như sau:
{{EJS2}}
Lưu chúng lại và cho shell thực thi tập lệnh bằng câu lệnh:
{{EJS3}}
Tập lệnh shell đã sẵn sàng để bắt đầu thực thi:
{{EJS4}}
Bạn sẽ nhận được kết quả sau khi lệnh hoàn thành như sau:
{{EJS5}}
Chú ý: Để thực thi chương trình có sẵn trong thư mục, bạn hãy sử dụng đuôi ./program_name
Shell Scripts nâng cao
Hầu hết các script trên đều là script đơn giản. Tuy nhiên dù có phức tạp như thế nào thì shell scripts vẫn chỉ là tập lệnh được thực hiện tuần tự với các biến, cấu trúc điều khiển,…
Sau khi sử dụng lệnh đọc, người dùng nhập thông tin vào từ bàn phím và gán nó vào giá trị biến PERSON và đặt nó trên STDOUT
{{EJS6}}
Ví dụ khi chạy thử đoạn lệnh trên
{{EJS7}}
Tổng kết về Shell
Trên đây là những thông tin cơ bản về Linux shell mà BKHOST đã tổng hợp. Vẫn còn nhiều vấn đề khác về shell mà bạn sẽ cần tìm hiểu kỹ nếu muốn sử dụng.
Ngoài ra, nếu bạn muốn tìm hiểu thêm những thông tin khác về Linux shell, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.