วิธีการลบไฟล์และไดเร็กทอรีใน Linux Terminal

rm และ   rmdir คำสั่งลบไฟล์และไดเรกทอรีบน Linux, MacOS และ Unix เหมือนระบบปฏิบัติการอื่น ๆ คล้ายกับคำสั่งdel และ   deltree ใน Windows และ DOS คำสั่งเหล่านี้มีประสิทธิภาพมากและมีตัวเลือกค่อนข้างน้อย

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

วิธีการลบไฟล์ด้วย rm

กรณีที่ง่ายที่สุดคือการลบไฟล์เดียวในไดเร็กทอรีปัจจุบัน พิมพ์rmคำสั่งช่องว่างแล้วตามด้วยชื่อไฟล์ที่คุณต้องการลบ

rm file_1.txt

หากไฟล์ไม่อยู่ในไดเร็กทอรีการทำงานปัจจุบันให้ระบุเส้นทางไปยังตำแหน่งของไฟล์

rm ./path/to/the/file/file_1.txt

rmคุณสามารถส่งผ่านมากกว่าหนึ่งชื่อไฟล์ที่จะ เพื่อลบไฟล์ที่ระบุทั้งหมด

rm file_2.txt file_3.txt

สามารถใช้สัญลักษณ์แทนเพื่อเลือกกลุ่มไฟล์ที่จะลบ *แสดงให้เห็นถึงตัวละครหลายและ?แสดงให้เห็นถึงตัวเดียว คำสั่งนี้จะลบไฟล์รูปภาพ png ทั้งหมดในไดเร็กทอรีการทำงานปัจจุบัน

rm * .png

คำสั่งนี้จะลบไฟล์ทั้งหมดที่มีนามสกุลอักขระเดียว ตัวอย่างเช่นจะลบ File.1 และ File.2 แต่ไม่ใช่ File.12

rm *.?

หากไฟล์ได้รับการป้องกันการเขียนคุณจะได้รับแจ้งก่อนที่ไฟล์จะถูกลบ คุณต้องตอบกลับyหรือnแล้วกด“ Enter”

เพื่อลดความเสี่ยงในการใช้โดยใช้rmสัญลักษณ์แทนให้ใช้-iตัวเลือก (โต้ตอบ) คุณต้องยืนยันการลบไฟล์แต่ละไฟล์

rm -i * .dat

-f (แรง) ตัวเลือกที่ตรงข้ามของการโต้ตอบ ไม่แจ้งให้ยืนยันแม้ว่าไฟล์จะได้รับการป้องกันการเขียนก็ตาม

rm -f ชื่อไฟล์

วิธีการลบไดเรกทอรีด้วย rm

ในการลบไดเร็กทอรีว่างให้ใช้-d อ็อพชัน (ไดเร็กทอรี) คุณสามารถใช้สัญลักษณ์แทน ( *และ?) ในชื่อไดเรกทอรีได้เช่นเดียวกับชื่อไฟล์

rm -d ไดเร็กทอรี

การระบุชื่อไดเร็กทอรีมากกว่าหนึ่งชื่อจะลบไดเร็กทอรีว่างทั้งหมดที่ระบุ

rm -d ไดเร็กทอรี 1 ไดเร็กทอรี 2 / path / to / ไดเร็กทอรี 3

หากต้องการลบไดเร็กทอรีที่ไม่ว่างให้ใช้-rตัวเลือก (เรียกซ้ำ) เพื่อความชัดเจนสิ่งนี้จะลบไดเร็กทอรีและไฟล์และไดเร็กทอรีย่อยทั้งหมดที่มีอยู่ภายใน

rm -r ไดเร็กทอรี 1 ไดเร็กทอรี 2 ไดเร็กทอรี 3

หากไดเรกทอรีหรือไฟล์มีการป้องกันการเขียนคุณจะได้รับแจ้งให้ยืนยันการลบ ในการลบไดเร็กทอรีที่ไม่ว่างเปล่าและเพื่อระงับพร้อมต์เหล่านี้ให้ใช้อ็อพชัน-r(เรียกซ้ำ) และ-f(บังคับ) ร่วมกัน

rm -rf ไดเร็กทอรี

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

ใช้  apt-get เพื่อติดตั้งแพ็คเกจนี้ลงในระบบของคุณหากคุณใช้ Ubuntu หรือการแจกจ่ายที่ใช้ Debian อื่น ในการกระจาย Linux อื่น ๆ ให้ใช้เครื่องมือการจัดการแพ็คเกจของการแจกจ่าย Linux แทน

sudo apt-get install ทรี

การรันtreeคำสั่งจะสร้างไดอะแกรมที่เข้าใจง่ายของโครงสร้างไดเร็กทอรีและไฟล์ที่อยู่ใต้ไดเร็กทอรีที่รัน

ต้นไม้

คุณยังสามารถระบุพา ธ ไปยังtreeคำสั่งเพื่อทำให้สตาร์ททรีจากไดเร็กทอรีอื่นในระบบไฟล์

เส้นทางต้นไม้ / to / ไดเรกทอรี

rmคำสั่งนอกจากนี้ยังมี--one-file-system, --no-preserve-root, --preserve-rootตัวเลือก แต่ผู้ที่ได้รับการแนะนำเฉพาะสำหรับผู้ใช้ขั้นสูง หากคุณพบสิ่งผิดปกติคุณอาจลบไฟล์ระบบทั้งหมดโดยไม่ได้ตั้งใจ ดูข้อมูลเพิ่มเติมในหน้าคู่มือคำสั่ง

วิธีการลบไดเรกทอรีด้วย rmdir

