Friday, December 21, 2007

การรัน shell script

หลังจากเขียน script เก็บไว้ในไฟล์แล้ว เราสามารถรัน script ที่เขียนไว้ โดยพิมพ์คำสั่ง
1. sh scriptname
2. bash scriptname หรือ

โดยใช้ ./scriptname แต่มีข้อแม้ว่า จะต้องมีการเปลี่ยน file permission ก่อน มีหลายวิธีคือ
1.chmod 555 scriptname (ทำให้ทุกคนสามารถอ่านและรัน script ได้)
2.chmod +rx scriptname (เหมือกับข้อ 1)
3.chmod u+rx scriptname (ทำให้เจ้าของ script เท่านั้นที่สามารถอ่านและรัน script)

ควรมีการเพิ่ม #! ไว้ในบรรทัดแรกของไฟล์ เป็นการกำหนดว่าจะให้ shell ตัวไหน execute ในที่นี้กำหนดให้เป็น bash shell

#!/bin/bash

echo "Part 1 of script."
a=1

#!/bin/bash
# This does *not* launch a new script.

echo "Part 2 of script."
echo $a # Value of $a stays at 1.


ตัวอย่าง การรัน script



จากตัวอย่าง ไม่้มีการเปลี่ยน file permission เนื่องจากเครื่องผมเซ็ตเป็น 555 อยู่แล้ว

shell เหมาะไม่เหมาะกับงานแบบใด

shell script เหมาะกับการแก้ปัญหาง่ายๆ ใช้เชื่อมการทำงานของโปรแกรมในระบบเข้าด้วยกัน เพื่อเพิื่มความยืดหยุ่นในการทำงาน เหมาะกับผู้ดูแลระบบที่ต้องจัดการกับงานเล็กๆ น้อยๆ เป็นประจำ

งานที่ไม่เหมาะกับ shell script
1. งานที่คำนึงถึงความเร็วเป็นหลัก เช่น sorting, hashing
2. งานคำนวณทางคณิตศาสตร์ที่มีความซับซ้อน ควรใช้ภาษาอื่น เช่น C++ หรือ FORTRAN
3.
งานที่ต้องใช้ข้ามระบบฏิบัติ ควรใช้ Java , Python แทน
4. งานที่มีความซับซ้อน คำนึงถึงความถูกต้อง มี
type-checking
5. งานที่มีความเสี่ยง ต้องคำนึงถึงการใช้งานในอนาคต
6. งานที่คำนึงถึงความปลอดภัย
7. งานที่ต้องใช้โครงสร้างข้อมูล เช่น linked lists , trees
8. งานที่ต้องมีการสร้าง graphics user interface หรือ GUI
9. งานต้องเข้าถึง Hardware โดยตรง
10. งานที่ต้อง port หรือ socket I/O

สรุปก็คือ shell script เหมาะกับงานเล็กๆ ง่ายๆ ทำงานอยู่ที่เครื่องเดียว ไม่คำนึงถึงความถูกต้องแม่นยำ หรือความปลอดภัยมากนัก

Thursday, December 20, 2007

shell คือ อะไร

shell คือ โปรแกรมที่ทำหน้ารับคำสั่งจากผู้ใช้ส่งให้ kernel ของระบบปฏิบัติการ เป็น command interpreter ในแปลงคำสั่งที่ได้รับ ให้เป็นคำสั่งที่ระบบปฏิบัติการเข้าใจ ทำงานอยู่ระหว่างผู้ใช้กับ kernel

shell แบ่งออกเป็น 2 ประเภท
1. แบบ Command line ผู้ใช้จะติดต่อไปยัง kernel ผ่านทาง command line interface (CLI)
2. แบบ graphic ผู้ใช้ติดต่อผ่าน graphical user interface (GUI)

shell แบบ Command line บนระบบปฏิบัติการลินุกซ์ มีหลายชนิด เช่น Bourne shell (sh), Debian Almquist shell (dash), Bourne-Again shell (bash), C shell (csh) แต่ละชนิดจะมีรูปแบบคำสั่ง และ ขีดความสามารถแตกต่างกันออกไป

ใน การติดต่อกับ shell แบบ Command line จะติดต่อผ่านโปรแกรมเทอร์มินัล เช่น gnome-terminal , konsole , xterm

* ในเว็บนี้จะเน้น shell แบบ Command line โดยใช้ Bourne-Again shell (bash) เป็นหลัก เนื่องจากเป็น shell ที่ได้รับความนิยมมากที่สุดในปัจจุบัน