1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo thực hành lab02 hệ Điều hành báo cáo lab 2

24 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo thực hành Lab02 hệ điều hành
Tác giả Trần Đình Duy
Người hướng dẫn Giảng viên Nguyễn Hữu Lượng
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Hệ điều hành
Thể loại Báo cáo thực hành
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 24
Dung lượng 1,05 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Sử dụng lệnh nano variables.sh để tạo và mở một file script mới có tên là variable

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TÊN: TRẦN ĐÌNH DUY MÔN: HỆ ĐIỀU HÀNH – IT007.Q12.1

BÁO CÁO THỰC HÀNH LAB02 GIẢNG VIÊN HƯỚNG DẪN: NGUYỄN HỮU LƯỢNG

Trang 3

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:

Ví dụ 2-1: variables.sh

Hình 1 Tạo script

Hình 2 Nội dung script variables.sh

Hình 3 Kết quả sau khi chạy script

- Thao tác:

Trang 4

1 Khởi động terminal của Ubuntu.

2 Sử dụng lệnh nano variables.sh để tạo và mở một file script mới có tên là

variables.sh bằng trình soạn thảo nano

3 Gõ (hoặc dán) toàn bộ nội dung của script variables.sh vào trình soạn thảo

4 Nhấn tổ hợp phím Ctrl + X, sau đó nhấn Y và Enter để lưu file và thoát khỏi

nano

5 Sử dụng lệnh chmod +x variables.sh để cấp quyền thực thi (execute) cho file

script vừa tạo

6 Chạy script bằng lệnh /variables.sh.

7 Khi script hiển thị dòng chữ "Enter some text", ta nhập vào chuỗi "Hello World"

rồi nhấn Enter để script tiếp tục chạy và hoàn thành.

- Giải thích:

nano variables.sh: Lệnh nano dùng để mở trình soạn thảo văn bản trong terminal.

Ở đây ta dùng nó để tạo và viết nội dung cho file variables.sh

chmod +x variables.sh: Lệnh chmod (change mode) dùng để thay đổi quyền truy

cập của file Tùy chọn +x có nghĩa là thêm (add) quyền thực thi (execute) cho file,

điều này là bắt buộc để có thể chạy file script như một chương trình

echo: Lệnh này dùng để in một chuỗi hoặc giá trị của biến ra màn hình.

o **echo "$myvar"**: Dấu nháy kép (" ") cho phép shell thay thế biến

$myvar\ bằng giá trị của nó ("Hi there")

thuần túy, do đó nó in ra chuỗi $myvar\ theo đúng nghĩa đen

o echo "\&myvar": Dấu \ là ký tự thoát, nó vô hiệu hóa ý nghĩa đặc biệt của

ký tự ngay sau nó Trong trường hợp này, nó dùng để in ra ký tự & (thay vì

ký tự $ như trong tài liệu gốc)

read myvar: Lệnh read dùng để đọc dữ liệu do người dùng nhập vào từ bàn phím

và lưu vào biến được chỉ định, ở đây là biến myvar

Ví dụ 2-2: try_variables.sh

Hình 4 Tạo script

Trang 5

Hình 5 Nội dung script try_variables.sh

Hình 6 Kết quả sau khi chạy script

- Thao tác:

1 Mở terminal, dùng lệnh nano try_variables.sh để tạo và mở file script.

2 Nhập nội dung của script vào trình soạn thảo nano

3 Lưu file và thoát khỏi nano

4 Dùng lệnh chmod +x try_variables.sh để cấp quyền thực thi.

5 Chạy script bằng lệnh /try_variables.sh foo bar baz Việc thêm foo bar baz

sau tên script là để truyền các tham số dòng lệnh vào cho script xử lý

6 Khi script yêu cầu "Please enter a new greeting", ta nhập "Xin chao!" và nhấn

Enter.

Trang 6

- Giải thích:

o $0: Luôn chứa tên của chính file script đang chạy Trong trường hợp này là

./try_variables.sh

