Bash Scripting เบื้องต้น
Alex Scriven
Data Scientist
คอร์สนี้จะครอบคลุม:
ทำไมต้องใช้ Bash?
Bash ย่อมาจาก 'Bourne Again Shell' (ชื่อเล่นที่มีมุก)
พัฒนามาตั้งแต่ยุค 80 แต่ยังคงเป็น shell ยอดนิยมในปัจจุบัน และเป็นค่าเริ่มต้นในระบบ Unix หลายระบบรวมถึง Mac
Unix คือรากฐานของอินเทอร์เน็ต! (ใช้รัน ML Models และ Data Pipelines)
แล้วทำไมต้องเขียน Bash script?
คอร์สนี้คาดว่าผู้เรียนมีความรู้พื้นฐานดังนี้
cat, grep, sed เป็นต้นถ้าลืมไปบ้างแล้วไม่ต้องกังวล เดี๋ยวเราทบทวนกัน!
คำสั่ง shell ที่สำคัญ:
(e)grep กรองข้อมูลตาม regex patterncat แสดงเนื้อหาไฟล์ต่อกันทีละบรรทัดtail \ head แสดงเฉพาะบรรทัดท้ายหรือต้นตามจำนวน -n ที่กำหนดwc นับคำหรือบรรทัด (ด้วย flag -w -l)sed แทนที่สตริงโดยจับคู่ pattern'Regex' หรือ regular expressions เป็นทักษะสำคัญสำหรับ Bash scripting
มักต้องใช้ในการกรองไฟล์ ข้อมูลในไฟล์ จับคู่ argument และอื่นๆ อีกมาก ควรทบทวนให้คล่อง
ทดสอบ regex ได้ที่เว็บไซต์ช่วยเหลือ เช่น regex101.com
ลองทบทวนคำสั่ง shell ด้วยตัวอย่าง
สมมติมีไฟล์ข้อความ fruits.txt ที่มีข้อมูล 3 บรรทัด:
banana
apple
carrot
ถ้ารัน grep 'a' fruits.txt จะได้ผลลัพธ์:
banana
apple
carrot
แต่ถ้ารัน grep 'p' fruits.txt จะได้:
apple
วงเล็บเหลี่ยมใช้สำหรับจับคู่ชุดตัวอักษร เช่น [eyfv] และการใช้ ^ จะกลับเป็น inverse set (ไม่ใช่ ตัวอักษร/ตัวเลขเหล่านั้น)
ดังนั้นถ้ารัน grep '[pc]' fruits.txt จะได้:
apple
carrot
คุ้นเคยกับ 'pipes' ใน terminal อยู่แล้ว ถ้าไฟล์มีผลไม้จำนวนมาก ใช้ sort | uniq -c ได้เลย
wc -l และใช้ headcat new_fruits.txt | sort | uniq -c | head -n 3
14 apple
13 bannana
12 carrot
Bash Scripting เบื้องต้น