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 luôn luôn đượ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.
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 toà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.