Unix / Linux - Shells là gì?
A Shellcung cấp cho bạn một giao diện với hệ thống Unix. Nó thu thập đầu vào từ bạn và thực thi các chương trình dựa trên đầu vào đó. Khi một chương trình kết thúc thực thi, nó sẽ hiển thị đầu ra của chương trình đó.
Shell là một môi trường mà chúng ta có thể chạy các lệnh, chương trình và tập lệnh shell của mình. Có những hương vị khác nhau của một shell, cũng như có những hương vị khác nhau của các hệ điều hành. Mỗi hương vị của shell có một bộ lệnh và chức năng được công nhận riêng.
Shell Prompt
Lời nhắc, $, được gọi là command prompt, được cấp bởi shell. Trong khi lời nhắc được hiển thị, bạn có thể nhập lệnh.
Shell đọc đầu vào của bạn sau khi bạn nhấn Enter. Nó xác định lệnh bạn muốn thực hiện bằng cách xem từ đầu tiên của đầu vào. Một từ là một tập hợp các ký tự không bị gián đoạn. Dấu cách và tab tách các từ.
Sau đây là một ví dụ đơn giản về date lệnh hiển thị ngày và giờ hiện tại -
$date
Thu Jun 25 08:30:19 MST 2009
Bạn có thể tùy chỉnh dấu nhắc lệnh của mình bằng cách sử dụng biến môi trường PS1 được giải thích trong hướng dẫn Môi trường.
Các loại vỏ
Trong Unix, có hai loại shell chính:
Bourne shell - Nếu bạn đang sử dụng vỏ loại Bourne, $ ký tự là lời nhắc mặc định.
C shell - Nếu bạn đang sử dụng trình bao kiểu C, ký tự% là lời nhắc mặc định.
Bourne Shell có các danh mục phụ sau:
- Vỏ Bourne (sh)
- Korn shell (ksh)
- Bourne Again vỏ (bash)
- Vỏ POSIX (sh)
Các vỏ loại C khác nhau theo sau:
- C shell (csh)
- TENEX / TOPS C shell (tcsh)
Phần mềm Unix gốc được viết vào giữa những năm 1970 bởi Stephen R. Bourne khi ông đang làm việc tại AT&T Bell Labs ở New Jersey.
Bourne shell là shell đầu tiên xuất hiện trên hệ thống Unix, do đó nó được gọi là "shell".
Bourne shell thường được cài đặt như /bin/shtrên hầu hết các phiên bản của Unix. Vì lý do này, nó là shell được lựa chọn để viết script có thể được sử dụng trên các phiên bản Unix khác nhau.
Trong chương này, chúng ta sẽ trình bày hầu hết các khái niệm Shell dựa trên Borne Shell.
Tập lệnh Shell
Khái niệm cơ bản về shell script là một danh sách các lệnh, được liệt kê theo thứ tự thực hiện. Một kịch bản shell tốt sẽ có các nhận xét, đứng trước# ký tên, mô tả các bước.
Có các bài kiểm tra có điều kiện, chẳng hạn như giá trị A lớn hơn giá trị B, các vòng lặp cho phép chúng tôi xem qua một lượng lớn dữ liệu, tệp để đọc và lưu trữ dữ liệu, các biến để đọc và lưu trữ dữ liệu và tập lệnh có thể bao gồm các hàm.
Chúng tôi sẽ viết nhiều kịch bản trong các phần tiếp theo. Nó sẽ là một tệp văn bản đơn giản, trong đó chúng ta sẽ đặt tất cả các lệnh của mình và một số cấu trúc bắt buộc khác để cho môi trường shell biết phải làm gì và khi nào thì làm.
Các tập lệnh và chức năng của Shell đều được thông dịch. Điều này có nghĩa là chúng không được biên dịch.
Tập lệnh mẫu
Giả sử chúng tôi tạo ra một test.shkịch bản. Lưu ý rằng tất cả các tập lệnh sẽ có.shsự mở rộng. Trước khi thêm bất kỳ thứ gì khác vào tập lệnh của mình, bạn cần thông báo cho hệ thống rằng một tập lệnh shell đang được khởi động. Điều này được thực hiện bằng cách sử dụngshebangxây dựng. Ví dụ -
#!/bin/sh
Điều này cho hệ thống biết rằng các lệnh tiếp theo sẽ được thực thi bởi trình bao Bourne. Nó được gọi là shebang vì#biểu tượng được gọi là băm, và dấu! ký hiệu được gọi là tiếng nổ .
Để tạo một script chứa các lệnh này, bạn đặt dòng shebang trước rồi thêm các lệnh -
#!/bin/bash
pwd
ls
Nhận xét Shell
Bạn có thể đưa nhận xét của mình vào kịch bản của mình như sau:
#!/bin/bash
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls
Lưu nội dung trên và thực thi tập lệnh -
$chmod +x test.sh
Tập lệnh shell hiện đã sẵn sàng để được thực thi -
$./test.sh
Khi thực hiện, bạn sẽ nhận được kết quả sau:
/home/amrood
index.htm unix-basic_utilities.htm unix-directories.htm
test.sh unix-communication.htm unix-environment.htm
Note - Để thực thi một chương trình có sẵn trong thư mục hiện tại, hãy sử dụng ./program_name
Tập lệnh Shell mở rộng
Các tập lệnh shell có một số cấu trúc bắt buộc cho biết môi trường shell phải làm gì và khi nào thì thực hiện. Tất nhiên, hầu hết các script phức tạp hơn script trên.
Sau cùng, shell là một ngôn ngữ lập trình thực sự, hoàn chỉnh với các biến, cấu trúc điều khiển, v.v. Cho dù kịch bản có phức tạp đến đâu, nó vẫn chỉ là một danh sách các lệnh được thực hiện tuần tự.
Tập lệnh sau sử dụng read lệnh lấy dữ liệu đầu vào từ bàn phím và gán nó làm giá trị của biến PERSON và cuối cùng in nó trên STDOUT.
#!/bin/sh
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"
Đây là một đoạn chạy mẫu của tập lệnh -
$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$