Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีลบไดเรกทอรีใน Linux

วิธีลบไดเรกทอรีใน Linux

มีหลายวิธีในการลบไดเรกทอรีใน Linux สามารถทำได้ทั้งแบบกราฟิกจาก desktop environment และจากบรรทัดคำสั่งโดยตรง ทั้งสองวิธีมีประสิทธิภาพเท่ากัน

วิธีกราฟิกการลบไดเรกทอรีใน Linux

ทุก desktop environment (และ file manager) แตกต่างกันเล็กน้อย บทความนี้เดินทางผ่านขั้นตอนโดยใช้ Budgie กับ Nemo เป็น manager แต่กระบวนการประมาณเหมือนกันทุก desktop

วิธีลบไดเรกทอรีใน Linux

เปิด file manager ไปที่ตำแหน่งของไดเรกทอรีที่ต้องการลบ เมื่อเจอแล้ว คลิกขวาที่ไดเรกทอรีเพื่อเปิดเมนูการกระทำที่พร้อมใช้งาน ขึ้นอยู่กับ environment อาจเห็นทั้ง "Delete" และ "Move to Trash" หรือแค่ "Move to Trash" การย้ายไป Trash ปลอดภัยกว่า เพราะกู้คืนได้หากทำผิด คลิก "Move to Trash"

File manager บางครั้งถามยืนยันว่าต้องการลบโฟลเดอร์จริงๆ ยืนยันว่าต้องการ ไดเรกทอรีจะย้ายจากตำแหน่งเดิมไปปรากฏในโฟลเดอร์ Trash แทน ยังเหลือขั้นตอนสุดท้ายเพื่อลบถาวร!

วิธีลบไดเรกทอรีใน Linux

หากแน่ใจว่าไม่ต้องการไดเรกทอรีที่ลบไป ให้เปิด Trash จะเห็นโฟลเดอร์อยู่ที่นั่น และสามารถเข้าไปดูเนื้อหาได้

หากไม่มีอะไรที่ต้องการ สามารถคลิกขวาที่โฟลเดอร์เพื่อลบถาวร หรือคลิกที่พื้นที่ว่างในไดเรกทอรีเพื่อเปิดเมนูที่มีตัวเลือก empty trash ใน Nemo มีปุ่ม "Empty Trash" ใกล้มุมขวาบนของหน้าต่าง (แสดงในภาพ) ทำอย่างไรก็ได้ จำไว้ว่าไม่สามารถ undo ได้ ไดเรกทอรีจะไม่กลับมา

การใช้บรรทัดคำสั่งลบไดเรกทอรีใน Linux

มีวิธีโดยตรงกว่านี้คือใช้คำสั่ง rm ซึ่งลบทั้งไฟล์และไดเรกทอรีได้

ประโยชน์คือควบคุมระบบลบไฟล์ได้มากขึ้น หรือใช้เมื่อ file manager เข้าถึงไม่ได้

เพื่ออธิบายให้เข้าใจเต็มที่ ให้เปิดเทอร์มินัลและไปที่ที่ปลอดภัยเพื่อทดสอบคำสั่งต่างๆ ไดเรกทอรี Documents ใน home folder ควรเพียงพอ

cd ~/Documents
วิธีลบไดเรกทอรีใน Linux

~ เป็นสัญลักษณ์แทน home directory

เริ่มด้วยการสร้างโฟลเดอร์ด้วย mkdir Test ลองลบด้วย rm Test

วิธีลบไดเรกทอรีใน Linux

ไม่ได้ผลใช่ไหม?

แม้ manual ของ rm จะอธิบายฟังก์ชันว่า "remove files or directories" แต่มีข้อจำกัดเล็กน้อย: คำสั่งเพียงตัวเดียวจะไม่ ลบไดเรกทอรี

เพื่อลบไดเรกทอรี ต้องรันคำสั่งใน recursive mode ด้วยฟลาก -r ไดเรกทอรีมักเป็นบ้านของไฟล์เล็กๆ ทำให้ฟลากนี้จำเป็น ก่อนจะปลื้ม โปรดทราบว่า بعض Linux distros จะ prompt ก่อนลบไดเรกทอรี

