แนะนำและทบทวนความรู้

Bash Scripting เบื้องต้น

Alex Scriven

Data Scientist

แนะนำคอร์ส

คอร์สนี้จะครอบคลุม:

  • การเปลี่ยนจาก command-line มาเป็น Bash script
  • ตัวแปรและชนิดข้อมูลใน Bash scripting
  • คำสั่งควบคุม
  • ฟังก์ชันและการทำให้สคริปต์ทำงานอัตโนมัติ
Bash Scripting เบื้องต้น

ทำไมต้องใช้ Bash scripting? (Bash)

ทำไมต้องใช้ Bash?

  • Bash ย่อมาจาก 'Bourne Again Shell' (ชื่อเล่นที่มีมุก)

  • พัฒนามาตั้งแต่ยุค 80 แต่ยังคงเป็น shell ยอดนิยมในปัจจุบัน และเป็นค่าเริ่มต้นในระบบ Unix หลายระบบรวมถึง Mac

  • Unix คือรากฐานของอินเทอร์เน็ต! (ใช้รัน ML Models และ Data Pipelines)

    • AWS, Google และ Microsoft ต่างมี CLI สำหรับผลิตภัณฑ์ของตน
Bash Scripting เบื้องต้น

ทำไมต้องใช้ Bash scripting? (scripting!)

แล้วทำไมต้องเขียน Bash script?

  • รันคำสั่ง shell ได้ง่ายขึ้น (ไม่ต้องคัดลอกและวางซ้ำๆ อีกต่อไป!)
  • มีโครงสร้างการเขียนโปรแกรมที่ทรงพลัง
Bash Scripting เบื้องต้น

ความรู้ที่ควรมี

 

คอร์สนี้คาดว่าผู้เรียนมีความรู้พื้นฐานดังนี้

  • เข้าใจว่า command-line (terminal, shell) คืออะไร
  • เคยใช้คำสั่งพื้นฐาน เช่น cat, grep, sed เป็นต้น

ถ้าลืมไปบ้างแล้วไม่ต้องกังวล เดี๋ยวเราทบทวนกัน!

Bash Scripting เบื้องต้น

ทบทวนคำสั่ง shell

คำสั่ง shell ที่สำคัญ:

  • (e)grep กรองข้อมูลตาม regex pattern
  • cat แสดงเนื้อหาไฟล์ต่อกันทีละบรรทัด
  • tail \ head แสดงเฉพาะบรรทัดท้ายหรือต้นตามจำนวน -n ที่กำหนด
  • wc นับคำหรือบรรทัด (ด้วย flag -w -l)
  • sed แทนที่สตริงโดยจับคู่ pattern
Bash Scripting เบื้องต้น

ทบทวน REGEX

'Regex' หรือ regular expressions เป็นทักษะสำคัญสำหรับ Bash scripting

มักต้องใช้ในการกรองไฟล์ ข้อมูลในไฟล์ จับคู่ argument และอื่นๆ อีกมาก ควรทบทวนให้คล่อง

ทดสอบ regex ได้ที่เว็บไซต์ช่วยเหลือ เช่น regex101.com

Bash Scripting เบื้องต้น

ฝึกใช้คำสั่ง shell

ลองทบทวนคำสั่ง shell ด้วยตัวอย่าง

สมมติมีไฟล์ข้อความ fruits.txt ที่มีข้อมูล 3 บรรทัด:

banana
apple
carrot

ถ้ารัน grep 'a' fruits.txt จะได้ผลลัพธ์:

banana
apple
carrot
Bash Scripting เบื้องต้น

ฝึกใช้คำสั่ง shell

แต่ถ้ารัน grep 'p' fruits.txt จะได้:

apple

วงเล็บเหลี่ยมใช้สำหรับจับคู่ชุดตัวอักษร เช่น [eyfv] และการใช้ ^ จะกลับเป็น inverse set (ไม่ใช่ ตัวอักษร/ตัวเลขเหล่านั้น)

ดังนั้นถ้ารัน grep '[pc]' fruits.txt จะได้:

apple
carrot
Bash Scripting เบื้องต้น

ฝึกใช้คำสั่ง shell

คุ้นเคยกับ 'pipes' ใน terminal อยู่แล้ว ถ้าไฟล์มีผลไม้จำนวนมาก ใช้ sort | uniq -c ได้เลย

  • คำสั่งแรกเรียงตามตัวอักษร คำสั่งที่สองนับจำนวน
  • ถ้าต้องการเฉพาะ n อันดับแรก ต่อ pipe ไปที่ wc -l และใช้ head
cat new_fruits.txt | sort | uniq -c | head -n 3
  14 apple
  13 bannana
  12 carrot
Bash Scripting เบื้องต้น

มาฝึกกันเถอะ!

Bash Scripting เบื้องต้น

Preparing Video For Download...