Blog #1 : การสร้าง Shell Script ใน Linux
shell script คืออะไรและการใช้งาน

Benefit of Shell Script?
เมื่อนักพัฒนา (Developer) ต้องการแก้ปัญหาการทำงานซ้ำๆ นักพัฒนาสามารถเขียนระบบ Automated เพื่อช่วยให้ทำงานเร็วขึ้น อีกทั้งคนในทีมสามารถนำไปใช้ได้ง่ายขึ้น หรือ การ install environment สำหรับ run project นั้นๆ
ตัวอย่างเช่น เราสามารถ Set Environment ของ Project นั้นๆ เราสามารถเขียน Script เพื่อทำการ install แบบ Automated เพื่อทีเราไม่ต้องเสียเวลาในการทำ pip install ทีละ package เป็นต้น
What is “Shell Script” ?
ก่อนอื่นเรามาทำเข้าใจโครงสร้างพื้นฐานของ Unix ซึ่งเป็น Core ของ OS ต่างๆ ดังนี้
- Linux Distro คือ CentOS, Oracle RedHat, Ubuntu, Amazon linux และ Android
- Darwin คือ Core OS ของ Apple ทุกตัว ได้แก่ iOS, macOS, watchOS และ tvOS
Unix เกิดขึ้นในปี ค.ศ. 1970 โดย MIT และ Bell Labs จุดประสงค์เริ่มแรกของ Unix คือเป็น OS ของ GE-645 โดยชื่อ Unix นั่นแปลงมาจากคำว่า Unics (ย่อมาจาก Uniplexed Information and Computing Service) โดยจุดเด่นของ Unix คือถูกออกแบบตั้งแต่ต้น portable, multi-tasking และสามารถถูกใช้งานได้หลาย User ได้ในเวลาเดียวกัน ซึ่งคุณสมบัติของ Multi-user นี้ทำให้ Unix เป็นที่นิยมในการใช้งานบนเครื่อง Mainframe มากกว่า OS ของ Microsoft
Unix Component :
องค์ประกอบหลักของ Unix นั้น แบ่งเป็น 4 ส่วน ได้แก่

- Kernel: แกนกลางของระบบ ควบคุมการทำงานภายใน เชื่อมต่อกับ Hardware และ I/O
- File System: ระบบไฟล์จัดเก็บข้อมูล (Files & Directory)
- Shell: คือ Command interpreter ทำหน้าที่เป็นตัวกลางระหว่าง user กับ Kernel
- Utilities: คำสั่งที่ผู้ใช้สามารถเรียกใช้ได้บน Shell

ดังนั้น Shell คือโปรแกรมหนึ่งในระบบ Unix ที่ทำหน้าที่ interface เชื่อมต่อระหว่าง User กับ Kernel ซึ่ง user สามารถสั่งงาน Unix ผ่าน shell เท่านั้น อีกทั้งโปรแกรม Shell ยังคุณสมบัติสามารถ Programming (หรือ Shell Programming Language) ได้ ทำให้ user สามารถนำคำสั่งต่างของ Shell มาเขียนโปรแกรมและสามารถเก็บเป็นไฟท์ เรียกว่า Shell Script
How to writing “Shell Script” ?
เริ่มต้นจากการสร้างไฟท์ .sh ซึ่งสามารถสร้างจาก Vim ได้ หรือ ถ้าไม่รู้จัก Vim ไม่เป็นไรครับ เราสามารถจาก create file ได้แล้วตั้งเป็นนามสกุล .sh
Terminal: vim build.shการเขียน Shell Script หลักๆ ที่ผมใช้บ่อยมีอยู่ 2 แบบ คือ
- Bourne shel (.sh): ใช้สำหรับการ run การรันคำสั่งบน shell หรือ Terminal เป็นคำสั่งย่อๆ เช่น ls, cd .. , mkdir <filename>, python app.py เป็นต้น
#!/bin/sh
clear
ls -al- Bourne-Again shell (bash): เหมาะกับการใช้งานทั่วไปซึ่งสามารถ Programming ได้และรวมความสามารถการสั่ง command line ได้ด้วย (หรือก็คือการนำความสามารถ#!/bin/sh มาใช้งานร่วมด้วย)
#!/bin/bash
HELLO=Hello
function hello {
local HELLO=World
echo $HELLO
if [ "foo" = "foo" ]; then
echo expression evaluated as true
else
echo expression evaluated as false
}
echo $HELLO
hello