มีคำสั่งอื่นที่เรียกrmdirว่าคุณสามารถใช้เพื่อลบไดเรกทอรี ความแตกต่างระหว่างrmและrmdirคือrmdirสามารถลบไดเร็กทอรีที่ว่างเปล่าเท่านั้น มันจะไม่ลบไฟล์

กรณีที่ง่ายที่สุดคือการลบไดเร็กทอรีว่างเดียว เช่นเดียวกับrmคุณสามารถส่งชื่อไดเร็กทอรีหลายชื่อไปยังrmdirหรือพา ธ ไปยังไดเร็กทอรี

ลบไดเร็กทอรีเดียวในไดเร็กทอรีปัจจุบันโดยส่งชื่อไปที่rmdir:

ไดเรกทอรี rmdir

ลบหลายไดเรกทอรีโดยส่งรายชื่อไปที่   rmdir:

rmdir ไดเร็กทอรี 1 ไดเร็กทอรี 2 ไดเร็กทอรี 3

ลบไดเร็กทอรีที่ไม่อยู่ในไดเร็กทอรีปัจจุบันโดยระบุพา ธ แบบเต็มไปยังไดเร็กทอรีนั้น:

rmdir / path / to / ไดเร็กทอรี

หากคุณพยายามลบโฟลเดอร์ที่ไม่ว่างเปล่าrmdirจะแสดงข้อความแสดงข้อผิดพลาด ในตัวอย่างต่อไปนี้rmdirสำเร็จและลบclientsไดเร็กทอรีแบบไม่โต้ตอบ แต่ปฏิเสธที่จะลบprojectsไดเร็กทอรีเนื่องจากมีไฟล์ projectsไดเร็กทอรีจะถูกปล่อยให้เหมือนเดิมทุกประการและไฟล์ในนั้นจะไม่ถูกแตะต้อง

เมื่อrmdirให้ข้อผิดพลาด“ Directory not empty” จะหยุดประมวลผลไดเร็กทอรีที่ส่งผ่านไปยังบรรทัดคำสั่ง หากคุณขอให้ลบสี่ไดเรกทอรีและรายการแรกมีไฟล์อยู่ในนั้นrmdirจะให้ข้อความแสดงข้อผิดพลาดและไม่ต้องทำอะไรเพิ่มเติม คุณสามารถบังคับให้ละเว้นข้อผิดพลาดเหล่านี้ด้วย--ignore-fail-on-non-emptyตัวเลือกเพื่อให้ไดเร็กทอรีอื่นได้รับการประมวลผล

ในตัวอย่างต่อไปสองโฟลเดอร์ได้รับการส่งผ่านไปยังrmdirเหล่านี้เป็นและwork/reports ตัวเลือกที่ได้รับการรวมอยู่ในคำสั่ง โฟลเดอร์ที่มีไฟล์ในมันดังนั้นไม่สามารถลบได้ กองกำลังตัวเลือกที่จะไม่สนใจข้อผิดพลาดและย้ายไปยังโฟลเดอร์ถัดไปจะต้องมีกระบวนการซึ่งเป็น นี่คือโฟลเดอร์ว่างและลบทิ้งwork/quotes--ignore-fail-on-non-emptywork/reportsrmdir--ignore-fail-on-non-emptyrmdirwork/quotesrmdir

นี่คือคำสั่งที่ใช้

rmdir --ignore-fail-on-non-empty งาน / รายงาน / งาน / คำพูด

คุณสามารถใช้  -p อ็อพชัน (parent) เพื่อลบไดเร็กทอรีและลบไดเร็กทอรีพาเรนต์ได้ด้วย เคล็ดลับนี้ใช้ได้ผลเนื่องจากrmdirเริ่มต้นด้วยไดเร็กทอรีเป้าหมายจากนั้นย้อนกลับไปที่พาเรนต์ ไดเร็กทอรีนั้นควรว่างเปล่าดังนั้นจึงสามารถลบได้โดยrmdirและกระบวนการนี้จะทำซ้ำการสำรองพา ธ ที่ระบุrmdirไว้

ในตัวอย่างต่อไปนี้คำสั่งที่ส่งผ่านไปrmdirคือ:

rmdir -p งาน / ใบแจ้งหนี้

ทั้งไดเร็กทอรีinvoicesและworkไดเร็กทอรีจะถูกลบตามที่ร้องขอ

ไม่ว่าคุณจะใช้ Bash หรือเชลล์อื่น ๆ ก็ตาม Linux มีคำสั่งที่ยืดหยุ่นและมีประสิทธิภาพเพื่อให้คุณลบไดเร็กทอรีและไฟล์ได้โดยตรงจากบรรทัดคำสั่งเทอร์มินัล บางคนชอบที่จะมีเวิร์กโฟลว์ที่หมุนรอบเทอร์มินัล คนอื่นอาจไม่มีทางเลือกในเรื่องนี้ พวกเขาอาจทำงานบนเซิร์ฟเวอร์โดยไม่ได้ติดตั้ง GUI หรือในเซสชันระยะไกลไปยังระบบ headless เช่น Raspberry Pi คำสั่งเหล่านี้เหมาะอย่างยิ่งสำหรับคนกลุ่มนั้น

แต่ไม่ว่าคุณต้องการเวิร์กโฟลว์ประเภทใดคำสั่งเหล่านี้ช่วยให้สามารถรวมอยู่ในเชลล์สคริปต์ได้เป็นอย่างดี หากสคริปต์ถูกทริกเกอร์โดยcronงานสามารถช่วยทำงานดูแลทำความสะอาดตามปกติโดยอัตโนมัติเช่นการล้างไฟล์บันทึกที่ไม่ต้องการ หากคุณตรวจสอบกรณีการใช้งานนั้นโปรดจำพลังของคำสั่งเหล่านี้ทดสอบทุกอย่างอย่างรอบคอบและสำรองข้อมูลล่าสุดไว้เสมอ