Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 72 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
72
Dung lượng
3 MB
Nội dung
LËp tr×nh Shell trªn OpenSUSE Khãa luËn tèt nghiÖp Lời mở đầu Có lẽ bạn quen với hệ điều hành Windows quen lập trình hệ điều hành Windows nói HĐH "hoàn hảo", dễ sử dụng, với nhiều tiện ích đáp ứng gần yêu cầu người dùng Vậy lại phải tìm đến HĐH Linux ? Trong bối cảnh kinh tế giới có xu hướng toàn cầu hóa vấn đề cộm Ở Việt Nam, vấn đề vi phạm quyền phần mềm phổ biến (nước ta dẫn đầu giới số lượng phần mềm dùng quyền) Theo tổ chức BSA&IDC xếp thứ 10/108 nước vi phạm quyền CNTT, năm 2007 đứng thứ 11 vừa thoát khỏi nước có tỷ lệ vi phạm quyền CNTT nhiều năm 2005 Trước tình hình đó, việc tự xây dựng cho phần mềm thương hiệu Việt Nam trở nên vấn đề cấp bách Phần mềm mã nguồn mở xem giải pháp hữu hiệu cho toán quyền nước ta Phần mềm mã nguồn mở mặt có chi phí rẻ so với phần mềm truyền thống, mặt khác dễ nâng cấp, cải tiến (do cung cấp mã nguồn kèm theo) Đặc biệt tính ổn định hệ thống, tính đa nhiệm đa người dùng Chính thế, phát triển phần mềm mã nguồn mở tận dụng công nghệ tiên tiến có sẵn giới, cải tiến cho phù hợp với người Việt Nam, tiết kiệm nhiều công sức so với việc phát triển từ đầu Linux HĐH mã nguồn mở vậy! Ngoài ra, Linux lại có độ an toàn cao, thích hợp cho quản trị mạng, chạy thống hệ thống phần cứng, tích hợp nhiều phần mềm tiện ích,… Tuy nhiên với người quen sử dụng Windows việc tiếp xúc với hệ điều hành không khỏi bỡ ngỡ, khó khăn, giao diện “Command Line” Vì thế, mục tiêu đề tài giới thiệu cách khái quát hệ điều hành Linux, cụ thể qua phiên OpenSUSE có khả hỗ trợ tốt cho máy chủ giới thiệu lập trình Shell Linux để người yêu thích lập trình có nhìn Bố cục khóa luận sau: Chương I: Tổng quan hệ điều hành Linux Chương II: OpenSUSE Chương III: Lập trình Shell SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Chương I Hệ điều hành Unix, Linux I Lịch sử phát triển Unix, Linux Unix Vào năm 70 kỷ này, giới chứng kiến trào lưu phát triển rực rỡ tin học xung quanh HĐH UNIX Trong khoảng thời gian đó, toàn trường đại học giới, khắp nơi nở rộ phong trào học, nghiên cứu phát triển HĐH UNIX Vì UNIX có mặt khắp nơi vậy? Vì UNIX HĐH miễn phí với mã nguồn mở thời gian Có thể nói phát triển HĐH UNIX gắn liền với phát triển khoa học CNTT suốt năm 70 kéo dài tận ngày hôm Hệ thống mạng máy tính phát triển nhanh năm 70 với mạng riêng cho UNIX USENET, CSNET, BITNET, EARN, NSFNET nhiều mạng khác xuất quy mô toàn cầu, liên kết giới UNIX thành hệ thống thống Sau máy PC đời đặc biệt hệ điều hành cho PC phát triển rầm rộ người ta cảm thấy xuống phong trào UNIX hóa nói Cảm tưởng UNIX lép vế bắt đầu xuống nhường chỗ cho hệ điều hành PC lên DOS, OS/2, Netware, Windows NT, Thế giới UNIX xưa máy tính lớn trường đại học Tuy nhiên phong trào “UNIX” lại nở rộ lần thứ 2, lần xuất cách hơn, nhanh hơn, liệt hơn, LINUX tung lần vào năm 1991 Linus Torvalds Thế giới UNIX ngày hôm với LINUX làm trung tâm chứng kiến phát triển nhanh lịch sử phát triển phần mềm nói chung hệ điều hành nói riêng Hàng chục triệu chuyên gia lập trình, người không cần có chuyên môn tin học, hàng triệu website toàn giới tham gia vào phong trào “Linux hóa” có quy mô tốc độ phát triển chóng mặt toàn giới Chưa đội ngũ người lập trình phát triển hệ điều hành LINUX lại mạnh, đoàn kết, trí đông đảo Giai đoạn phát triển thứ hai UNIX, gọi LINUX/GNU toàn giới quan tâm Sự quan tâm không dừng lại phía nhà lập trình, công ty tin học mà phủ quốc gia trận Một loạt SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE quốc gia thức tham gia phong trào nhằm phát triển HĐH riêng cho quốc gia Linux Linux HĐH đa người dùng, nghĩa nhiều người đăng nhập lúc sử dụng hệ thống Mặc dù ưu điểm không bật máy PC nhà, song công ty trường đại học, nhiều người lúc sử dùng chung tài nguyên, từ giảm chi phí đầu tư cho máy móc Ngay gia đình, vào hệ thống nhiều account khác qua đầu cuối ảo (virtual terminal ) Cũng từ môi trường gia đình, bạn tự tổ chức dịch vụ mạng riêng cách sử dụng Linux nhiều modem Linux cung cấp cho hội học tập mà chưa có hệ điều hành sánh Có Linux, ta có hệ điều hành đầy đủ bao gồm mã nguồn Trong hệ điều hành thương mại khác không tiết lộ mã nguồn Năm 1991, Linus Torvalds, sinh viên trường đại học tổng hợp Helsinki Phần Lan bắt đầu xem xét Minix, phiên UNIX làm với mục đích nghiên cứu cách tạo hệ điều hành UNIX chạy PC với vi sử lý Intel 80386 Ngày 25/8/1991, Linus cho version 0.01 thông báo comp.os.minix dự định Linux Tháng 1/1992, Linus cho phiên với shell trình biên dịch C Linux không cần minix để phiên dịch lại hệ điều hành mình, Linus đặt tên hệ điều hành Linux Năm 1994, phiên thức 1.0 phát hành Linux hệ điều hành dạng UNIX chạy máy PC với điều khiển trung tâm Intel 80386 trở lên, hay vi xử lý trung tâm tương thích AMD, Cyrix Linux ngày chạy máy Macintosh SUN Space Linux thoả mãn chuẩn POSIX.1 Linux viết toàn từ số không, tức không sử dụng dòng lệnh UNIX, nhiên hoạt động Linux hoàn toàn dựa nguyên tắc điều hành UNIX Vì người nắm UNIX nắm Linux Linux hệ điều hành phát hành miễn phí, phát triển mạng Internet, tựa UNIX sử dụng máy tính cá nhân Linux phát triển nhanh chóng trở lên phổ biến thời gian ngắn Nó nhanh chóng nhiều người sử dụng SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE lý trả tiền quyền, người dễ dàng download từ Internet hay mua hiệu bán CD Linux hệ điều hành có hệ cao, tất máy tính có cấu hình cao hay thấp Hệ điều hành hỗ trợ máy tính sử dụng 32 64 bit nhiều phần mềm khác Quá trình phát triển Linux tăng tốc qua phát triển chương trình GNU Đó chương trình phát triển UNIX có khả chạy nhiều tảng khác Đến cuối năm 2001 phiên Linux kernel 2.4.2-2 có khả điều khiển máy đa vi xử lý nhiều tính khác II Một số khái niệm Nhân Linux (Kernel) Nhân (còn gọi hệ lõi) Linux, hệ modun chương trình có vai trò điều khiển thành phần máy tính, phân phối tài nguyên cho người dùng Nhân cầu nối chương trình ứng dụng phần cứng Người dùng sử dụng bàn phím gõ nội dung yêu cầu yêu cầu nhân gửi tới Shell; Shell phân tích lệnh gọi chương trình tương ứng với lệnh để thực Nó cung cấp chức để hệ điều hành hoạt động quản lý nhớ, quản lý file, quản lý thiết bị nhập/xuất Nhân Linux gồm hệ thống nhỏ: 1/ Bộ phân thời cho tiến trình (Process Scheduler-SCHED) Cơ PC hệ thống xử lý đơn tức có lệnh thực thi thời điểm Tuy nhiên hệ điều hành đa nhiệm (multi-task) Windows, Linux,… cho phép nhiều chương trình chạy lúc Bằng cách chuyển quyền thực thi qua lại chương trình thật nhanh làm cho có cảm giác chương trình chạy lúc với Ví dụ bạn vừa gõ văn OpenOffice vừa nghe nhạc Amarok thật SCHED chạy OpenOffice 5,10 lệnh xong chuyển qua Amarok 5,10 lệnh chuyển lại Việc nhanh nên bạn cảm giác 2/ Bộ quản lý nhớ (Memory Manager-MM) Bộ nhớ qui ước (conventional memory) PC có 640KB Do chương trình BIOS quản lý tới FFFFF, mà vùng nhớ cao (từ A0000 trở lên) dùng SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE để ánh xạ BIOS, video card memory thiết bị ngoại vi khác, vùng nhớ thấp từ 9FFFF trở xuống Ở chế độ bảo vệ CPU 32bít đưa khái niệm nhớ ảo (virtual memory) Lúc tiến trình cấp cho 4GB nhớ ảo từ 00000000-FFFFFFFF Nhưng nhân giữ bảng mô tả ánh xạ trang nhớ ảo với nhớ vật lý Bộ nhớ vật lý bao gồm RAM swap disk space Tất nhiên 4GB nhớ ảo không ánh xạ hết (4GB dùng chung cho tất tất tiến trình) Phần lớn có đánh địa chỉ, đọc ghi lên nhân định vị từ nhớ vật lý 3/ Hệ thống file ảo (Virtual File System – VFS) Hệ thống tệp không cung cấp truy xuất đến hệ thống file đĩa cứng mà cho tất thiết bị ngoại vi Ý tưởng bắt nguồn từ Unix hệ điều hành sau điều thiết lập theo hướng Trong DOS dùng copy xxx để in file xxx hình Khi “con “ filehandler cho thiết bị xuất chuẩn (console) 4/ Giao diện mạng (Network Interface-NET) Linux xây dựng sẵn TCP/IP nhân Vì Linux dễ dàng kết nối hệ thống khác qua mạng truy xuất mà không quan tâm đến thiết bị giao thức sử dụng 5/ Bộ truyền thông nội (Inter-process communication IPC) Cung cấp phương tiện truyền thông tiến trình hệ thống Linux Vỏ Linux (Shell) Mọi thứ thực Li nux tiến trình Vậy tạo tiến trình nào.Cách thứ viết chương trình mà chương trình biết cách tạo tiến trình Cũng hệ điều hành khác, Unix hỗ trợ phương tiện xử lý lệnh làm giao diện lệnh máy (mà người dùng đưa vào) việc thực thi lệnh (bởi Unix) Phương tiện gọi Shell Từ đời, Unix có vài kiểu Shell, Bourne, C, Korn shell Thực shell làm gì? Toàn mục đích shell để khởi động tiến trình xử lý lệnh đưa vào: Yêu cầu đưa (dòng) lệnh vào, đọc đầu vào, thông dịch dòng lệnh đó, tạo tiến trình để thực lệnh Nói cách khác Shell quét dòng lệnh đưa vào máy tính, cấu hình môi trường thực thi tạo tiến trình để thực lệnh SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Hình 1: Vị trí Shell “thực hiện” lệnh người dùng Shell dịch lệnh nhập vào thành lời gọi hệ thống, chuyển ký tự dẫn hướng >, >> hay | thành liệu di chuyển lệnh Đọc biến môi trường để tìm thông tin thực thi lệnh Như vậy, tìm hiểu Shell thực tế học ngôn ngữ lập trình, cho dù không phức tạp C, hay số ngôn ngữ khác, phải trải qua đòi hỏi cần thiết Trong Unix/Linux có loại Shell khác lựa chọn để dùng theo nhu cầu mà người dùng thấy phù hợp Hình mô tả tương tác Shell, chương trình ứng dụng, hệ X- window nhân Linux/Unix tách biệt ứng dụng, lệnh gọi hàm chức nhân thành đơn thể nhỏ (tiến trình) Tuy nhiên, nhiều lệnh Linux kết hợp lại với để tạo nên chức tổng hợp mạnh mẽ Ví dụ: $ ls –al | more lệnh kết hợp hai lệnh, ls liệt kê toàn danh sách tệp thư mục đĩa hình, danh sách dài, ls chuyển liệu kết xuất cho lệnh more xử lý thị kết thành trang hình Linux có cách kết hợp liệu kết xuất lệnh với thông qua chế chuyển tiếp (redirect) ống dẫn (pipe) Kết hợp lệnh với dòng lệnh không chưa đủ Nếu muốn nhiều lệnh thực đồng thời với tùy vào điều kiện, kết xuất lệnh mà có ứng xử thích hợp Lúc dùng đến cấu trúc rẽ nhánh if, case Trường hợp bạn muốn thực thao tác vòng lặp, phải dùng SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE lệnh for, while Shell trình diễn dịch cung cấp cho người dùng khả Hầu hết Shell Unix/Linux sử dụng ngôn ngữ gần giống với C Hệ thống cung cấp cho người dùng nhiều chương trình Shell Mỗi shell có số tiện ích hỗ trợ chế độ gõ phím, ghi nhớ lệnh Kết hợp tiện ích shell để tạo chương trình chạy được, chương trình lưu dạng tệp, gọi tệp kịch (script) Viết tệp Script thực chất lập trình theo Shell Các Shell Unix/Linux: Sh (Bourne) shell nguyên thủy áp dụng cho Unix Csh, tcsh zsh dòng shell sử dụng cấu trúc lệnh C làm ngôn ngữ kịch Được tạo Boy Joy Là shell thông dụng thứ hai sau bash shell Bash Shell chủ yếu Linux Ra đời từ dự án GNU bash (viết tắt Bourne Again Shell) có lợi điểm mã nguồn công bố rỗng rãi rc Shell mở rộng csh với nhiều tương thích ngôn ngữ C rc đời từ dự án GNU Shell chuẩn thường nhà phân phối Linux sử dụng bash Khi cài đặt Linux, trình cài đặt thường mặc định bash shell khởi động Có thể tìm thấy chương trình Shell thư mục /bin với tên chương trình bash bash chương trình nhị phân script gọi đến chương trình nhị phân khác Có thể dùng lệnh file để xem bash tập tin nhị phân hay script sau: $ file/ bin/ bash / bin/bash: ELF 32 –bit LSB executable Intel 80386 kết kết xuất dạng ELF (Executable and Linking Format) có nghĩa bash chương trình nhị phân Tuy bash shell sử dụng phổ biến Linux, ví dụ lập trình sử dụng ngôn ngữ lệnh shell sh sh shell nguyên thủy, chạy Unix Bằng lệnh file ta thấy hầu hết Linux sh liên kết đến bash mà Ví dụ: $ file/ bin/ sh SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE / bin/sh: symbolic link to bash điều có nghĩa bash hoàn toàn diễn dịch điều khiển lệnh shell sh Tiến trình * Định nghĩa tiến trình: Tiến trình (process) chương trình đơn chạy không gian địa ảo Cần phân biệt tiến trình với lệnh dòng lệnh shell sinh nhiều tiến trình Ví dụ: dòng lệnh sau nnroff -man ps.1 grep kill | more user sinh tiến trình khác Các loại tiến trình Linux - Tiến trình với đối thoại (Interactive processes) : tiến trình khởi động quản lý shell, kể tiến trình foreground background - Tiến trình batch (Batch processes) : Tiến trình không gắn liền đến bàn điều khiển (terminal) nằm hàng đợi để thực - Tiến trình ẩn nhớ - (Daemon process) Là tiến trình chạy Đa số chương trình server cho dịch vụ chạy theo phương thức Đây chương trình sau gọi lên nhớ, đợi thụ động yêu cầu chương trình khách (client) để trả lời sau cổng xác định (cổng khái niệm gắn liền với giao thức TCP/IP BSD socket) Hầu hết dịch vụ Internet mail, Web, DNS … chạy theo nguyên tắc Các chương trình gọi chương trình daemon tên thường kết thúc ký tự “d” named, inted 3.1 Kiểm tra tiến trình Cách đơn giản để kiểm tra hệ thống tiến trình chạy sử dụng lệnh ps (process status) Lệnh ps có nhiều tùy chọn phụ thuộc cách mặc định vào người login vào hệ thống $ ps PID TTY STAT TIME COMMAND 41 v01 S 0:00 -bash 134 v01 R 0:00 ps * Lệnh ps : Để hiển thị tất process, ta sử dụng lệnh ps –a Một người sử dụng hệ thống bình thường thấy tất tiến trình, điều khiển tiến trình tạo Chỉ có superuser có quyền điều khiển tất tiến trình hệ thống Linux người khác Lệnh ps –ax cho SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE phép hiển thị tất tiến trình, tiến trình không gắn liền đến có bàn điều khiển (tty – teletypewriter) Chúng ta coi tiến trình chạy với dòng lệnh đầy đủ để khởi động tiến trình ps –axl 3.2 Dừng tiến trình- kill Trong nhiều trường hợp, tiến trình bị treo, chương trình server cần nhận cấu hình mới, card mạng cần thay đổi địa IP, phải dừng tiến trình có vấn đề Linux có lệnh kill để thực công việc Trước tiên bạn cần phải biết PID (Process Identifier - số hiệu tiến trình) tiến trình cần dừng thông qua lệnh ps Chỉ có super-user có quyền dừng tất tiến trình, user dừng tiến trình * Lệnh kill : kill -9 PID_của_ tiến_trình : Tham số –9 gửi tín hiệu dừng không điều kiện chương trình Chú ý bạn đăng nhập vào hệ thống root, nhập số PID xác không bạn dừng tiến trình khác Một tiến trình sinh tiến trình trình hoạt động Nếu dừng tiến trình cha, tiến trình dừng theo, không tức Vì phải đợi khoảng thời gian sau kiểm tra lại xem tất tiến trình có dừng hay không Trong số hữu hạn trường hợp, tiến trình có lỗi nặng không dừng được, phương pháp cuối khởi động lại máy 3.3 Hoạt động tiến trình * Lệnh Top : Hiển thị hoạt động tiến trình, đặc biệt thông tin tài nguyên hệ thống việc sử dụng tài nguyên tiến trình Với lệnh đơn giản top, ta có top -14:44:52 up 3:12, user, load average: 0.11, 0.18, 0.26 Tasks: 111 total, running, 108 sleeping, stopped, zombile Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 907064k total, 623316k used, 283748k free, 39580k buffers Swap: 2097140k total 0k used, 2097140k free, 419188k cached Số % máy rảnh (id - viết tắt idle) in đậm quan trọng Một máy rảnh 50% máy tải cần xem xét Lệnh top cho phép theo dõi xem có tiến trình chiếm nhiều thời gian CPU truy cập ổ đĩa Ngoài ra, số lệnh khác vmstat mpstat, sar, iostat cho phép xem xét với mục đích khác hoạt động máy chủ SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Cấu trúc thư mục Hệ thống tập tin Linux tổ chức theo hệ thống phân cấp Bậc cao hệ thống tập tin thư mục gốc, ký hiệu vạch chéo “/” (root directory) Đối với hệ điều hành Linux tất thiết bị kết nối vào máy tính nhận tập tin, kể linh kiện ổ đĩa cứng, phân vùng đĩa cứng ổ USB Sau danh sách thư mục thông thường nhìn thấy thư mục gốc (/) : /bin – Thư mục chứa file chương trình thực thi dạng nhị phân chương trình khởi động hệ thống /boot – tập tin cấu hình trình khởi động hệ thống /dev – Thư mục chứa file thiết bị Trong Linux thiết bị phần cứng (device) xem file Đĩa cứng phân vùng file hda1, hda2, hdb1, hdb2, đĩa mềm mang tên fd0… file thiết bị thường đặt thư mục /etc – Thư mục chứa file cấu hình toàn cục hệ thống Có thể có nhiều thư mục thư mục nhìn chung chúng chứa file script để khởi động hay phục vụ cho mục đích cấu hình chương trình trước chạy /home – Thư mục chứa thư mục đại diện cho user đăng nhập Ở thư viện làm việc thường xuyên người dùng Khi người quản trị tạo tài khoản cho ta họ cấp thư mục tên với tên tài khoản nằm thư mục /home Ta có quyền thao tác thư mục mà không ảnh hưởng đến người dùng khác.(local users' home directories) /lib – Thư mục chứa file thư viện so (shared object) a Các thư viện C liên kết động cần cho chương trình chạy cho toàn hệ thống Thư mục tương tự thư mục SYSTEM32 Windows.(system libraries) /lost+found – Khi hệ hệ thống khởi động bạn chạy trình fsck, tìm thấy chuỗi liệu thất lạc đĩa cứng không liên quan đến đến tập tin, Linux gộp chúng lại đặt thư mục để cần ta đọc giữ lại liệu bị /media – thư mục dùng để tạo tập tin gắn (loaded) tạm thời hệ thống tạo thiết bị lưu động (removable media) cắm vào đĩa CDs, máy ảnh kỹ thuật số, USB, etc SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 10 LËp tr×nh Shell trªn OpenSUSE Khãa luËn tèt nghiÖp - cặp dấu `` dấu nháy đơn mà chung với ~ - Các toán hạng toán tử cách khoảng trắng Ta có cú pháp: expr operand1 operator operand2 Một số biểu thức ước lượng mà expr cho phép Biểu thức Ý nghĩa operand1 | operand2 Kết operand1 khác 0, ngược lại operand2 operand1 & operand2 biểu thức zero ngược lại operand1 operand1 = operand2 Bằng operand1 > operand2 Lớn operand1 >= operand2 Lớn hay operand1 < operand2 Bé operand1 * Ví dụ: expr 10 \| 10 expr + 11 * Ngoài toán hạng số expr xét với xâu SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 58 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE - expr length STRING : trả chiều dài xâu ví dụ: expr length "This is normal Text" 20 - expr index STRING CHARS : trả số ( vị trí ) ký tự xâu tìm thấy, ngược lại trả 0.(lưu ý chars chuỗi lệnh thực với ký tự đầu tiên) Ví dụ: expr index “Nguyen, Thi, Ngoc, Truc” “T” 10 - expr substr STRING POS LENGTH : Trả chuỗi STRING, vị trí POS, độ dài chuỗi LENGTH, tương đương lệnh copy Pascal Ví dụ: expr substr “Nguyen Thi Ngoc Truc” 12 Ngoc 6.9 Printf Lệnh Printf shell tương tự lệnh Printf thư viện C Nó dùng để in giá trị hình Tuy lệnh Prìntf shell có hạn chế không hỗ trợ định dạng số có dấu chấm động (float) tất số tính toán dựa số nguyên Các ký tự đặc biệt dùng với dấu \, gọi chuỗi thoát Chuỗi thoát (escape sequene) Ý nghĩa \\ Cho phép hiển thị ký tự \ chuỗi \a Phát tiếng chuông (beep) \b Xóa backspace \f Đẩy dòng \n Sang dòng \r Về đầu dòng \t tab ngang \v Căn tab dọc \ooo Ký tự đơn với mã ooo SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 59 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Định dạng số chuỗi ký tự % bao gồm Ký tự định dạng Ý nghĩa d Số nguyên c Ký tự s Chuỗi % Hiện thị ký tự % Một số ví dụ printf $printf “My name is %s It is nice to meet you \n” Nguyen Ngoc Truc My name is Nguyen Ngoc Truc It is nice to meet you $printf “%s %d\t %s” “Hi There” “15” “people” Hi There 15 people 6.10 Return Lệnh return dùng để trả giá trị hàm Lệnh Return không tham số trả mã lỗi lệnh vừa thực sau 6.11 Set Lệnh set dùng để áp đặt giá trị cho tham số môi trường $1,$2, $3 Lệnh set loại bỏ khoảng trắng không cần thiết đặt nội dung chuỗi truyền cho theo biến tham số Ví dụ $set this is parameter $echo $1 This $echo $3 parameter Ví dụ: Muốn lấy ngày, tháng năm chuỗi set.sh #! bin/ sh echo Ngay hien tai la ${date} set ${date} SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 60 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE echo The month is $2 echo The year is $6 exit Kết kết xuất: $./set.sh Ngay hien tai la Fri April 13 02:06:10 EST 2009 The month is April The year is 2009 6.12 Shift Lệnh Shift di chuyển nội dung tất tham số môi trường $1,$2 xuống vị trí Chỉ có tối đa tham số từ $1.$2 $9, lệnh Shift giải shell cần nhận từ 10 tham số trở lên Ví dụ: shift.sh #! bin/sh while [“$1”!= “”] echo “$1” shift done exit Kết kết xuất $./shift.sh here is a long parameter with here is a long parameter SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 61 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE 6.13 Unset Lệnh unset dùng để loại bỏ biến khỏi môi trường shell Ví dụ: #! bin/ sh foo = “Hello World” echo $foo unset foo echo $foo Đầu tiên echo in chuỗi Hello World, sau lệnh unset echo in chuỗi rỗng Lý do, biến foo không tồn Có thể gán chuỗi rỗng cho foo theo cách foo = Tuy nhiên foo rỗng foo loại khỏi môi trường khác Đối với Linux unset thường không sử dụng III Lập trình ứng dụng Shell Bài toán: Nhập mảng số nguyên, in mảng đó, xuất menu gồm mục Xóa phần tử theo vị trí bắt đầu Xóa phần tử theo giá trị Sắp xếp mảng tăng dần Sắp xếp mảng giảm dần Tính tổng phần tử mảng Thoát khỏi chương trình Nếu chọn giá trị khác 1-6 đưa thông báo chọn lại giá trị từ đến Trước vào xây dựng toán phải có hàm sau: nhapmang() xuatmang() xoavitri() xoagiatri() sapxeptang() SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 62 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE sapxepgiam() tinhtong() Ta có chương trình sau đây: #!/bin/sh nhapmang() { echo " Nhap gia tri cac phan tu cua mang" for((i=0;i[...]... CNTT 35 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Chương III Lập trình Shell I Giới thiệu các trình soạn thảo và các ngôn ngữ lập trình trên OpenSUSE 1 Một số trình soạn thảo trên OpenSUSE 1.1 Trình soạn thảo Kwrite KWrite là một trình soạn thảo văn bản cho các K Desktop Environment (KDE) Đây là trình soạn thảo được cấu hình sẵn khi ta cài đặt OpenSUSE 1.2 Trình soạn thảo Gedit Gedit là một phần... liệu theo lịch 8 / Hỗ trợ nhiều ngôn ngữ lập trình Linux cung cấp một môi trường lập trình Unix đầy đủ bao gồm các thư viện chuẩn, các công cụ lập trình, trình biên dịch, debug chương trình mà bạn có thể tìm thấy trong các hệ điều hành Unix khác Ngôn ngữ chủ yếu sử dụng trong các hệ điều hành Unix là C và C++ Linux dùng trình biên dịch cho C và C++ là gcc, chương trình biên dịch này rất mạnh, hỗ trợ nhiều... LËp tr×nh Shell trªn OpenSUSE Chọn Install để xác nhận Sau đó, quá trình cài đặt sẽ bắt đầu : Quá trình cài đặt sẽ yêu cầu Restart máy tính Sau đó, nó sẽ tiến hành check các thông số của hệ thống và các cấu hình SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 30 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Sau đó, quá trình cài đặt thành công Màn hình khởi động đầu tiên vào OpenSUSE sẽ... CNTT 18 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Chương II OpenSUSE I Giới thiệu chung 1 .OpenSUSE là gì? OpenSuSE là một hệ điều hành đa năng, được phát triển bởi dự án OpenSuSE Sau khi đạt được SUSE Linux vào tháng 1 năm 2004, Novell đã quyết định phát hành sản phẩm SUSE Linux Professional như một dự án nguồn mở 100%, liên quan đến cộng đồng trong quá trình phát triển Phiên bản đầu tiên là... OpenSUSE sẽ như sau: Quá trình cài đặt đã xong Sau đây là một vài hình ảnh : II Cài đặt các gói phần mềm SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 31 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE 1 Phân phối phần mềm trên Linux Trên Windows phần mềm thường được phân phối ra dưới dạng file cài đặt msi hoặc exe thì trên Linux cũng gần tương tự như vậy, có điều trên Linux có nhiều hình... Lựa chọn ngôn ngữ ở màn hình này Cách trình bày bàn phím đặt một cách tự động dựa trên ngôn ngữ Nếu cách trình bày bàn phím của bạn khác với ngôn ngữ được chọn lựa bởi YaST, hãy sửa đúng nó SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 22 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Bạn sẽ được dẫn đến openSUSE License Agreement (thỏa thuận cho phép openSUSE) Để trải rộng sự thỏa thuận... CNTT 23 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Hầu hết người dùng nên bỏ phần chọn lựa đã mặc định Nếu có phiên bản trước của OpenSUSE, có thể chọn phần Update để cập nhật phiên bản đó đến phiên bản OpenSUSE 11.1 Nếu đã từng cần sửa chữa việc cài đặt của OpenSUSE 11.1, phần Repair Installed System có thể được dùng để định mức và sửa chữa hệ thống cài đặt OpenSUSE Nếu muốn điều chỉnh vi cấp(tinh... tr×nh Shell trªn OpenSUSE 5 Đặc điểm chính của hệ điều hành Linux Linux hỗ trợ các tính năng cơ bản thường thấy trong các hệ điều hành Unix và nhiều tính năng khác mà không hệ điều hành nào có được Linux cung cấp môi trường phát triển một cách đầy đủ bao gồm các thư viện chuẩn, các công cụ lập trình, trình biên dịch, debug … như ở các hệ điều hành Unix khác Hệ thống Linux trội hơn các hệ thống khác trên. .. trong tệp tin cat Xem nội dung của tệp tin vi Soạn thảo hoặc sửa nội dung tệp tin Lệnh về quản lý tiến trình kill Hủy bỏ một quá trình SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 15 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE ps Trình bày tình trạng của các quá trình sleep Ngưng hoạt động một thời gian Các lệnh về phân quyền chgrp một nhóm khác Chuyển chủ quyền tệp tin, thư mục từ một... được lấy từ dự án GNU Fedora Fedora là một bản phân phối Linux dựa trên RPM Package Manager, được phát triển dựa trên cộng đồng theo "dự án Fedora" và được bảo trợ bởi Red Hat SV thùc hiÖn: NguyÔn ThÞ Ngäc Tróc - Lớp 46A Khoa CNTT 17 Khãa luËn tèt nghiÖp LËp tr×nh Shell trªn OpenSUSE Freespire Freespire là một HĐH mã nguồn mở xây dựng dựa trên Linux Ubuntu Freespire kế thừa mọi thế mạnh của Ubuntu nhưng ... LËp tr×nh Shell trªn OpenSUSE Chương III Lập trình Shell I Giới thiệu trình soạn thảo ngôn ngữ lập trình OpenSUSE Một số trình soạn thảo OpenSUSE 1.1 Trình soạn thảo Kwrite KWrite trình soạn... theo lịch / Hỗ trợ nhiều ngôn ngữ lập trình Linux cung cấp môi trường lập trình Unix đầy đủ bao gồm thư viện chuẩn, công cụ lập trình, trình biên dịch, debug chương trình mà bạn tìm thấy hệ điều... chương trình chỉnh sửa mã nguồn, tên đầy đủ Vị cải thiện Một số ngôn ngữ lập trình Linux Có nhiều ngôn ngữ lập trình Linux, xin giới thiệu số ngôn ngữ lập trình nhiều người quan tâm, ngôn ngữ Shell