ตัวอย่างเป็นไฟล์ .ts นะครับ เราไปปรับใช้กันนะครับ คือไฟล์ Script ที่ใช้เพื่อค้นหาข้อความในไฟล์ที่มีนามสกุล .ts และชื่อไฟล์ที่มี component.ts ในโฟลเดอร์ src แล้วบันทึกผลลัพธ์ลงในไฟล์ resource.txt
การอธิบายโค้ด
#!/bin/bash
> resource.txt
#!/bin/bash: บรรทัดนี้บอกให้ระบบรู้ว่าใช้ Bash interpreter ในการรัน Script นี้> resource.txt: ล้างไฟล์ resource.txt หรือสร้างไฟล์ใหม่ถ้ายังไม่มี (เพื่อให้แน่ใจว่าไฟล์นี้จะมีเนื้อหาที่สดใหม่ทุกครั้งที่รัน Script )
search_pattern="boychawin.com"
search_pattern="boychawin.com": กำหนดตัวแปร search_pattern ที่เก็บข้อความที่เราต้องการค้นหา (ในที่นี้คือ boychawin.com)
find src -name "*component.ts" | while read -r file; do
echo "$file"
grep -E "$search_pattern" "$file" | grep -v '//'
done >> resource.txt
find src -name "*component.ts": ค้นหาไฟล์ทั้งหมดในโฟลเดอร์ src ที่มีชื่อที่ลงท้ายด้วย component.ts| while read -r file; do: ส่งผลลัพธ์ของคำสั่ง find ไปยังลูป while ซึ่งจะอ่านชื่อไฟล์ทีละบรรทัดecho "$file": แสดงชื่อไฟล์ปัจจุบันที่ถูกค้นพบgrep -E "$search_pattern" "$file": ใช้ grep ในการค้นหาข้อความในไฟล์ที่ตรงกับ pattern ที่กำหนด| grep -v '//': กรองผลลัพธ์เพื่อลบบรรทัดที่มีคอมเมนต์ (//)done >> resource.txt: บันทึกผลลัพธ์ทั้งหมดที่ได้จากลูปลงในไฟล์ resource.txt (ใช้ >> เพื่อเพิ่มเนื้อหาไปที่ไฟล์เดิมแทนการลบข้อมูลเดิม)
วิธีการใช้งาน
- บันทึกโค้ดเป็นไฟล์ เปิดโปรแกรมแก้ไขข้อความ (เช่น vs code) และวางโค้ดลงในไฟล์ใหม่ เช่น script.sh. ทำให้ไฟล์เป็น Executable: ใช้คำสั่งนี้เพื่อทำให้ Script สามารถรันได้:
chmod +x script.sh
- รัน Script
./script.sh
- ตรวจสอบผลลัพธ์
ผลลัพธ์ของการค้นหาจะถูกบันทึกในไฟล์ resource.txt ซึ่งจะอยู่ในไดเรกทอรีเดียวกับที่คุณรัน Script
สรุป
Script นี้จะค้นหาไฟล์ที่มีชื่อ *component.ts ภายในโฟลเดอร์ src แล้วค้นหาข้อความที่ตรงกับ boychawin.com ในแต่ละไฟล์ที่พบ และกรองบรรทัดที่มีคอมเมนต์ออก ก่อนจะบันทึกผลลัพธ์ทั้งหมดลงในไฟล์ resource.txt.