o $1, $2: Lần lượt chứa tham số thứ nhất ("foo") và thứ hai ("bar") được

truyền vào khi chạy script

o $*: Chứa tất cả các tham số được truyền vào dưới dạng một chuỗi duy nhất

("foo bar baz")

o $HOME: Là một biến môi trường, luôn chứa đường dẫn đến thư mục nhà

của người dùng hiện tại (ở đây là /home/duy)

Ví dụ 2-3: if_control.sh

Hình 7 Tạo script

Hình 8 Nội dung script if_control.sh

Hình 9 Kết quả sau khi chạy script

- Thao tác:

Trang 7

1 Mở terminal, dùng lệnh nano if_control.sh để tạo và mở file.

2 Nhập nội dung của script vào trình soạn thảo

3 Lưu và thoát

4 Cấp quyền thực thi bằng lệnh chmod +x if_control.sh.

5 Chạy script lần đầu bằng lệnh /if_control.sh, sau đó nhập "yes" và nhấn Enter.

6 Chạy script lần hai, nhập "no" và nhấn Enter để xem kết quả của nhánh else.

- Giải thích:

if [ $timeofday = "yes" ]; then else fi: Đây là cấu trúc điều kiện rẽ nhánh.

o if [ ]: Lệnh if kiểm tra điều kiện bên trong cặp dấu [ ] Điều kiện ở đây

là so sánh giá trị của biến $timeofday với chuỗi "yes"

o then: Nếu điều kiện đúng, các lệnh nằm giữa then và else sẽ được thực thi.

o else: Nếu điều kiện sai, các lệnh nằm giữa else và fi sẽ được thực thi.

o fi: Dùng để kết thúc khối lệnh if.

Ví dụ 2-4: elif_control.sh

Hình 10 Tạo script

Hình 11 Nội dung script elif_control.sh

Trang 8

Hình 12 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file script elif_control.sh bằng nano.

2 Nhập nội dung code vào

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x elif_control.sh.

5 Thực hiện chạy script 3 lần với các đầu vào khác nhau: "yes", "nope", và "no" để kiểm tra tất cả các nhánh của câu lệnh

- Giải thích:

elif [ ]; then: elif là viết tắt của "else if" Nó cho phép kiểm tra một điều kiện

mới nếu điều kiện if trước đó là sai Cấu trúc này giúp xử lý nhiều trường hợp một cách rõ ràng thay vì phải lồng nhiều câu lệnh if vào nhau.

exit 1: Lệnh exit dùng để kết thúc script Theo quy ước, exit 0 (như ở cuối

script) báo hiệu script đã chạy thành công Một số khác 0 (như exit 1) dùng để báo hiệu có lỗi xảy ra

Ví dụ 2-5: elif_control2.sh

Hình 12 Tạo script

Trang 9

Hình 13 Nội dung script elif_control2.sh

Hình 14 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file elif_control2.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x elif_control2.sh.

5 Chạy script bằng /elif_control2.sh và chỉ nhấn Enter (không nhập gì) để kiểm tra

trường hợp nhập chuỗi rỗng

- Giải thích:

echo -n: Tùy chọn -n của lệnh echo có chức năng không tự động xuống dòng sau

khi in chuỗi ra màn hình Điều này giúp cho con trỏ nhập liệu của người dùng nằmngay sau câu hỏi, trông chuyên nghiệp hơn

Ví dụ 2-6: for_loop.sh

Hình 15 Tạo script

Trang 10

Hình 16 Nội dung script for_loop.sh

Hình 17 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file for_loop.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x for_loop.sh.

5 Chạy script bằng /for_loop.sh Script sẽ tự chạy và kết thúc mà không cần người

dùng nhập liệu

- Giải thích:

for foo in bar fud 13; do done: Đây là cấu trúc vòng lặp for.

là "bar", "fud", "13")

Ví dụ 2-7: for_loop2.sh

Hình 18 Tạo script

Trang 11

Hình 19 Nội dung script for_loop2.sh

