Professional Documents
Culture Documents
Lab 2 Hệ điều hành
Lab 2 Hệ điều hành
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
Chụp hình minh chứng
Giải thích kết quả
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: Thân Thế Tùng
2
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Phần 2.4.2.1
Phần 2.4.2.2
3
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Ví dụ 2-1: variables.sh
Phần 2.4.2.4
4
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Ví dụ 2-2: try_variables.sh
Ví dụ 2-3: if_control.sh
5
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Ví dụ 2-4: elif_control.sh
Ví dụ 2-5: elif_control2.sh
Ví dụ 2-6: for_loop.sh
Ví dụ 2-7: for_loop2.sh
6
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Phần 2.4.4.5
Ví dụ 2-8: password.sh
Ví dụ 2-9: while_for.sh
7
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Ví dụ 2-10: until_user.sh
Ví dụ 2-11: case1.sh
Ví dụ 2-12: case2.sh
8
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Ví dụ 2-13 case3.sh
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ả.
- Đầu tiên, tạo file “name_id.sh” bằng cách sử dụng lệnh touch name_id.sh
Sử dụng trình soạn thảo nano hoặc VS Code để nhập đoạn lệnh sau vào file
echo "Enter name: "
read name
while true; do
echo "Enter ID: "
read id
if [ $id = "22520473" ] #hàm if kiểm tra id
then
break
else
echo "Invalid ID. Please re-enter"
fi
done
exit 0
Tiến hành thêm quyền thực thi cho file bằng lệnh chmod +x name_id.sh và chạy chương
trình trên với lệnh ./name_id.sh, ta được kết quả sau
9
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Hoặc có thể sử dụng hàm main và hàm kiểm tra MSSV để check lại MSSV như sau
check_id() {
# You can implement your ID validation logic here
# For this example, let's assume that the ID must be numeric
if [ "$1" = "22520473" ]; then #if kiểm tra id với $1 là
#giá trị đã nhập vào
return 0
else
return 1
fi
}
# Main function
main() {
echo "Enter your name:"
read name
while true; do
echo "Enter your ID:"
read id
sum=0
for ((i=1; i<=n; i++)); do #vòng lặp for để tính tổng
sum=$((sum+i))
done
exit
11
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
while true; do
echo "Enter a number:"
read n
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?
Tạo file check_string.sh với nội dung sau
#!/bin/bash
# Kiểm tra xem chuỗi có tồn tại trong tệp văn bản không
if grep -q "$input_string" test.txt; then #tìm kiếm “something”
trong file test.txt
echo "Chuỗi '$input_string' tồn tại trong tệp văn bản."
else
echo "Chuỗi '$input_string' không tồn tại trong tệp văn bản."
fi
12
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
và tạo 1 file test.txt với giá trị bất kì trong file. Ở đây là “something”
Kết quả sau khi thực thi chương trình
13
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
14
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
# Kiểm tra và tạo thư mục PNG và JPG nếu chưa tồn tại
if [ ! -d ~/PNG ]; then
mkdir ~/PNG
echo "Thư mục PNG đã được tạo."
fi
if [ ! -d ~/JPG ]; then
mkdir ~/JPG
echo "Thư mục JPG đã được tạo."
fi
# Di chuyển tất cả các file PNG vào thư mục PNG và đếm số lượng
png_count=$(find ~/OS_LAB2_IMG -type f -name "*.png" -exec mv {}
~/PNG \; -print | wc -l)
echo "Đã di chuyển $png_count file PNG vào thư mục PNG."
# Di chuyển tất cả các file JPG vào thư mục JPG và đếm số lượng
jpg_count=$(find ~/OS_LAB2_IMG -type f -name "*.jpg" -exec mv {}
~/JPG \; -print | wc -l)
echo "Đã di chuyển $jpg_count file JPG vào thư mục JPG."
+ Thêm quyền thực thi, chạy script.sh và nhận được kết quả sau
15
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
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 đó.
- Giả sử trong file monhoc.txt có các thông tin sau “CE103 SS010 SS003 IT007 CE121”
với mỗi thông tin thuộc 1 dòng
- Tạo file name_MH.sh với nội dung như sau
#!/bin/bash
# Tạo thư mục mới dựa trên họ và tên của người dùng
thu_muc="$ho_ten"
mkdir "$thu_muc"
echo "Đã tạo thư mục '$thu_muc'"
# Đọc file monhoc.txt và tạo thư mục cho mỗi mã môn học
while IFS= read -r line; do
ma_mon_hoc=$(echo $line | tr -d '\r')
if [ -n "$ma_mon_hoc" ]; then
mkdir "$thu_muc/$ma_mon_hoc"
echo "Đã tạo thư mục '$ma_mon_hoc' trong thư mục
'$thu_muc'"
fi
done < monhoc.txt
16
Báo cáo thực hành môn Hệ điều hành - Giảng viên: Thân Thế Tùng
Và trong thư mục LAB2 xuất hiện thư mục với tên cá nhân, trong thư mục cá nhân sẽ
chứa các folder tên môn học
17