เนื่องจากแน่ใจว่าจะลบ Test directory ต้องใช้ฟลาก -f เพื่อบังคับให้ลบโดยไม่ prompt คำสั่งสุดท้ายควรเป็น:

rm -rf Test
วิธีลบไดเรกทอรีใน Linux

ลองอีกครั้ง แต่คราวนี้ใส่ไฟล์สัก 몇 ไฟล์ใน Test ทำได้ง่ายด้วย file manager แต่เราอยู่ในเทอร์มินัลอยู่แล้ว ทำให้สนุกกับคำสั่งอื่นๆ ที่อาจมีประโยชน์ภายหลัง

mkdir Test
cd Test
touch file1.txt file2.txt file3.txt file4.txt
cd ..
rm -rf Test
วิธีลบไดเรกทอรีใน Linux

ดูเยอะ แต่สิ่งที่ทำง่ายมาก สร้างไดเรกทอรี "Test" สั่ง shell ไปที่ไดเรกทอรี สร้างไฟล์ 4 ไฟล์ .. หลัง cd สั่ง shell กลับขึ้นหนึ่งระดับไปยัง parent ของ Test (คือ Documents folder)

คำสั่งสุดท้ายทำ recursive forced deletion ของ Test และไฟล์ทั้งหมดภายใน นี่คือเหตุผลที่ต้องใช้ฟลาก -r เมื่อลบไดเรกทอรี

มีรายละเอียดมากกว่าที่มองเห็น

ส่วนใหญ่ ฟลาก -r และ -f ใน rm คือสิ่งที่ใช้ส่วนใหญ่เมื่อพิมพ์คำสั่งในเทอร์มินัล ฟลากที่มีประโยชน์อื่นๆ:

-i – Prompt ก่อนลบแต่ละไฟล์ เหมาะเมื่อลบแบบ recursive โฟลเดอร์ที่มีไฟล์ที่อาจสำคัญหรือไม่จำได้ ตอนยืนยันพิมพ์ y หากต้องการเก็บพิมพ์ n การเก็บไฟล์ระหว่าง recursive removal อาจหยุดกระบวนการ ตัวอย่าง:

rm -ri /home/user/Database.
วิธีลบไดเรกทอรีใน Linux

-d – ลบไดเรกทอรีก็ต่อเมื่อว่างเปล่า ฟลากสำคัญเมื่อต้องการล้างโฟลเดอร์ที่ไม่เคยใส่ของ มาก่อนจะเขียนสคริปต์ลบโฟลเดอร์ว่างทั้งหมดในพื้นที่เฉพาะของดิสก์ หากแค่พิมพ์คำสั่งในเทอร์มินัล ไม่ค่อยใช้ฟลากนี้ ตัวอย่าง:

rm -d /home/user/Database/UID01
วิธีลบไดเรกทอรีใน Linux

-v – รัน rm ใน verbose mode ฟลากนี้ช่วย troubleshoot ดูว่า rm บอกอะไรแต่ละขั้นตอนขณะพยายาม execute คำสั่ง หากมีอะไรไม่ถูกต้อง ใช้ฟลากนี้เดินดูกระบวนการ ตัวอย่าง:

rm -rv /home/user/Database
วิธีลบไดเรกทอรีใน Linux

--version – แสดงเวอร์ชันของ rm ที่รันอยู่ อาจไม่เคยต้องใช้ แต่มีไว้เผื่ออยากทราบว่าเป็นเวอร์ชันล่าสุดหรือไม่

วิธีลบไดเรกทอรีใน Linux

อีกคำสั่งหนึ่งที่ควรรู้

