rmdir
บทนี้สอนว่า `rmdir` ใช้ลบโฟลเดอร์ที่ว่างอยู่เท่านั้น ถ้าโฟลเดอร์ยังมีไฟล์หรือโฟลเดอร์ย่อยอยู่จะลบไม่ได้ในกรณีพื้นฐาน และต้องระวังเพราะเป็นการเปลี่ยนข้อมูลจริง
บทนี้สอนว่า `rmdir` ใช้ลบโฟลเดอร์ที่ว่างอยู่เท่านั้น ถ้าโฟลเดอร์ยังมีไฟล์หรือโฟลเดอร์ย่อยอยู่จะลบไม่ได้ในกรณีพื้นฐาน และต้องระวังเพราะเป็นการเปลี่ยนข้อมูลจริง
`rmdir` คือคำสั่งสำหรับลบโฟลเดอร์ (directory) ที่ว่างอยู่ จุดสำคัญคือคำว่า "ว่าง" หมายถึงไม่มีไฟล์และไม่มีโฟลเดอร์ย่อยอยู่ข้างใน ถ้าโฟลเดอร์ไม่ว่าง `rmdir` จะไม่ลบให้ และจะแจ้ง error
ลองนึกว่าโฟลเดอร์คือกล่องเก็บของ `rmdir` เหมือนการทิ้งกล่องที่ "ไม่มีของอยู่แล้ว" เท่านั้น ถ้าข้างในยังมีของอยู่ เราควรหยิบของออกหรือจัดการข้อมูลก่อน แล้วค่อยลบกล่อง
ตัวอย่างนี้แสดงทั้งกรณีลบได้ (โฟลเดอร์ว่าง) และลบไม่ได้ (โฟลเดอร์ไม่ว่าง) เพื่อให้เห็นความต่างชัดเจน
ถ้าโฟลเดอร์ว่าง `rmdir` จะลบได้ แต่ถ้าไม่ว่างระบบจะป้องกันด้วย error
pwd
/home/student/workspace
mkdir temp
Created directory "/home/student/workspace/temp".
ls
temp/ README.md
rmdir temp
Removed directory "/home/student/workspace/temp".
mkdir data
Created directory "/home/student/workspace/data".
touch data/info.txt
Created file "/home/student/workspace/data/info.txt".
rmdir data
Directory "/home/student/workspace/data" is not empty.| คำสั่ง | หน้าที่ | ต่างจาก `rmdir` อย่างไร |
|---|---|---|
| `rmdir` | ลบโฟลเดอร์ว่าง | คำสั่งหลักของบทนี้ |
| `mkdir` | สร้างโฟลเดอร์ใหม่ | ทิศทางตรงข้ามกับ `rmdir` |
| `rm` | ลบไฟล์ | ใช้กับไฟล์ ไม่ใช่คำสั่งหลักสำหรับโฟลเดอร์ว่าง |
| `ls` | แสดงรายการไฟล์และโฟลเดอร์ | ใช้ตรวจสถานะก่อน/หลังลบ แต่ไม่ได้ลบเอง |
ฝึกใช้ `rmdir` ในสถานการณ์จริง ตั้งแต่การลบโฟลเดอร์ว่าง การตรวจผลด้วย `ls` และ การเปรียบเทียบกรณีที่ลบไม่ได้เพราะโฟลเดอร์ไม่ว่าง
เป้าหมายคือสร้างโฟลเดอร์ `temp` แล้วลบกลับด้วย `rmdir` โจทย์: รัน `mkdir temp` แล้วตามด้วย `rmdir temp` เมื่อเสร็จ โฟลเดอร์ `temp` ต้องหายไปจากระบบไฟล์
เป้าหมายคือเห็นผลต่างก่อนและหลังลบโฟลเดอร์ว่าง โจทย์: รัน `ls` เพื่อดูรายการเดิม แล้วรัน `rmdir archive` จากนั้นรัน `ls` อีกครั้ง Lab นี้เน้นนิสัยการตรวจผลทุกครั้ง
เป้าหมายคือเห็นชัดว่าโฟลเดอร์ว่างลบได้ แต่โฟลเดอร์ไม่ว่างลบไม่ได้ โจทย์: รัน `rmdir empty-dir` แล้วลอง `rmdir filled-dir` ผลที่ต้องเข้าใจ: `empty-dir` ถูกลบ แต่ `filled-dir` ยังอยู่เพราะมีข้อมูลด้านใน