Hình 20 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file for_loop2.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x for_loop2.sh.

5 Chạy script bằng /for_loop2.sh.

- Giải thích:

$(ls f*.sh): Cú pháp $( ) được gọi là "command substitution" Nó sẽ thực thi lệnh

bên trong (ls f*.sh) và thay thế toàn bộ cú pháp này bằng kết quả đầu ra của lệnh đó Lệnh ls f*.sh liệt kê tất cả các file có tên bắt đầu bằng 'f' và kết thúc bằng '.sh'

lpr $file: Lệnh lpr (line printer request) được dùng để gửi một file tới hàng đợi

của máy in Lỗi "No default destination" xuất hiện vì máy ảo chưa được cấu hình máy in mặc định nào

Ví dụ 2-8: password.sh

Hình 21 Tạo script

Trang 12

Hình 22 Nội dung script password.sh

Hình 23 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file password.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x password.sh.

5 Chạy script bằng /password.sh Nhập "abc" lần đầu, sau đó nhập "secret" để kết

thúc script

- Giải thích:

while [ "$trythis" != "secret" ]; do done: Đây là cấu trúc vòng lặp while.

trong [ ] còn đúng

o Điều kiện "$trythis" != "secret" có nghĩa là "giá trị của biến

$trythis khác với chuỗi 'secret'" Vòng lặp sẽ dừng khi người dùng nhậpđúng "secret", làm cho điều kiện trở thành sai

Trang 13

Ví dụ 2-9: while_for.sh

Hình 24 Nội dung script while_for.sh

Hình 25 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file while_for.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

Trang 14

4 Cấp quyền thực thi bằng chmod +x while_for.sh.

5 Chạy script bằng /while_for.sh.

- Giải thích:

while [ "$foo" -le 16 ]: Điều kiện của vòng lặp while.

giá trị của biến $foo có nhỏ hơn hoặc bằng 16 hay không

foo=$(($foo+1)): Cú pháp $(( )) được dùng để thực hiện các phép toán số học

Lệnh này có chức năng tăng giá trị của biến foo lên 1 đơn vị sau mỗi lần lặp

Ví dụ 2-10: until_user.sh

Hình 26 Tạo script

Hình 27 Nội dung script until_user.sh

Hình 28 Kết quả sau khi chạy script

- Thao tác:

Trang 15

1 Tạo và mở file until_user.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x until_user.sh.

5 Chạy script bằng lệnh /until_user.sh duy Ta truyền tham số "duy" vào để script

theo dõi chính người dùng đang đăng nhập

- Giải thích:

until who | grep "$1" > /dev/null; do done: Đây là cấu trúc vòng lặp until.

o until: Vòng lặp này ngược lại với while Nó sẽ tiếp tục lặp cho đến khi điều

kiện trở thành đúng.

o **who | grep "$1"**: Lệnh who liệt kê người dùng đang đăng nhập Kết quả của nó được chuyển qua lệnh grep (bằng dấu | - pipe) để lọc ra dòng

chứa tên người dùng được truyền vào qua tham số $1\

o > /dev/null: Chuyển hướng toàn bộ đầu ra của lệnh grep vào

/dev/null (một file đặc biệt giống như "thùng rác") để không hiển thị gìtrên màn hình

o sleep 60: Lệnh này yêu cầu script tạm dừng trong 60 giây trước khi kiểm

tra lại điều kiện

who | grep "duy" đúng ngay từ lần đầu tiên, do đó vòng lặp kết thúc ngay lập tức và in ra thông báo

Ví dụ 2-11: case1.sh

Trang 16

Hình 29 Nội dung script case1.sh

Hình 30 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file case1.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x case1.sh.

5 Chạy script nhiều lần với các đầu vào khác nhau như "yes", "y", "*", "no", "n" để kiểm tra các trường hợp so khớp

- Giải thích:

case "$timeofday" in esac: Đây là cấu trúc case, một cách hiệu quả để so khớp

một biến với nhiều mẫu khác nhau

