Chủ đề ứng dụng: Lập trình Shell trên Ubuntu - công nghệ thông tin | Đại học công nghệ Sài Gòn
Chủ đề ứng dụng: Lập trình Shell trên Ubuntu - công nghệ thông tin | Đại học công nghệ Sài Gòn được sưu tầm và soạn thảo dưới dạng file PDF để gửi tới các bạn sinh viên cùng tham khảo, ôn tập đầy đủ kiến thức, chuẩn bị cho các buổi học thật tốt. Mời bạn đọc đón xem!
Môn: Công nghệ thông tin(CNSG)
Trường: Đại học Công nghệ Sài Gòn
Thông tin:
Tác giả:
Preview text:
Trường Đại Học Công Nghệ Sài Gòn Khoa Công Nghệ Thông Tin
Chủ đề ứng dụng:
LẬP TRÌNH SHELL TRÊN UBUNTU
Môn: Phát Triển Phần Mềm Nguồn Mở
Giảng viên hướng dẫn: ThS. Trần Văn Hùng Nhóm sinh viên: Dương Nguyên Cơ DH51903286 Lê Thị Hậu DH51903543 Phan Trọng Hiếu DH51903591 Nguyễn Thành Long DH51903919 Nguyễn Thị Kim Ngân DH51901114 2022 - 2023 Định nghĩa Shell
Shell là chương trình người dùng đặc biệt, cung cấp giao diện cho người dùng
sử dụng các dịch vụ hệ điều hành. Shell nhận các lệnh có thể đọc được từ người
dùng và chuyển đổi chúng thành thứ mà Kernel (nhân) có thể hiểu được. [1]
Nó là một trình thông dịch ngôn ngữ lệnh thực thi các lệnh được đọc từ các thiết
bị đầu cuối vào như bàn phím hoặc từ file. Shell được bắt đầu khi người dùng
đăng nhập hoặc khởi động Terminal. [1]
Chức năng của Shell
Kernel hiện tại là 1 chương trình đang thực hiện những tác vụ cơ bản sau đây:
Điều phối toàn bộ những tiện ích thuộc xử lý lệnh .
Kiểm soát toàn bộ những hoạt động của máy tính.
Đảm bảo những tiện ích không có sự xung đột lẫn nhau hay tiêu thụ hết
toàn bộ tài nguyên trong hệ thống.
Quản lý và lên lịch toàn bộ những quy trình hệ thống.
Trong quá trình giao tiếp với Kernel, Shell sẽ cung cấp những phương thức để
giúp cho người dùng hoàn toàn có thể sử dụng được những chương trình và tiện ích. [2]
Định nghĩa Shell Script
Có khi chúng ta muốn thực thi nhiều câu lệnh cùng một lúc thì ta phải nhập hết
các lệnh lên Terminal. Với việc làm này sẽ làm cho các lệnh dài hơn và dễ gây
nhằm lẫn, khó hiểu. Vì như đã nói trước đó Shell không chỉ nhận các câu lệnh
nhập trực tiếp mà còn có thể thực thi các lệnh được đọc từ file vào. Các file này
được gọi là Shell Script hoặc Shell Programs.
Các Shell Script tương tự như batch file trong MS-DOS. Mỗi Shell Script được
lưu với phần mở rộng tệp .sh. [1]
Một Shell Script có cú pháp khá giống với các ngôn ngữ lập trình hiện nay. Nên
việc bạn có kinh nghiệm với bất kỳ ngôn ngữ nào sẽ là lợi thế cho bạn khi bắt đầu với Shell.
Chức năng của Shell Script
Tránh các công việc lặp đi lặp lại. Tự động hóa các thao tác. [1]
System admins sử dụng Shell Script để sao lưu thường xuyên. [1]
Giám sát hệ thống (System monitoring). [1]
Thêm chức năng mới vào Shell.
Ưu điểm của Shell Script
Lệnh và cú pháp hoàn toàn giống với lệnh được được nhập trực tiếp trong
dòng lệnh. Vì vậy lập trình viên không cần phải chuyển sang cú pháp hoàn toàn khác. [1]
Viết và thực thi Shell Script sẽ nhanh hơn. [1]
Nhược điểm của Shell Script
Dễ xảy ra lỗi tốn kém, một lỗi duy nhất có thể thay đổi lệnh có thể gây hại. [1]
Không phù hợp cho các task lớn và phức tạp. [1] Phân loại Shell
Shell được chia làm 2 loại: Command Line Shell, Graphical Shell. Command Line Shell
Shell có thể được truy cập bởi người dùng bằng cách sử dụng Command Line
Interface. Một chương trình đặc biệt có tên Terminal trong Linux/macOS hoặc
Command Prompt trong Windows OS, được cung cấp để nhập vào các lệnh có
thể đọc được của người dùng sau đó nó được thực thi. Kết quả được hiển thị trên Terminal. [1]
Làm việc với Command Line Shell cho phép người dùng lưu trữ các lệnh trong
một file và thực thi chúng cùng nhau. Với tính năng này, công việc lặp đi lặp lại
nào có thể xử lý tự động. Các tệp này thường được gọi là batch file trong
Windows và Shell Script trong Linux/macOS. [1] Graphical Shell
Graphical Shell cung cấp phương tiện để thao tác với các chương trình dựa trên
giao diện GUI bao gồm những cửa sổ và thanh menu,… Điều này cung cấp sự
tương tác linh hoạt giữa người dùng và hệ thống do người dùng không cần nhập
lệnh cho mọi hành động.
Một số Shell có sẵn trong các hệ thống Linux:
BASH (Bourne Again Shell): Là phần mở rộng thêm của Shell Bourne
(SH). Kế thừa những gì SH đã có và phát triển thêm những gì mà SH chưa có. [3]
CSH (C Shell): Là 1 phần cải tiến Unix đã được viết bởi Bill Joy. Hỗ trợ
những tính năng lập trình vô cùng tiện lợi. Rất giống ngôn ngữ lập trình Shell. [3]
KSH (Korn Shell): Được viết bởi David Korn. Là loại Shell được đánh
giá tốt nhất khi kết hợp với các tính năng của Shell Bourne (SH) & Shell C (CSH). [3]
Ngoài những loại Shell trên thì còn 1 số loại Shell khác: nfssh, mcsh, ssh,… [3]
Mỗi Shell thực hiện cùng một công việc nhưng hiểu các lệnh khác nhau và cung
cấp các hàm dựng sẵn khác nhau. [1]
Giới thiệu môi trường lập trình Shell
Trong các ví dụ thực hành tiếp theo, nhóm sẽ thực hiện trên hệ điều hành Ubuntu.
Ubuntu là hệ điều hành mở do người dùng phát triển dựa trên Debian
GNU/Linux bao gồm nhiều bản phân phối khác nhau: Kubuntu, Lubuntu,
Xubuntu, Myth Ubuntu, Ubuntu Studio. Ubuntu có rất nhiều tính năng hữu ích.
Đồng thời, hệ điều hành Ubuntu cũng được cung cấp miễn phí. [4] Ưu điểm của Ubuntu:
Hoàn toàn miễn phí. [4]
Ít tốn tài nguyên phần cứng. [4] Tính bảo mật cao. [4]
Khả năng tương thích cao. [4]
Kho ứng dụng miễn phí khổng lồ. [4]
Chạy được nhiều ứng dụng trên Windows. [4]
Các bước tạo và thực thi Shell Script
Cách 1: Tạo Shell Script trong Terminal bằng lệnh Touch.
Bước 1: Mở cửa sổ Terminal và dùng lệnh touch tên_script.sh để tạo file.
Bước 2: Nhập lệnh nano tên_script.sh sau đó enter.
Bước 3: Tại cửa sổ này, ta sẽ nhập các lệnh muốn thực thi và lưu lại các thay đổi.
Bước 4: Cấp quyền thực thi cho file script vừa tạo.
Bước 5: Thực thi file script.
Cách 2: Tạo Shell Script bằng các trình soạn văn bản.
Bước 1: Sử dụng gedit để soạn các dòng lệnh. Sau đó lưu file với đuôi là .sh.
Bước 2: Mở cửa sổ Terminal và cấp quyền thực thi file script. Bước 3: Chạy file script. Biến trong Shell
Biến hệ thống: Được tạo ra và quản lý bởi Linux. Tên biến là chữ hoa.
Biến do người dùng định nghĩa: Được tạo ra và quản lý bởi người dùng.
Để truy xuất giá trị của biến ta dùng cú pháp: $tên_biến.
Đối với biến do người dùng định nghĩa, ta cần phải lưu ý một số điều sau:
Tên bắt đầu bằng ký tự hoặc dấu gạch dưới.
Không dùng các ký tự ? * để đặt tên biến.
Biến có phân biệt chữ hoa và chữ thường.
Không được có khoảng trắng trước và sau dấu = khi gán giá trị cho biến.
Ta có thể khai báo một biến có giá trị NULL như sau: var= hoặc var="".
Nhập, xuất trong Shell
Trong Shell dữ liệu được nhập từ bàn phím vào bằng lệnh “read” và xuất ra màn
hình bằng lệnh “echo”. Có 3 tham số cho người dùng tùy chọn: -n, -s, -t
“-n” tham số thuộc lệnh của “echo”: Người dùng nhập vào sẽ cùng dòng với lệnh echo.
“-s” tham số thuộc lệnh của “read”: Người dùng nhập vào sẽ không hiển thị nội dung.
“-t(s)” tham số thuộc lệnh của “read”: Người dùng sẽ được nhập trong một
thời gian cố định. Nếu trong khoảng thời gian mà người dùng chưa xác nhận thì
sẽ tự động bỏ trống (-t5: 5 là số giây cho người dùng nhập). Toán tử trong Shell
Có 4 cách thực hiện các phép toán +, -, *, / trong Shell: Expr, Let, $
(( expression)) hoặc $[ expression], bc. Sử dụng Expr
Đây là cách tính chỉ áp dụng cho kiểu số nguyên (int), không hiển thị dược kiểu số thực (float). Sử dụng Let
Đây là cách tính tương tự với Expr nhưng chỉ khác cách ghi câu lệnh. Với Expr
các biến và toán tử sẽ cách nhau bởi khoảng trắng còn Let thì viết liền nhau.
Sử dụng $((expression)) hoặc $[expression] Sử dụng bc
Là công cụ tính toán mạnh mẽ nhất trong Shell. Dùng trong rất nhiều trường
hợp, không chỉ dùng để tính toán cơ bản. Đây là công cụ của bên thứ 3.
Các trường hợp ngoài tính toán có thể sử dụng “bc”:
Đổi số nhị phân – thập phân – thập lục phân.
So sánh các số với nhau, tính toán các số thập phân.
Bên cạnh đó còn rất nhiều tính năng khác.
Câu hỏi trắc nghiệm
Câu 1: Thế nào là Shell?
A. Shell cung cấp giao diện cho người dùng sử dụng các dịch vụ hệ điều hành.
B. Shell nhận các lệnh có thể đọc được từ người dùng và chuyển đổi chúng
thành thứ Kernel có thể hiểu được.
C. Shell là một trình thông dịch ngôn ngữ lệnh.
D. Tất cả các đáp án trên.
Câu 2: Đáp án nào đúng về các loại Shell? A. BASH, CSH, KSH. B. NFSSH, MCSH, SSH. C. A và B đều đúng. D. A và C đều sai.
Câu 3: Trong phần “Tạo và thực thi Shell Script”, có thể thực hiện bằng bao nhiêu cách? A. 2 cách. B. 1 cách. C. 3 cách. D. 4 cách.
Câu 4: Hãy chọn đáp án đúng nhất? A. cp: để xoá file.
B. mkdir: tạo thư mục nếu thư mục đó chưa tồn tại.
C. head < tên file>: hiển thị các dòng cuối.
D. cat < tên file>: hiển thị 1 file.
Câu 5: Đáp án nào đúng về ưu diểm của Shell Script?
A. Viết và thực thi Shell Script sẽ nhanh hơn.
B. Lệnh và cứu pháp hoàn toàn giống với lệnh được nhập trực tiếp trong dòng lệnh. C. A và B đều đúng. D. A và B đều sai.
Câu 6: Đối với biến do người dùng định nghĩa, ta cần phải lưu ý những
điều nào khi đặt tên?
A. Không dùng các ký tự ? * để đặt tên biến.
B. Tên biến không phân biệt chữ hoa và chữ thường.
C. Tên biến luôn luôn bắt đầu bằng dấu gạch dưới.
D. Không thể gán giá trị NULL cho biến.
Tài liệu tham khảo phần lý thuyết
[1] ThS. Trần Văn Hùng, giáo trình Phát Triển Phần Mềm Nguồn Mở, 2020.
[2] FPT Cloud, https://fptcloud.com/shell-la-gi/
[3] lethang, https://webbachthang.com/shell-la-gi/
[4] Mắt Bão, https://wiki.matbao.net/ubuntu-la-gi-tai-sao-lap-trinh-vien-nen-su- dung-ubuntu/
Tài liệu tham khảo phần thực hành
https://viblo.asia/p/bat-dau-voi-lap-trinh-shell-vyDZOQwk5wj?
fbclid=IwAR3BfdRl5IPVbYYluUaZFM37TOG3AE1m9z6kiZRrBQ9bhEWYu x27-5GY6qo
https://viblo.asia/p/tim-hieu-lap-trinh-shell-linux-p1-wjAM7ydbvmWe?
fbclid=IwAR0ItRtuIJq26S33zmJw0k3caVN9iP7ZcK6vnINiUWNGQlojuEI5yc 3H9Z4