ตัวอย่างเป็นไฟล์ .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.