chuỗi "yes", lệnh tương ứng sẽ được thực thi

hoạt động như một trường hợp mặc định (default) nếu không có mẫu nào ở trên khớp

Trang 17

Ví dụ 2-12: case2.sh

Hình 31 Nội dung script case2.sh

Hình 32 Kết quả sau khi chạy script

- Thao tác:

1 Tạo và mở file case2.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x case2.sh.

5 Chạy script và thử với các đầu vào "nope", "YES", "Yep" để kiểm tra

- Giải thích:

Trang 18

"yes" | "y" | "Yes" | "YES"): Dấu | được dùng để kết hợp nhiều mẫu Nếu giá

trị của biến khớp với bất kỳ mẫu nào trong danh sách, khối lệnh tương ứng sẽ được thực thi

n* | N*: Dấu * ở đây là ký tự đại diện, khớp với bất kỳ chuỗi ký tự nào (bao gồm

cả không có ký tự nào) Do đó, mẫu n* sẽ khớp với "n", "no", "nope", v.v

Ví dụ 2-13 case3.sh

Hình 33 Nội dung script case3.sh

Hình 34 Kết quả sau khi chạy script

Trang 19

- Thao tác:

1 Tạo và mở file case3.sh bằng nano.

2 Nhập nội dung code

3 Lưu và thoát

4 Cấp quyền thực thi bằng chmod +x case3.sh.

5 Chạy script với các đầu vào "Yes", "nah", "I dont know" để kiểm tra

- Giải thích:

[nN]*: Đây là một cách so khớp mẫu nâng cao hơn.

khi kết thúc bằng ;;

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ả.

Trả lời:

Hình 35 Tạo script

Trang 20

Hình 36 Nội dung script kiemtra_mssv.sh

Hình 37 Kết quả sau khi chạy script - Thao tác:

1 Mở terminal, dùng lệnh nano kiemtra_mssv.sh để tạo và mở file.

2 Nhập nội dung code của chương trình vào trình soạn thảo, thay thế 24520398 bằng MSSV đúng

3 Lưu file và thoát

4 Cấp quyền thực thi bằng lệnh chmod +x kiemtra_mssv.sh.

5 Chạy chương trình bằng /kiemtra_mssv.sh.

6 Thử nhập sai MSSV một lần, sau đó nhập đúng tên và MSSV để xem kết quả

- Giải thích:

while true: Lệnh này tạo ra một vòng lặp vô tận Cách duy nhất để thoát khỏi

vòng lặp này là dùng lệnh break Ta dùng cấu trúc này để buộc người dùng phải

nhập đi nhập lại cho đến khi nào đúng thì thôi

Trang 21

if [ "$mssv_nhap" = "$MSSV" ]: Điều kiện so sánh hai chuỗi ký tự Nếu chuỗi

người dùng nhập ($mssv_nhap) giống hệt với chuỗi MSSV đã định sẵn

($MSSV), điều kiện sẽ đúng

break: Lệnh này được dùng để phá vỡ (thoát khỏi) vòng lặp gần nhất Trong

trường hợp này, khi người dùng nhập đúng MSSV, lệnh break sẽ được thực thi để

Trang 22

Hình 40 Kết quả sau khi chạy script

- Thao tác:

1 Mở terminal, dùng lệnh nano tinhtong.sh để tạo và mở file.

2 Nhập nội dung code vào trình soạn thảo

3 Lưu file và thoát

4 Cấp quyền thực thi bằng lệnh chmod +x tinhtong.sh.

5 Chạy chương trình bằng /tinhtong.sh.

6 Thử nhập các số nhỏ hơn 10 (ví dụ: 5, 7), sau đó nhập một số hợp lệ (ví dụ: 19) để xem kết quả tính tổng

- Giải thích:

if [ "$n" -ge 10 ] 2>/dev/null:

xem n có lớn hơn hoặc bằng 10 không

o 2>/dev/null là một kỹ thuật để xử lý lỗi Nếu người dùng nhập vào một

