1. Trang chủ
  2. » Tất cả

Uit ce lab hdh lab2

39 21 0

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH TÀI LIỆU HƯỚNG DẪN THỰC HÀNH HỆ ĐIỀU HÀNH Nhóm biên soạn ThS Phan Đình Duy ThS Phạm Văn Phước ThS Nguyễn Việt Quốc KS Nguyễn Hữu Nhân KS Lê Vă[.]

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH TÀI LIỆU: HƯỚNG DẪN THỰC HÀNH HỆ ĐIỀU HÀNH Nhóm biên soạn: - ThS Phan Đình Duy - ThS Phạm Văn Phước - ThS Nguyễn Việt Quốc - KS Nguyễn Hữu Nhân - KS Lê Văn La - KS Trần Văn Quang Tháng năm 2015 MỤC LỤC Chương Lập Trình Trong Mơi Trường Shell Shell Unix/Linux Sử Dụng SHELL Như Ngôn Ngữ Lập Trình 2.1 Điều khiển shell từ dịng lệnh 2.2 Điều khiển shell tập tin kịch (script file) 2.3 Thực thi script Cú Pháp Ngôn Ngữ SHELL 3.1 Sử dụng biến 9 3.1.1 Các kí tự đặc biệt (Metalcharacters Shell) 11 3.1.2 Biến môi trường (environment variable 3.1.3 Biến tham số (parameter variable 3.2 Điều kiện 18 19 21 3.2.1 Lệnh test [ ] 22 3.3 Cấu trúc điều khiển 25 3.3.1 Lệnh if 25 3.3.2 Lệnh elif 27 3.3.3 Vấn đề phát sinh với biế 3.3.4 Lệnh for 29 3.3.5 Lệnh while 31 28 3.3.6 Lệnh until 33 3.3.7 Lệnh case 34 Bài Tập 38 38 Tham Khảo Chương Lập Trình Trong Mơi Trường Shell Shell Unix/Linux Shell chương trình giao tiếp với người dung, chấp nhận dẫn lệnh tiếng Anh chuyển lệnh tới kernel Sử Dụng SHELL Như Ngôn Ngữ Lập Trình Có hai cách để viết chương trình điều khiển shell: gõ chương trình từ dịng lệnh cách đơn giản Tuy nhiên thành thạo gộp lệnh vào tệp để chạy (chúng tương đương với cách DOS gọi tệp *.bat), điều hiệu tận dụng triệt để tính tự động hóa shell 2.1 Điều khiển shell từ dòng lệnh Chúng ta bắt đầu, giá sử đĩa cứng có nhiều file nguồn c, bạn muốn truy tìm hiển thị nội dung tệp nguồn chứa chuỗi main() Thay dùng lệnh grep để tìm file sau quay lại dùng lệnh more để hiển thị file, ta dùng lệnh điều khiển shell tự động sau: $ for file in * if grep -l 'main( ) ' $file then more $fỉle fi done Khi gõ lệnh chưa hoàn chỉnh từ dấu nhắc shell, shell chuyển dấu nhắc thành >, shell chờ nhập đầy đủ lệnh trước thực tiếp Shell tự trạng hiểu lệnh bắt đầu kết thúc Trong ví dụ lệnh for kết thúc done Khi gõ xong done, shell bắt đầu thực thi tất gõ vào for Ở đây, file biến shell, * tập hợp đại diện cho tên tệp tìm thấy thư mục hành Bất tiện việc điều khiển ngơn ngữ shell từ dịng lệnh khó lấy lại khối lệnh trước để sửa đổi thực thi lần Nếu ta nhấn phím Up/Down shell trả lại khối lệnh sau: $ for file in * ; ; if grep -1 'main( )’ $file; then ; more $file; fi; done Đây cách shell Linux thường làm phép thực thi nhiều lệnh lúc dòng lệnh Các lệnh cách dấu (;) Ví dụ: $ mkdir myfolđer; cd myfolder; tạo thư mục myfolder lệnh mkdir sau chuyển vào thư mục lệnh cd Chỉ cần gõ Enter lần để thực thi hai lệnh lúc Tuy nhiên sửa chữa khối lệnh không dễ dàng dễ gây lỗi Chúng thuận tiện cho kết hợp khoảng vài ba lệnh Để dễ bảo trì bạn đưa lệnh vào tập tin yêu cầu shell đọc nội dung tập tin để thực thi lệnh Những tập tin gọi tập tin kịch (shell script) 2.2 Điều khiển shell tập tin kịch (script file) Trước hết bạn dùng lệnh $cat > first.sh hay trình soạn thảo vi hay emacs (hoặc mc) hay gedit để soạn nội dung tập tin first.sh sau: # ! /bin/ sh # first.sh # Script se tìm thư mục hành chuỗi mang nội dung # main( ) , nội dung fìle hiển thị hình tìm thấy for file in * if grep -l 'main( ) ' $file then more $fỉle fi done exit Không thích C, dịng thích (comment) ngơn ngữ shell bắt đầu ký tự # Tuy nhiên Ở có thích đặc biệt #!/bin/sh Đây thực khơng phải thích Cặp ký tự #! thị yêu cấu shell triệu gọi shell sh nằm thư mục /bin Shell sh chịu trách nhiệm thông dịch lệnh nằm tập tin script tạo Có thể định #!/bin/bash làm shell thông dịch thay cho sh, Linux thật sh bash Tuy nhiên nêu, hệ Unix sử dụng shell sh làm chuẩn, thói quen tốt cho lập trình viên sử dụng shell sh Khi tiếp cận với UNIX, ta cảm thấy quen thân thuộc với shell Nên chạy script shell phụ (như gọi sh chẳng hạn), thay đổi mơi trường mà script gây không ảnh hưởng đến môi trường làm việc Chỉ thị #! Cịn dùng để gọi chương trình ta muốn chạy trước script dịch Lệnh exit bảo đảm script sau thực thi trả mã lỗi, cách mà hầu hết chương trình nên làm, mã lỗi trả vế dùng đến trường hợp thực tương tác trực tiếp từ dòng lệnh Tuy nhiên, nhận biết mã trả đoạn script sau thực thi, lại thường có ích bạn triệu gọi script từ script khác Trong đoạn chương trình trên, lệnh exit trả 0, cho biết script thực thi thành cơng khỏi shell gọi Mặc dù lưu tập tin script với tên sh, UNIX Linux không bắt buộc điều Hiếm Linux sử dụng phần đuôi mở rộng tập tin làm dấu hiệu nhận dạng, tên tệp script tùy ý Tuy sh cách nhận tập tin script shell cách nhanh chóng 2.3 Thực thi script Chúng ta vừa tạo tập tin script first.sh, gọi thực thi theo cách Cách đơn giản triệu gọi trình shell với tên tập tin script làm đối số Ví dụ: $ /bin/ sh first.sh Cách gọi bình thường, quen thuộc ta gọi first.sh từ dòng lệnh, tương tự lệnh Linux thông thường Để làm điều này, trước hết cần chuyển thuộc tính thực thi (x) cho tập tin script lệnh chmod sau: $ chmod +x first.sh Sau triệu gọi script theo cách thứ hai tiện lợi hơn: $ first.sh Có thể lệnh không thực thành công ta nhận thơng báo lỗi 'command not found' (khơng tìm thấy lệnh) Điều xảy biến mơi trường PATH bạn thường không chứa đường dẫn hay vị trí thư mục hành Để khắc phục, ta thêm vào biến môi trường PATH định thư mục hành sau: $ PATH=$PATH: Nếu muốn Linux tự động nhớ thư mục hành đăng nhập bạn thêm lệnh PATH=$PATH : vào cuối tệp bash_profile (file triệu gọi lúc hệ thống nhập - tương tự autoexec.bat DOS) Tuy nhiên cách ngắn gọn đơn giản mà ta thường làm định rõ dấu thư mục hiên hành / lệnh Ví dụ: $ / first.sh Lưu ý: Đối với tài khoản root, không nên thay đổi biến môi trường PATH (bằng cách thêm dấu định ) cho phép truy tìm thư mục hành Điều khơng an tồn dễ tạo lỗ hổng bảo mật Ví dụ, quản trị hệ đăng nhập quyền root, triệu gọi chương trình Linux mà họ tưởng thư mục qui định /bin, biến PATH cho phép tìm thư mục hành nhà quản trị thực thi chương trình thay chương trình Linux /bin Vậy nên tạo thói quen đặt dấu / trước tập tin để ám truy xuất thư mục hành Một bạn tin first.sh chạy tốt, di chuyển đến thư mục khác thích hợp thư mục hành Nếu lệnh script dành cho mục đích riêng bạn, bạn tạo thư mục /bin thư mục chủ (home) mà nhà quản trị qui định cho người dùng, sau thêm đường dẫn vào biến môi trường PATH Nếu muốn script gọi người dùng khác, đặt vào thư mục /usr/1ocal/bin Thơng thường, phép script hay chương trình thực thi, cần người quản trị cho phép Nếu bạn nhà quản trị, cần cẩn thận xem xét script người dùng khác (hacker chẳng hạn) đặt vào hệ thống Ngôn ngữ script mạnh, làm chuyện kể hủy diệt hệ thống! Để ngăn script bị sửa đổi người dùng khác, sử dụng lệnh thiết lập quyền (thường phải đăng nhập với tư cách root để làm công việc này): #cp first.sh /usr/1ocal/bin #chown root /usr/local/bin/first.sh #chgrp root /usr/1ocal/bin/first.sh #chmod u=rwx go=rx /usr/1ocal/bin/firsc.sh Đoạn lệnh mang ý nghĩa: chuyển quyến sở hữu tập tin cho root, root toàn quyền đọc sửa nội dung thực thi tập tin, nhóm người dùng khác root phép đọc thực thi Nên nhớ bạn loại bỏ quyền ghi w tập tin, UNIX Linux cho phép bạn xoá tập tin thư mục chứa có quyền ghi w Để an tồn, với tư cách nhà quản trị, nên kiểm tra lại thư mục chứa script bảo đảm có root có quyền w thư mục chứa tệp sh Cú Pháp Ngôn Ngữ SHELL Chúng ta thấy cách viết lệnh gọi thực thi tập tin scirpt Phần dành cho bạn khám phá sức mạnh ngơn ngữ lập trình shell Trái với lập trình trình biên dịch khó kiểm lỗi nâng cấp, lập trình script cho phép bạn dễ dàng sửa đổi lệnh ngôn ngữ văn Nhiều đoạn script nhỏ kết hợp lại thành script lớn mạnh mẽ hữu ích Trong giới UNIX Linux đôi lúc gọi thực thi chương trình, bạn khó mà biết chương trình viết script hay thực thi theo mã chương trình nhị phân, tốc độ thực thi uyển chuyển chúng gần ngang Phần học về: • Biến: kiểu chuỗi, kiểu số, tham số biến mơi trường • Điều kiện: kiểm tra luận lý Boolean shell • Điều khiển chương trình: if, elif, for , while, until, case 3.1 Sử dụng biến Thường bạn không cần phải khai báo biến trước sử dụng Thay vào biến tự động tạo khai báo lần tên biến xuất hiện, chảng hạn phép gán Mặc định, tất biến khởi tạo chứa trị kiểu chuỗi (string) Ngay liệu mà bạn đưa vào biến số xem định dạng chuỗi Shell vài lệnh tiện ích tự động chuyển chuỗi thành số để thực phép tính có u cầu Tương tự thân hệ điều hành ngôn ngữ C, cú pháp shell phân biệt chữ hoa chữ thường, biến mang tên foo, Foo, FOO ba biến khác Bên script shell, bạn lấy nội dung biến cách dùng dấu $ đặt trước tên biến Để hiển thị nội dung biến, bạn dùng lệnh echo Khi gán nội dung cho biến, bạn không cần phải sứ dụng ký tự $ Ví dụ dịng lệnh, bạn gán nội dung hiển thị biến sau: xinchao=Hello echo $xinchao ⇨ Kết in hình: Hello xinchao="I am here" echo $xinchao ⇨ Kết in hình: I am here xinchao=12+l echo $xinchao ⇨ Kết in hình: 12+1 Lưu ý, sau dấu = khơng có khoảng trắng Nếu gán nội dung chuỗi có khoảng trắng cho biến, cần bao bọc chuỗi dấu “ “ Có thể sử dụng lệnh read để đọc nhập liệu người dùng đưa vào giữ lại biến để sử dụng Ví dụ: read yourname # nhập vào: XYZ echo "Hello " $yourname ⇨ Kết in hình: Hello XYZ Lệnh read kết thúc bạn nhấn phím Enter (tương tự scanf C hay readln Pascal) 3.1.1 Các kí tự đặc biệt (Metalcharacters Shell) 3.1.1.1 Chuyển hướng vào/ra Một tiến trình Unix/Linux gắn liền với đầu xử lí dịng (stream) liệu: đầu vào chuẩn (stdin hay 0), thường từ bàn phím qua chức getty(); đầu chuẩn (stdout, hay 1), thường hình, sở liệu ... tên chương trình gọi dịng lệnh Số tham số truyền dịng lệnh Mã tiến trình (process id) shell script thực thi Bởi số process id tiến trình toàn hệ thống vào lúc script thực thi nên thường lệnh script... mà shell quy định Thơng thường, tham số dịng lệnh thường cách khoảng trắng Khoảng trắng ký tự spacebar, tab ký tự xuống dịng Trường hợp muốn tham số chứa khoảng trắng, cần phải bọc chuỗi dấu nháy... kiểm sốt tiến trình & (Ampersand): đặt tiến trình (chương trình) vào chế độ chạy (background process) Bản thân Unix khơng có khái niệm tiến trình chạy hay tiến trình tương tác (foreground), mà

Ngày đăng: 25/02/2023, 17:58

Xem thêm:

TỪ KHÓA LIÊN QUAN

w