On this page
ระบบปฏิบัติการ, ไฟล์ & Command Line
OS จัดการฮาร์ดแวร์ให้โปรแกรมใช้, ระบบไฟล์ทำงานอย่างไร และคำสั่ง terminal พื้นฐานที่นักพัฒนาต้องรู้
ระหว่างฮาร์ดแวร์กับโปรแกรมที่เราใช้ มีตัวกลางสำคัญคือระบบปฏิบัติการ (OS) และนักพัฒนาทุกคนต้องคุ้นเคยกับการสั่งงานผ่าน command line บทย่อยนี้ปูพื้นทั้งสองเรื่อง
ระบบปฏิบัติการ (Operating System) คืออะไร
OS เช่น Windows, macOS, Linux คือโปรแกรมตัวกลางที่จัดการฮาร์ดแวร์ให้โปรแกรมอื่น ๆ ใช้งานได้ ถ้าไม่มี OS โปรแกรมแต่ละตัวจะต้องรู้วิธีคุยกับฮาร์ดแวร์ทุกชิ้นเอง ซึ่งยุ่งยากมาก
- จัดสรร RAM ให้แต่ละโปรแกรม ไม่ให้แย่งกัน
- จัดคิวให้ CPU ว่าจะทำงานของโปรแกรมไหนเมื่อไหร่
- จัดการไฟล์และโฟลเดอร์ใน storage
- ควบคุมการเข้าถึงอุปกรณ์ (จอ คีย์บอร์ด เครือข่าย)
เมื่อเปิดโปรแกรมหนึ่งตัว OS จะสร้าง "process" ขึ้นมา — คือโปรแกรมที่กำลังรันพร้อมหน่วยความจำของมัน OS สลับ CPU ไปมาระหว่าง process หลายตัวเร็วมากจนเหมือนทำงานพร้อมกัน (multitasking)
ระบบไฟล์ (File System)
ข้อมูลใน storage จัดเก็บเป็นไฟล์ (file) และจัดกลุ่มในโฟลเดอร์ (folder/directory) ซ้อนกันเป็นลำดับชั้นเหมือนต้นไม้ ตำแหน่งของไฟล์ระบุด้วย path (เส้นทาง)
/Users/aphisit/ <- โฟลเดอร์ผู้ใช้
├── Documents/
│ └── project/
│ ├── main.py <- ไฟล์โค้ด
│ └── notes.txt
└── Pictures/
└── photo.jpg
path ของ main.py:
/Users/aphisit/Documents/project/main.pyนามสกุลไฟล์ (.py, .txt, .jpg) บอกชนิดของไฟล์ ช่วยให้ OS และโปรแกรมรู้ว่าควรเปิดด้วยอะไร เช่น .py คือไฟล์ Python, .txt คือข้อความธรรมดา
Absolute path vs Relative path (ต้องแยกให้ออก)
path มี 2 แบบ: absolute เริ่มจากรากของระบบ (ชี้ตำแหน่งเดียวเสมอ) ส่วน relative อ้างจากโฟลเดอร์ปัจจุบันที่เรายืนอยู่ — เป็นเรื่องที่มือใหม่งงบ่อยเวลารันโปรแกรมแล้ว "หาไฟล์ไม่เจอ"
absolute (เต็ม): /Users/aphisit/Documents/project/main.py
relative (จากในโฟลเดอร์ project):
main.py <- ไฟล์ในโฟลเดอร์ปัจจุบัน
./main.py <- . = โฟลเดอร์ปัจจุบัน (เหมือนกัน)
../notes.txt <- .. = โฟลเดอร์แม่ (ถอยขึ้นหนึ่งชั้น)
data/users.csv <- เข้าโฟลเดอร์ย่อย dataมักเกิดเพราะใช้ relative path แต่รันโปรแกรมจากโฟลเดอร์อื่น (path อ้างจาก "ที่ที่รัน" ไม่ใช่ที่ไฟล์โค้ดอยู่) — ตรวจด้วย pwd ว่าตอนรันอยู่โฟลเดอร์ไหน หรือใช้ absolute path เมื่อไม่แน่ใจ
Command Line (Terminal)
นอกจากคลิกเมาส์ เรายังสั่งงานคอมพิวเตอร์ด้วยการพิมพ์คำสั่งใน terminal ได้ เครื่องมือสายพัฒนาจำนวนมาก (เช่น Git, การรันโปรแกรม, การติดตั้ง package) ใช้ผ่าน terminal ทักษะนี้จึงสำคัญมาก
# คำสั่ง terminal พื้นฐาน (macOS / Linux)
pwd # บอกว่าตอนนี้อยู่โฟลเดอร์ไหน (print working directory)
ls # แสดงไฟล์ในโฟลเดอร์ปัจจุบัน
cd project # เข้าไปในโฟลเดอร์ชื่อ project (change directory)
cd .. # ถอยออกไปโฟลเดอร์แม่
mkdir test # สร้างโฟลเดอร์ใหม่ชื่อ test
touch a.py # สร้างไฟล์ว่างชื่อ a.py
python a.py # รันไฟล์ Python| คำสั่ง | ทำอะไร | Windows (cmd) เทียบเท่า |
|---|---|---|
| pwd | บอกโฟลเดอร์ปัจจุบัน | cd |
| ls | แสดงไฟล์ | dir |
| cd <ชื่อ> | เข้าโฟลเดอร์ | cd <ชื่อ> |
| mkdir <ชื่อ> | สร้างโฟลเดอร์ | mkdir <ชื่อ> |
| cat <ไฟล์> | แสดงเนื้อหาไฟล์ | type <ไฟล์> |
| cp <a> <b> | ก็อปไฟล์ | copy |
| mv <a> <b> | ย้าย/เปลี่ยนชื่อ | move / ren |
| rm <ไฟล์> | ลบไฟล์ (ระวัง! ไม่มีถังขยะ) | del |
ใน terminal คำสั่ง rm ลบไฟล์ทิ้งถาวรทันที ไม่ไปลง Recycle Bin/Trash โดยเฉพาะ rm -rf <โฟลเดอร์> ที่ลบทั้งโฟลเดอร์ — ตรวจให้ดีก่อน Enter ทุกครั้ง นี่คือคำสั่งที่นักพัฒนาเผลอลบงานตัวเองบ่อยที่สุด
ถ้าใช้ Claude Code อยู่ พิมพ์ขึ้นต้นด้วย ! ตามด้วยคำสั่ง (เช่น !ls) เพื่อรันใน session ได้เลย แต่ตอนนี้แค่เข้าใจแนวคิดและจำคำสั่งพื้นฐานก็พอ ฝึกใช้จริงตอนติดตั้งเครื่องมือพัฒนา
สรุปหัวข้อนี้
- OS (Windows/macOS/Linux) คือตัวกลางจัดการฮาร์ดแวร์ให้โปรแกรมใช้ — RAM, CPU, ไฟล์, อุปกรณ์
- process = โปรแกรมที่กำลังรัน; OS สลับ CPU ให้หลาย process จนเหมือนทำงานพร้อมกัน
- ไฟล์จัดในโฟลเดอร์เป็นลำดับชั้น ระบุตำแหน่งด้วย path; นามสกุลบอกชนิดไฟล์
- command line สั่งงานด้วยการพิมพ์ — pwd, ls, cd, mkdir คือพื้นฐานที่ต้องรู้
1) เปิด terminal (Terminal บน Mac / Command Prompt บน Windows) ลองพิมพ์ pwd และ ls 2) สร้างโฟลเดอร์ชื่อ practice ด้วย mkdir แล้ว cd เข้าไป 3) เขียน path เต็มของไฟล์ใดไฟล์หนึ่งในเครื่องคุณ 4) ไฟล์ .py, .jpg, .txt ต่างกันอย่างไร