bash-shell

Shell Script คืออะไร

สำหรับผู้ที่ใช้งาน Unix หรือ Linux คงจะบอกว่าไม่รู้ว่า Shell script คืออะไร ก็คงไม่ได้ เพราะ Shell Script คือ การทำงานในแบบ Command-line interopreter ผ่าน Shell ทำงานได้เปรียบเสมือนภาษา program ชนิดหนึ่ง สำหรับผู้ที่ยังไม่ทราบว่าคำสั่ง command-line มีอะไรบ้างสามารถหาอ่านได้ที่นี่  คำสั่ง Unix – Linux Command พื้นฐาน Shell Script ช่วยให้ผู้ใช้งานสามารถทำงานได้รวมเร็วมากยิ่งขึ้น โดยการรวมเอาคำสั่งและเงื่อนไขที่ผู้ใช้ต้องการใส่ลงใน file และทำการ execute file นั้นเพื่อรอผลลัพธ์ที่ได้ในรูปแบบ text ส่วนมากใช้งานเพื่อให้ทำงานบนระบบอัตโนมัติตามเวลาที่เราต้องการ สำหรับบน Window หรือ DOS เราจะเรียกสิ่งนี้ว่า batch file ซึ่งก็คือการเอาชุดคำสั่งมาทำเป็น file เช่นเดียวกับ shell script และรันผ่าน cmd.exe

โดยปกติแล้ว Unix หรือ Linux ตั้งแต่เริ่มติดตั้งมักจะรวมเอา Korn Shell (ksh) ติดมาให้ตั้งแต่แรก รวมถึง shell รุ่นแรกๆเช่น Bourne Shell (sh) , C Shell (csh) นอกจากนี้ยังมี remote shell (rsh) หรือ secure shell (ssh) ที่ใช้ในการ remote ควบคุมจากภายนอกระบบ และยังมี shell อื่นๆอีกมากที่ผลิตออกมาให้ใช้งาน เช่น ash, msh, ysh, zsh, psh และ osh ซึ่งแต่ละตัวก็ถูกพัฒนาขึ้นจากการเอาความสามารถของภาษา program อื่นมาร่วมด้วย

 

ความสามารถของ Shell Script คือ

1. เป็นตัวย่อคำสั่ง

Shell script ช่วยให้ง่ายต่อการใช้งานระบบมากขึ้น ด้วยการกำหนดค่า environment รวมถึง คำสั่งต่างที่ต้องทำ รวมเข้าไปใว้ใน script เดียวแต่ยังทำงานเหมือนคำสั่ง unix ปกติ เช่น shell script สำหรับการแสดงข้อมูล file (ls) แต่ทำการล้างข้อมูลบน screen ก่อน (clear)

#!/bin/sh

clear
ls -al

 

2. รวบรวมชุดคำสั่ง

งานที่ต้องรันคำสั่งซ้ำๆกันหลายครั้ง หรือ batch job สามารถรวบรวมเข้าเป็น Shell script เพื่อให้ระบบค่อยๆทำงานทีละชุดคำสั่งไปเรื่อยๆเอง แทนที่จะต้องมาคอยรันคำสั่งเองที่ละบรรทัด ตัวอย่างเช่น directory ที่มีข้อมูล source code C ที่เราต้องทำการ complie ที่ละ file เราสามารถใช้ shell script ของ C shell ในการช่วยสร้าง compile file ให้อัตโนมัติ

#!/bin/csh
echo compiling...
cc -c foo.c
cc -c bar.c
cc -c qux.c
cc -o myprog foo.o bar.o qux.o
echo done.

 

3. การใช้งานทั่วไป

นอกจาก batch job ที่ทำงานแบบซ้ำๆแล้ว เราสามารถนำเอา shell loop มาใช้ทำงานให้มีความสะดวกยิ่งขึ้น

#!/bin/bash
for jpg; do                                  # use $jpg in place of each filename given, in turn
    png="${jpg%.jpg}.png"                    # construct the PNG version of the filename by replacing .jpg with .png
    echo converting "$jpg" ...               # output status info to the user running the script
    if convert "$jpg" jpg.to.png ; then      # use the convert program (common in Linux) to create the PNG in a temp file
        mv jpg.to.png "$png"                 # if it worked, rename the temporary PNG image to the correct name
    else                                     # ...otherwise complain and exit from the script
        echo 'jpg2png: error: failed output saved in "jpg.to.png".' >&2
        exit 1
    fi                                       # the end of the "if" test construct
done                                         # the end of the "for" loop
echo all conversions successful              # tell the user the good news
exit 0

 

ข้อดีและข้อเสียของ Shell Script

หลังจากเราทราบความสามารถของ Shell Script คืออะไร ไปมั่งแล้ว จะเห็นว่าข้อดีหลักๆเลยคือการใช้งานค่อนข้างง่ายเพราะทำงานด้วยคำสั่งแบบเดียวกับ command line ที่ใช้งาน รวมถึง programmer เองก็ไม่ต้องสับสนในเรื่องการใช้ syntax และยังง่ายต้องการ debug แต่ในข้อดีที่หลายก็มักมีข้อเสียตามมา เช่น การทำงานที่ผิดพลาดหรือไม่ถูกต้องตามความต้องการ จากการพิมพ์ผิด ยกตัวอย่างเช่นการใส่คำสั่งลบ directory ใน path ที่ทำงานอยู่ ลงไปใน Shell Script ด้วย rm -rf * / ซึ่งในความเป็นจริงเราต้องการที่จะใช้ rm -rf */ จะเห็นว่าต่างกันเพียงแค่มี space เพิ่มขึ้นมาแต่ผลลัพธ์กลับกลายเป็นการลบ directory ทิ้งบน root ทั้งหมด นำมาซึ่งความเสียหายที่ใหญ่หลวงมาก

 

บทต่อไปคือ การเขียน Shell Script เบื้องต้น หลักการทำงาน และ เงื่อนไขการใช้

 

 

Reference

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://en.wikipedia.org

3 Thoughts to “Shell Script คืออะไร Shell script คือ ภาษา programming ที่ใช้บน unix linux”

Leave a Reply