Giáo trình Hệ điều hành Linux cơ bản
LẬP TRÌNH SHELL TRÊN LINUXCHƯƠNG 11 Nội dung1. Tổng quan.2. Trình biên dịch GNU.3. Giới thiệu về shell scripting.4. Những tính năng của shell.5. Cấu hình môi trường đăng nhập.6. Điều khiển Shell.7. Cú pháp ngôn ngữ shell.8. Các ví dụ minh họa. 1. Tổng quanShell là chương trình luôn được thực thi khi người dùng đăng nhập vào hệ thống.Shell Linux hỗ trợ một tập lệnh mà có thể kết hợp chúng lại thành một script hay thành một chương trình có thể sử dụng nhiều lần.Thiếu sót chính của ngôn ngữ script là những lệnh này phải thông dịch lại mỗi lần script thực thi.Linux cung cấp nhiều tiện ích là những trình thông dịch cho ngôn ngữ C, C++, debugger, công cụ tổ chức project và công cụ quản lý code. 2. Trình biên dịch GNU CGNU C Compiler (GCC) đi với Slackware Linux là một trình biên dịch với ANSI C có đầy đủ hàm. Cú pháp để khởi động GCC :Cú pháp : #gcc [option] [filenames]Trong trường hợp sử dụng gcc mà không có tùy chọn nào thì nó sẽ tạo ra tập tin a.out. Nếu muốn đặt một tên khác thì sử dụng tùy chọn -o.Ví dụ : #gcc sample.c#gcc -o sample sample.c 3. Giới thiệu về shell scripting.Shell là một cầu nối giao tiếp giữa người dùng và hệ điều hành Linux.Shell có sẵn như Bourne Again Shell (bash), Public Domain Korn Shell (pdksh) và tcsh shell.Mỗi user sẽ được copy một shell để làm việc với kernel. Giới thiệu về shell scripting (tt).Shell như là một thông dịch lệnh :Login vào máy tính -> hiển thị dấu shell -> user gợi ý một lệnh -> shell đọc lệnh -> shell tìm kiếm tập tin tương ứng trong cây thư mục, shell tải tiện ích vào bộ nhớ -> shell thực thi tiện ích -> trở lại dấu nhắc.Nếu tập tin không tìm thấy, shell đưa ra một thông báo lỗi và hiển thị lại dấu nhắc. Giới thiệu về shell scripting (tt).Chúng ta có thể thay đổi shell mặc định sang một shell khác với sự trợ giúp của lệnh chsh.[root@localhost /etc]#chshChanging shell for rootPassword:******New shell [/bin/bash]: /bin/shShell changed Shell scripts : Các tập tin chứa nhiều lệnh và có thể thực thi được gọi là shell scripts. 4. Những tính năng của shell.Xử lý tương tác (Interative processing).Chạy nền (Background).Chuyển hướng (Redirection).Ống dẫn (Pipe).Tập tin lệnh (Shell scripts).Biến (Shell variables).Dùng lại các lệnh đã thực hiện (Command history).Cấu trúc lệnh như ngôn ngữ lập trình.Tự động hoàn tất tên tập tin hoặc lệnh.Bí danh cho lệnh (Command alias). Khi đăng nhập vào hệ thống, người dùng sẽ làm việc trong môi trường do Linux định nghĩa sẵn. Tuy nhiên, chúng ta có thể thay đổi các thiết lập này theo ý riêng của mình. Môi trường làm việc gồm hai thành phần :•Môi trường terminal.•Môi trường shell.Lưu ý : Muốn xác lập những biến môi trường, chúng ta thay đổi trong tập tin .bash_profile (nếu chạy shell bash), trong tập tin .logon (nếu chạy shell C) và trong tập tin .profile (nếu chạy shell Bourne).5. Cấu hình môi trường đăng nhập. Điều khiển Shell từ dòng lệnh :•Chúng ta sử dụng nhiều lệnh trên một dòng cách nhau bằng dấu chấm phẩy (;).Điều khiển Shell từ tập tin lệnh :•Cách 1: #/bin/sh filenameVí dụ : #/bin/sh hello•Cách 2: Cấp quyền thực thi (excute) cho tập tin.#chmod +x filename#/path/filename6. Điều khiển Shell. [...]... để tạm ngừng chương trình thực thi trong một giai đoạn thời gian nào đó Cú pháp : sleep time Ví dụ : sleep 60 Cú pháp ngôn ngữ shell (tt) Cách thực thi shell script : #bash wonderful #!/bin/bash #chmod u+x wonderful #wonderful 8 Các ví dụ minh họa Ví dụ 1 : Kiểm tra user nhập vào có trong hệ thống không? Nếu có, kiểm tra user có đang login vào hệ thống không? In thông báo Đoạn chương trình : tmp=$(... tại trong hệ thống” else echo “User $1 tồn tại trong hệ thống” grep $1:x /etc/passwd kt=$( who | grep $1 | wc –l ) if [ $kt –ne 0 ] then echo “User $1 đang logon vào hệ thống” else echo “User $1 không logon vào hệ thống” fi fi Các ví dụ minh họa (tt) Ví dụ 2 : Kiểm tra xem hôm nay có phải là thứ bảy không? Nếu phải, user nhập vào sẽ thông báo “Hôm nay là ngày nghĩ” và thoát Đoạn chương trình : kiemtra()... “Hôm nay là ngày nghĩ” sleep 60 exit else echo “Hom nay là ngày $1” fi } tmp = $( date | cut –c 3 ) kiemtra $tmp Các ví dụ minh họa (tt) Ví dụ 3 : Thực hiện các phép toán +, -, \*, / của 2 số Đoạn chương trình : tong=` expr $1 + $2 ` echo “Tong của 2 số $1 và $2 là : $tong” hieu=` expr $1 - $2 ` echo “Hiệu của 2 số $1 và $2 là : $hieu” tich=` expr $1 \* $2 ` echo “Tích của 2 số $1 và $2 là : $tich” . LẬP TRÌNH SHELL TRÊN LINUXCHƯƠNG 11 Nội dung1. Tổng quan.2. Trình biên dịch GNU.3. Giới thiệu về shell scripting.4.. đăng nhập vào hệ thống.Shell Linux hỗ trợ một tập lệnh mà có thể kết hợp chúng lại thành một script hay thành một chương trình có thể sử dụng nhiều lần.Thiếu