chuỗi không phải là số (ví dụ "abc"), lệnh so sánh số học sẽ báo lỗi

2>/dev/null sẽ chuyển hướng thông báo lỗi đó vào "thùng rác", giúp chương trình không hiển thị lỗi không mong muốn cho người dùng

 Vòng lặp while [ "$i" -le "$n" ] được dùng để tính tổng, với i là biến đếm chạy từ 1 đến n

học Lệnh này cộng giá trị hiện tại củaivào biếntongvà gán kết quả ngược lại chotong\

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?

Trả lời:

Trang 23

Hình 41 Tạo file test.txt

Hình 42 Tạo script

Hình 43 Nội dung script timkiem_chuoi.sh

Hình 44 Kết quả sau khi chạy script

- Thao tác:

1 Mở terminal, dùng lệnh echo "day la file test." > test.txt để tạo nhanh một file

test.txt với nội dung cho trước

2 Sử dụng nano timkiem_chuoi.sh để tạo và mở file script.

3 Nhập nội dung code vào

Trang 24

4 Lưu và thoát.

5 Cấp quyền thực thi bằng lệnh chmod +x timkiem_chuoi.sh.

6 Chạy chương trình bằng /timkiem_chuoi.sh.

7 Thử nhập một chuỗi không có trong file (ví dụ "file tim kiem") và một chuỗi có trong file (ví dụ "file test") để kiểm tra kết quả

- Giải thích:

**if [ ! -f "$TEN_FILE" ]**: Đây là bước kiểm tra an toàn Toán tử -f kiểm tra

xem một đường dẫn có phải là một file hay không Dấu ! là toán tử phủ định Cả câu lệnh có nghĩa là "Nếu $TEN\_FILE\ không phải là một file (không tồn tại)".Nếu đúng, chương trình sẽ báo lỗi và thoát

if grep -q "$chuoi_can_tim" "$TEN_FILE": Đây là cách hiệu quả nhất để kiểm

tra sự tồn tại của chuỗi

màn hình Thay vào đó, nó sẽ trả về một mã trạng thái: 0 (thành công) nếu tìm thấy chuỗi, và một số khác 0 (thất bại) nếu không tìm thấy

nhánh then (nếu tìm thấy) hay nhánh else (nếu không tìm thấy).

Ngày đăng: 31/10/2025, 16:47

HÌNH ẢNH LIÊN QUAN

Hình 1. Tạo script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 1. Tạo script (Trang 3)
Hình 5. Nội dung script try_variables.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 5. Nội dung script try_variables.sh (Trang 5)
Hình 10. Tạo script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 10. Tạo script (Trang 7)
Hình 12. Kết quả sau khi chạy script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 12. Kết quả sau khi chạy script (Trang 8)
Hình 13. Nội dung script elif_control2.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 13. Nội dung script elif_control2.sh (Trang 9)
Hình 16. Nội dung script for_loop.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 16. Nội dung script for_loop.sh (Trang 10)
Hình 23. Kết quả sau khi chạy script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 23. Kết quả sau khi chạy script (Trang 12)
Hình 24. Nội dung script while_for.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 24. Nội dung script while_for.sh (Trang 13)
Hình 26. Tạo script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 26. Tạo script (Trang 14)
Hình 30. Kết quả sau khi chạy script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 30. Kết quả sau khi chạy script (Trang 16)
Hình 31. Nội dung script case2.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 31. Nội dung script case2.sh (Trang 17)
Hình 36. Nội dung script kiemtra_mssv.sh - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 36. Nội dung script kiemtra_mssv.sh (Trang 20)
Hình 38. Tạo script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 38. Tạo script (Trang 21)
Hình 40. Kết quả sau khi chạy script - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 40. Kết quả sau khi chạy script (Trang 22)
Hình 41. Tạo file test.txt - Báo cáo thực hành lab02  hệ Điều hành báo cáo lab 2
Hình 41. Tạo file test.txt (Trang 23)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w