cat ใน Linux ย่อมาจาก concatenation (การต่อข้อความ/ไฟล์เข้าด้วยกัน) เป็นหนึ่งในคำสั่งที่มีประโยชน์และหลากหลายที่สุด แม้จะไม่น่ารักเท่าแมวจริง แต่ cat รองรับการทำงานกับสตริง ไฟล์ และเอาต์พุตหลายรูปแบบ
คำสั่ง cat มี 3 หน้าที่หลักเกี่ยวกับไฟล์ข้อความ:
- Create — สร้างไฟล์
- Read/Display — อ่าน/แสดงเนื้อหา
- Update/Modify — อัปเดต/แก้ไข (ผ่านการ Append)
เริ่มต้นใช้งาน
สร้างไฟล์ทดสอบ 2 ไฟล์: foo.txt และ spam.txt
สร้างไฟล์ด้วย cat > filename
cat > foo.txt
⚠ คำเตือน: หากมี foo.txt อยู่แล้ว > จะ ทับซ้อน (Overwrite) ไฟล์เดิม
หลังรันคำสั่ง จะเข้าสู่โหมดรับ Input — พิมพ์ข้อความที่ต้องการ:
FILE 1
foo
bar
baz
กด Ctrl + D เพื่อออกและสร้างไฟล์
สร้าง spam.txt แบบเดียวกัน:
cat > spam.txt
ใส่ข้อความ:
FILE 2
spam
ham
eggs
กด Ctrl + D
เพิ่มข้อความท้ายไฟล์ (Append) ด้วย >>
cat >> foo.txt
สำคัญ: >> ใช้สำหรับ Append (เพิ่มท้าย) ส่วน > ใช้สร้างใหม่/ทับซ้อน
สรุป: cat > file = สร้าง/ทับ, cat >> file = เพิ่มท้าย, Ctrl+D = จบการใส่ข้อมูล
อ่านและแสดงไฟล์ (Reading)
แสดงเนื้อหาไฟล์ — ไม่ใช้ > หรือ >>:
cat foo.txt
ผลลัพธ์:
FILE 1
foo
bar
baz
แสดงหมายเลขบรรทัดด้วย -n
cat -n foo.txt
ผลลัพธ์:
1 FILE 1
2 foo
3 bar
4 baz
ประโยชน์: รู้จำนวนบรรทัดได้เร็ว — เหมาะสำหรับการ Iterate ไฟล์ขนาดคงที่
ต่อไฟล์ (Concatenating Files)
แสดงหลายไฟล์พร้อมกัน:
cat foo.txt spam.txt
ผลลัพธ์ (แสดงต่อเนื่อง):
FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs
หมายเหตุ: คำสั่งข้างต้น แสดงอย่างเดียว ยังไม่ได้รวมเป็นไฟล์ใหม่
รวมไฟล์จริงเป็นไฟล์ใหม่
cat foo.txt spam.txt > fooSpam.txt
ตรวจสอบ:
cat fooSpam.txt
ได้เนื้อหารวมเหมือนด้านบน — ใช้ได้กับไฟล์มากกว่า 2 ไฟล์เช่นกัน
คุณสมบัติเพิ่มเติมของ cat
แสดงอักขระ不可見 ด้วย -A
หากไฟล์มีปัญหา (บรรทัดมากกว่าคาด, Error แปลกๆ) ใช้ cat -A:
- แสดงจุดสิ้นสุดบรรทัดด้วย
$ - แสดง Tab ด้วย
^I - แสดงอักขระ Non-printing อื่นๆ
ตัวอย่างเปรียบเทียบ:
cat nonPrintExample.txt
# ผลลัพธ์: อักขระแปลกๆ ไม่อ่านออก
cat -A nonPrintExample.txt
# ผลลัพธ์: ^I^I$ $ ^L$ $ ^G^H^H^H^Y^I^N^O^P^@$ ... (อ่านออกชัดเจนกว่า)
cat -A ช่วย Debug ไฟล์ที่มีอักขระซ่อน/พิเศษได้ดี
สรุป
cat > file— สร้าง/ทับไฟล์cat >> file— เพิ่มข้อความท้ายไฟล์cat file— แสดงเนื้อหาcat -n file— แสดงพร้อมหมายเลขบรรทัดcat file1 file2— แสดงหลายไฟล์ติดกันcat file1 file2 > file3— รวมไฟล์เป็นไฟล์ใหม่cat -A file— แสดงอักขระซ่อน/พิเศษ
คำสั่ง cat ดูเรียบง่ายแต่ทรงพลัง — เรียนรู้ให้คล่อง จะช่วยให้ทำงาน CLI ได้เร็วขึ้นมาก!