You are on page 1of 20

Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Họ và tên: Lê Nguyễn Thảo Vân


Mã số sinh viên: 22521648
Lớp: IT007.029

HỆ ĐIỀU HÀNH
BÁO CÁO LAB 2

CHECKLIST
2.5. BÀI TẬP THỰC HÀNH
BT 1 BT 2 BT 3 BT 4

Trình bày cách làm x x x

Chụp hình minh chứng x x x x

Giải thích kết quả x x x

2.6. BÀI TẬP ÔN TẬP

BT BT BT BT BT
1.a 1.b 1.c 2.a 2.b

Trình bày cách làm x x x x x

Chụp hình minh chứng x x x x x

Giải thích kết quả x x x x x

Tự chấm điểm: 9

*Lưu ý: Xuất báo cáo theo định dạng PDF, đặt tên theo cú pháp:
<MSSV>_LAB2.pdf

1
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

2.5. BÀI TẬP THỰC HÀNH


1. Chạy tất cả các đoạn lệnh ví dụ ở phần 2.4. Chụp hình kết quả chạy các file
script và lưu vào báo cáo.
Trả lời:
a) Thực thi scripts: Hiển thị nội dung của các tệp nguồn chứa chuỗi main()
Cách 1:

2
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Cách 2:

b) Thiết lập quyền:

c) Sử dụng biến:

3
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

d) Ký tự đặc biệt

e) Kiểm soát tiến trình: Ngoặc đơn:

f) Kiểm soát tiến trình: Dấu nháy:

4
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

g) Kiểm soát tiến trình: Pipeline:

h) Backslash:

5
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

i) Biến tham số:

j) Lệnh if:

6
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

k) Lệnh elif:

l) Vấn đề “lỗi phát sinh” khác:

7
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

m) Lệnh for:

n) Lệnh while:

8
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

o) Lệnh until:

9
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

p) Lệnh case:

10
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

2. Viết chương trình cho phép nhập vào tên và MSSV. Kiểm tra nếu MSSV đó
không trùng với mình thì bắt nhập lại. In ra màn hình kết quả.
Minh chứng:

Trình bày cách làm:


_ Đầu tiên, script khởi tạo biến mssv với giá trị là "22521648", đây được coi là MSSV hợp lệ cho
mục đích của script này.
_ Script sau đó in ra một thông báo yêu cầu người dùng nhập MSSV và họ tên, sử dụng lệnh
echo để hiển thị thông báo và lệnh read để nhận đầu vào từ người dùng.
_ Tiếp theo, script sử dụng vòng lặp while để kiểm tra xem MSSV người dùng nhập có khớp với
mssv đã được khai báo trước đó hay không. Nếu không khớp, script sẽ in ra thông báo "Khong
hop le! Vui long nhap lai mssv" và yêu cầu người dùng nhập lại.
_ Khi người dùng cuối cùng nhập đúng MSSV, script thoát khỏi vòng lặp và in ra MSSV và họ
tên của người dùng.

11
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Giải thích kết quả:


_ Script này kiểm tra và chỉ cho phép người dùng tiếp tục khi nhập đúng MSSV đã được xác
định trước là "22521648"
_ Khi MSSV nhập vào cuối cùng đúng, script sẽ in ra MSSV và họ tên của người dùng rồi kết
thúc.

3. Viết chương trình cho phép nhập vào một số n. Kiểm tra nếu n < 10 thì yêu cầu
nhập lại. Tính tổng các số từ 1 đến n. In kết quả ra màn hình.
Minh chứng:

Trình bày cách làm:


_ Sử dụng vòng lặp while để yêu cầu người dùng nhập một số n. Vòng lặp sẽ tiếp tục nếu n < 10,
đảm bảo rằng n phải lớn hơn hoặc bằng 10 trước khi tiếp tục.

12
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

_ Sau khi có một số n hợp lệ, sử dụng một vòng lặp for hoặc công thức toán học để tính tổng các
số từ 1 đến n.

Giải thích kết quả:


In kết quả: Script in ra tổng các số từ 1 đến 11 mà người dùng nhập vào
4. Viết trình cho phép nhập vào một chuỗi. Kiểm tra chuỗi đó có tồn tại trong một
file text (ví dụ test.txt) cùng thư mục hay không?
Minh chứng:

Trình bày cách làm:


_ Script bắt đầu bằng cách in ra thông báo "Nhập chuỗi:" và sử dụng lệnh read để đọc chuỗi nhập
vào từ người dùng, lưu vào biến string
_ Sử dụng vòng lặp while và điều kiện -z “$string” để kiểm tra xem chuỗi nhập có rỗng hay
không.
_ Sử dụng vòng lặp for để duyệt qua tất cả các file.txt trong thư mục hiện tại, sử dụng lệnh ls
$(pwd)/*.txt) để liệt kê các file và $(pwd) để chỉ đường dẫn hiện tại.
13
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

_ Dùng lệnh grep -q "$string" "$file" để tìm chuỗi trong mỗi file. Tùy chọn -q khiến grep chạy
mà không in ra bất kỳ đầu ra nào; nó chỉ trả về giá trị 0 (tìm thấy) hoặc 1 (không tìm thấy).
_ Nếu grep tìm thấy chuỗi trong file, biến tmp được gán giá trị 1, và script in ra thông báo "File
có chứa [chuỗi] là: [đường dẫn file]". Nếu không tìm thấy, script sẽ in ra thông báo "Không có
file .txt nào chứa [chuỗi]".

Giải thích kết quả:


Khi nhập chuỗi không đúng vào, chương trình xuất ra dòng “khong co file.txt nao…” vì chuỗi
này không thỏa điều kiện, tmp trả về 0
Khi nhập đúng chuỗi “hoc chan”, tmp trả về 1, chương trình tìm file chứa nó và xuất ra dòng
“File co chua hoc chan …..”

14
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

2.6. BÀI TẬP ÔN TẬP


1. Tìm hiểu trên Google về việc cài đặt lệnh git, sử dụng git để tải thư mục ảnh
tại đây: https://github.com/locth/OS_LAB2_IMG.git
Viết một file kịch bản để làm những công việc sau:
a. Kiểm tra trong thư mục người dùng, nếu thấy thư mục PNG và JPG chưa tồn
tại thì tạo 02 thư mục này.
b. Di chuyển tất cả file PNG trong thư mục ảnh ở trên vào thư mục PNG. Xuất
ra màn hình số lượng ảnh PNG.
c. Di chuyển tất cả file JPG trong thư mục ảnh ở trên vào thư mục JPG. Xuất ra
màn hình số lượng ảnh JPG.
Trả lời:
Git clone để tải thư mục ảnh về

a)
Minh chứng:

15
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Trình bày cách làm và giải thích:


_ if [ ! -d "PNG" ]; then: Câu lệnh này kiểm tra xem thư mục có tên "PNG" có tồn tại trong thư
mục hiện tại hay không. Trong đó:
+ ! là toán tử NOT, dùng để đảo ngược điều kiện.
+ -d “PNG” kiểm tra xem "PNG" có phải là một thư mục không.
+ Nếu "PNG" không tồn tại (điều kiện đúng), thực hiện các lệnh trong khối then.
_ mkdir PNG: Câu lệnh này tạo một thư mục mới với tên "PNG".
_ Từ dòng 5 tương tự như trên, thay vì tạo thư mục PNG thì nó tạo thư mục JPG
_ Giải thích kết quả: Vì thư mục PNG và JPG vốn dĩ chưa tồn tại nên nó sẽ thực hiện tạo 2 thư
mục này.

b)
Minh chứng:

16
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Trình bày và giải thích:


_ Khởi tạo biến đếm png_count = 0
_ Sử dụng vòng lặp for để duyệt các file có đuôi .png trong thư mục chứa nó bằng lệnh “for file
in /home/lenguyenthaovan-22521648/OS_LAB2_IMG/*.png”
_ Kiểm tra điều kiện “ if [ -e "$file" ] “, nếu không tồn tại file .png nào (-e) thì biến $file sẽ
không có giá trị gì.
_ Nếu file tồn tại, dùng lệnh mv để di chuyển file vào thư mục “/home/lenguyenthaovan-
22521648/PNG”
_ Tăng giá trị của png_count lên 1 sau mỗi lần di chuyển thành công một file.
_ Sau khi vòng lặp kết thúc, in ra tổng số file PNG đã được di chuyển : echo "Số lượng ảnh PNG:
$png_count"
_ Giải thích kết quả: Tổng cộng có 18 file.png được tìm thấy và đã được di chuyển vào trong thư
mục PNG

c)
Minh chứng:

Trình bày cách làm và kết quả:


_ Tương tự như cách làm đối với câu b ở trên, chỉ cần thay những chỗ cần thiết thành jpg

17
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

_ Kết quả: Tổng cộng 60 file jpg được tìm thấy

2. Tạo ra một file text tên monhoc.txt chứa danh sách mã môn học của sinh viên
trong học kỳ này, mỗi mã nằm trên một dòng. Viết một file kịch bản thực hiện
các việc sau:
a. Yêu cầu người dùng nhập vào họ và tên (không dấu), tạo ra thư mục có tên
tương ứng với thông tin người dùng vừa nhập
b. Đọc file text monhoc.txt ở trên, ở trong thư mục vừa tạo ở câu a, với mỗi
môn học, tạo ra một thư mục có tên tương ứng với mã môn đó.

Trả lời:
Danh sách các môn học:

a)
Minh chứng:

18
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

Trình bày cách làm và giải thích:


_ echo để in ra dòng thông báo nhập họ tên cho người dùng
_ read name: đọc thông tin nhập vào và lưu trong biến name
_ mkdir “$name”: Tạo thư mục mới với tên là giá trị lưu trong biến name
Giải thích kết quả:
_ Nhập vào tên là Thao Van và The Tung, sau đó chương trình tạo ra 2 file ‘Thao Van’
và ‘The Tung’

b)
Minh chứng:

Trình bày cách làm và giải thích:


_ “while IFS= read -r monhoc” :
+ IFS đặt thành giá trị rỗng, để đảm bảo rằng dòng đầu vào được đọc đầy đủ mà không bị cắt xén
hoặc chia nhỏ dựa trên khoảng trắng.
+ read -r monhoc đọc từng dòng từ đầu vào và lưu vào biến monhoc mà không cố gắng xử lý các
backslash làm ký tự thoát (escape character) (-r ngăn read xử lý backslashes).
_ “do mkdir "$name/$monhoc" done < monhoc.txt”:
+ Vòng lặp while đọc từng dòng từ file monhoc.txt cho đến khi đến cuối file

19
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Trần Hoàng Lộc.

+ Đối với mỗi dòng đọc được từ file, một thư mục mới sẽ được tạo với tên tương ứng với nội
dung của dòng đó.
_ Giải thích kết quả: Nhập vào tên là Study, chương trình tạo thư mục tên Study sau đó tạo lần
lượt các thư mục đặt tên theo các môn học trong file monhoc.txt. Kết quả như hình trên.

20

You might also like