ไม่มีบทความเรื่องลบไฟล์ใน Linux สมบูรณ์หากไม่พูดถึง rmdir มันเป็นโคลนของ rm -d พร้อมฟลากที่มีประโยชน์เฉพาะตัว เนื่องจาก rmdir ลบได้เฉพาะ empty directories ผู้ใช้ส่วนใหญ่ไม่สนใจ แต่มีประโยชน์มากในสคริปต์เมื่อต้องการเปลี่ยนผ่านไดเรกทอรีจำนวนมากและลบที่ว่างเปล่าทั้งหมดให้เร็วที่สุด

ฟลากที่น่าสนใจของ rmdir คือ -p ซึ่งลบ parent directories ทั้งหมดของ empty directory หากพวกมันว่างเปล่าด้วย สคริปต์ใช้ได้เพื่อไปถึงจุดสูงสุดของลำดับชั้นไฟล์และลบ parent ทั้งหมดของ empty folders เพื่อ cleanup rm -d จำกัดในกรณีนี้ เพราะลบไดเรกทอรีก็ต่อเมื่อว่างในขณะนั้น แต่ไม่สแกน parent directory หลังลบ child

คำถามที่พบบ่อย

1. ได้ "permission denied" ต้องทำไง?

หากมีปัญหา permission ตอนลบสิ่งใดสิ่งหนึ่ง ตรวจสอบก่อนว่าไม่ได้พยายามลบสิ่งที่จำเป็นต่อระบบหรือแอปที่ใช้ หลังแน่ใจว่าแค่ลบไฟล์/ไดเรกทอรีที่ไม่จำเป็น ไปที่เทอร์มินัลพิมพ์ sudo นำหน้าคำสั่ง rm ควรข้ามข้อจำกัด permission ได้

ไม่สะดวกใช้บรรทัดคำสั่ง? File manager หลายตัวที่ติดตั้งมากับ Linux distros ควรช่วยได้ คลิกขวาที่พื้นที่ว่างใน file view ควรเห็นตัวเลือก "Open as root" หรือ "Open as Administrator" คลิกนั้น ใส่รหัสผ่าน หน้าต่างใหม่จะเปิดด้วยสิทธิ์สูง ทำอะไรก็ได้ตามใจ

2. rm ปลอดภัยไหม?

ใช่และไม่ใช่ rm เป็นแค่คำสั่งลบ ไม่ถามว่าฟิล/ไดเรกทอรีที่ลบเป็น sensitive หรือไม่ ตราบใดที่แน่ใจว่าไม่ได้ลบสิ่งที่ไม่ควรลบ rm จึงปลอดภัย

โดยทั่วไป จะไม่ทำให้ OS มีปัญหาหากอยู่ในขอบเขต "/home" แต่เมื่อข้ามขอบเขตนั้น ไม่ได้อยู่ในทะเลสงบแล้ว ควรระมัดระวังทุกขั้นตอน

3. ใช้ rm หรือ rmdir ใน OS อื่นได้ไหม?

ขึ้นอยู่กับ OS ที่พูดถึง rm ของ macOS คล้าย Linux มาก ไม่แปลกเพราะทั้งคู่มาจาก UNIX เดิม

แต่ Windows ต่างออกไป ไม่มีคำสั่งเดียวสำหรับลบไฟล์และไดเรกทอรี แทนที่จะแยกเป็นสองกลุ่ม ชุดคำสั่ง Windows command line รู้จัก rd ลบไดเรกทอรี และ del ลบไฟล์เดี่ยว ฟลากของ rd ใน manual page มีความคล้ายคลึงกับ rm -rf ของ Linux

สรุป

ด้วยข้อมูลทั้งหมดที่ให้ไว้ หวังว่าคุณจะออกมาด้วยความมั่นใจในการใช้เทอร์มินัลและ file manager ล้างไดรฟ์ให้สะอาดจากความวุ่นวาย แค่จงระมัดระวังและก้าวแต่ละขั้นด้วยความเคารพต่ออำนาจที่คุณ握在手中 ไม่ต้องรีบร้อน เทอร์มินัลและ file manager ไม่ไปไหนหรอก!

อ่านต่อเพื่อเรียนรู้ วิธีติดตั้ง Linux บน Windows ด้วย WSL และ การรีเซ็ตรหัสผ่าน root ใน Linux