Shell là gì ?
Shell là môi trường trong Unix/Linux mà chúng ta có thể chạy các lệnh, chương trình và Shell script. Shell cung cấp cho bạn một giao diện trong hệ thống Unix. Nó nhận lệnh từ bạn sau đó diễn dịch rồi chuyển tới nhân và có thể in kết quả xử lý ra màn hình
Các kiểu Shell
Trong Unix có hai kiểu Shell chính:
- Kiểu Bourne Shell: sử dụng dòng nhắc lệnh là ký tự $. Bao gồm các kiểu sau:
+ Bourne Shell (sh)
+ Korn Shell (ksh)
+ Bourne Again Shell ( bash)
+ POSIX Shell ( sh)
- Kiểu C Shell: sử dụng dòng nhắc mặc định là ký tự %. Bao gồm các kiểu sau:
+ C Shell (csh)
+TENEX/TOPS C Shell ( tcsh)
Trong blog này, chúng ta chỉ cập đến Shell trên cơ sở Bourne Shell.
Shell Scripts
Shell script là một danh sách các lệnh, được liệt kê theo thứ tự thi hành. Một Shell script tốt sẽ có các lời bình (comment) miêu tả các bước có dấu #
đứng đằng trước. Có các kiểm tra điều kiện, vòng lặp, biến, thao tác với tệp, script và có thể bao gồm các hàm.
Shell script và các hàm đều được thông dịch. Điều này có nghĩa là chúng không được biên dịch.
Ví dụ về Shell Scripts
Khai báo
Giả sử chúng ta tạo một test.sh
. Nên nhớ rằng tất cả các script nên có đuôi mở rộng .sh
. Trước tiên bạn cần viết dòng khai báo báo với hệ thống rằng một Shell script chuẩn bị được bắt đầu. Việc này được thực hiện bằng cách sử dụng cấu trúc shebang
.
#!/bin/sh
Lệnh này nói cho hệ thống rằng các lệnh theo sau được chạy bởi Bourne Shell. Nó được gọi là một shebang
bởi vì ký hiệu #
được gọi là một hash
và ký hiệu ! được gọi là một bang
.
Để tạo một script, bạn cần đặt dòng shebang lên đầu tiên sau đó mới viết lệnh
#!/bin/bash
date
cal
Lời bình
Bạn có thể đưa các lời bình để mô tả các câu lệnh trong script như sau:
#!/bin/bash
# Today's date and time
date
# Calendar
cal
Shell scripts mở rộng
Script sau sử dụng lệnh read
để nhận đầu vào từ bàn phím => gán giá trị cho biến NAME => in kết quả ra màn hình
#!/bin/bash
echo "What is your name?"
read NAME
echo "Hello, $NAME"
Ví dụ thực tế
Tạo filetest.sh
tại thư mục gốc của người dùng ~
vi ~/test.sh
Copy nội dung bên dưới vào rồi lưu lại
#!/bin/bash
# Today's date and time
date
# Calendar
cal
Chmod cho file để cho phép nó có thể chạy được. Nếu không chmod thì hệ thống sẽ báo lỗi Permission denied
chmod +x ~/test.sh
Bây giờ shell scripts có thể chạy với câu lệnh sau
~/test.sh
Kết quả
~/test.sh
Fri Jun 3 04:16:18 EDT 2016
June 2016
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Cách khác để chạy file test.sh
này là bạn có thể vào trong thư mục chứa script test.sh
với lệnh cd ~
rồi gõ ./test.sh