6. Lập trình shell.
6.1. Tạo và chạy chương trình Shell
Nó một cách đơn giản nhất, lập trình shell chỉ là các file chứa một hoặc nhiều câu lệnh shell hay câu lệnh Linux. Bạn có thể sử dụng các chương trình đơn giản thực hiện các cơng việc lặp ñi lặp lại, ñể thay cho hai hay nhiều câu lệnh ln ln được thực thi cùng nhau bằng một câu lệnh, ñể tự ñộng cài ñặt các chương trình khác, và để viết các ứng dụng tương tác ñơn giản.
ðể tạo một chương trình shell, bạn phải tạo một file sử dụng một trình soạn thảo và ñưa các câu lệnh shell hay Linux mà bạn muốn ñược thực thi vào trong file. Giả sử rằng bạn có một ổ CD-ROM đã được gắn vào hệ thống Linux. Thiết bị CD-ROM này ñược gắn vào hệ thống khi hệ thống ñược khởi ñộng lần ñầu. Nếu bạn cần thay ñổi ñĩa CD đã có trong ổ CD bằng một ñĩa CD mới. Một cách ñể bạn thực hiện được cơng việc này là bạn “nhả” ổ CD-ROM khỏi hệ thống sử dụng câu lệnh umount, và sau đó gắn lại ổ sử dụng câu lệnh mount . Các câu lệnh chỉ ra ở dưới ñầy cho bạn thấy tuần tự các bước thực hiện:
umount /dev/cdrom
mount /dev/cdrom /cdrom
Thay việc gõ cả hai câu lệnh mỗi lần bạn thay đổi đĩa CD, bạn có thể tạo một chương trình shell thực hiện cả hai câu lệnh này cho bạn. ðể tạo chương trinh shell này bạn ñưa cả hai câu lệnh vào trong một file có tên là remount (hoặc một tên bất kỳ nào khác mà bạn muốn).
Có một vài cách ñể thực hiện các câu lệnh trong file remount. Cách thứ nhất là bạn thay ñổi thuộc tính cho file này có thể thực thi bằng cách thực hiện câu lệnh sau:
chmod +x remount
Câu lệnh này thay ñổi quyền của file làm cho file có thể thực thi. ðể chạy chương trình shell mới, gõ remount trên dịng lệnh.
kiếm của bạn, nếu không hệ thống sẽ khơng tìm thấy chương trình để thực thi. Nếu bạn khơng chay được chương trình bởi vì file đó khơng được tìm thấy, hãy xác định đường dẫn. Hoặc nếu bạn sử dụng tcsh để viết chương trình, dịng đầu tiên của chương trình shell phải bắt đầu với # để tcsh nhận ra nó như một file chương trình tcsh. Thực ra, cách an tồn (đảm bảo ) nhất là ở dịng đầu của mỗi chương trình shell bạn thêm #!/bin/sh để đảm bảo chương trình shell được thực thi như một tiến trình Bourne shell. ðiều này ngăn chặn nhiều vấn đề với ngơn ngữ lập trình C, shell sẽ cố gắng thông dịch cú pháp Bourne shell.
Một cách khác là bạn có thể thực thi chương trình shell là chạy shell mà chương trình được viết theo nó và tên chương trình như một khai báo cho shell. Trong trường hợp một chương trinh tcsh, bạn thực hiện câu lệnh sau:
tcsh remount
Câu lệnh này chạy một shell mới và nói cho nó thực thi các câu lệnh trong file remount.
Cách thứ ba ñể thực thi các câu lệnh trong một file chương trình shell là sử dụng câu lệnh . (dấu chấm) với cả shell pdksh và bash hoặc câu lệnh source trong shell tcsh. Các câu lệnh này nói cho shell thực thi file được truyền vào như đối số. Ví dụ, bạn có thể sử dụng câu lệnh sau để nói cho bash hoặc pdksh thực thi các câu lệnh trong file remount:
. remount
ðể làm tương tự ñối với tcsh, sử dụng câu lệnh sau:
source remount
Ví dụ sau trình bầy một tình huống khác, trong đó việc sử dụng chương trình shell sẽ giúp tiết kiệm rất nhiều thời gian. Giả sử rằng bạn ñã phải làm việc với ba file khác nhua trong một thư mục mỗi ngày, và bạn muốn dự phòng ba file này vào một ñĩa mềm vào cuối mỗi ngày. ðể thực hiện ñược công việc này, bạn phải gõ một loạt các lệnh:
mount -t msdos /dev/fd0 /a
cp file1 /dev/fd0
cp file2 /dev/fd0
cp file3 /dev/fd0
Một cách dự phòng các file là gắn ổ ñĩa mềm vào hệ thống và sau đó gõ ba câu lệnh copy, mỗi lệnh cho một file bạn muốn copy. Một cách ñơn giản hơn là ñưa bốn câu lệnh này vào trong một file có tên là backup và sau đó thực hiện câu lệnh backup khi bạn muốn copy ba file này vào ñĩa mềm.
Bạn vẫn phải ñảm bảo chương trình file shell backup có thể thực thi và nằm trong một thư mục mà có trong ñường dẫn của bạn trước khi chạy câu lệnh. Bạn hãy cẩn thận khi sử dụng một tên file, nó có thể tương ứng với tên của một câu lênh hệ thống. Ví dụ, nếu có một chương trình được gọi là backup trong ñường dẫn mà shell tìm kiếm trước khi đọc thư mục hiện tại, câu lệnh đó có thể được thi thay cho file câu lệnh shell. Vì lý do này, hãy cố sử dụng các tên file cho kịch bản shell của bạn không gần với các câu lệnh Linux.