สิ่งที่ไม่rm -rfควรทำเมื่อใช้ในการลบไฟล์หรือไดเรกทอรี?
วิธีทำ-rและ-fตัวเลือกการทำงานร่วมกัน?
สิ่งที่ไม่rm -rfควรทำเมื่อใช้ในการลบไฟล์หรือไดเรกทอรี?
วิธีทำ-rและ-fตัวเลือกการทำงานร่วมกัน?
คำตอบ:
คำสั่งเป็นเช่นเดียวกับrm -rfrm -r -f
จากrmหน้าคน (พิมพ์man rmในเทอร์มินัลเพื่อดูมัน) -r:
remove directories and their contents recursively
และ-f:
ignore nonexistent files and arguments, never prompt
ดังนั้นเมื่อรวมกันแล้วพวกเขาทำทั้งสองอย่าง
โปรดใช้คำสั่งนี้ด้วยความระมัดระวัง!
rm -rf /ในทางทฤษฎีจะลบทุกไฟล์ในคอมพิวเตอร์ของคุณที่อยู่ในไดเรกทอรีที่คุณได้รับอนุญาตให้เขียน หากคุณรูทนั่นหมายถึงการกำจัดทั้งระบบ (ในทางปฏิบัติมันใช้งานไม่ได้เพราะ GNU rmมีกรณีพิเศษที่ปฏิเสธที่จะอนุญาตrm -r /เว้นเสียแต่ว่าคุณจะพูด--no-preserve-rootด้วย)
rm -rf /ดูว่ามันถูกต้องหรือไม่
นอกจากคำตอบที่ถูกต้องก่อนหน้านี้ฉันต้องการจะสอนวิธีตกปลา:
เมื่อคุณไม่แน่ใจว่าคำสั่งทำงานอย่างไรมีตัวเลือกอะไรบ้างและทำงานอย่างไรให้เปิดเทอร์มินัลและประเภท
man <command>
ตัวอย่างเช่น:
man rm
เมื่อเข้าไปที่นั่นแล้วคุณสามารถค้นหาตัวเลือก หน้าคู่มือสามารถอ่านได้ยาวมากดังนั้นในประเภทเทอร์มินัล:
/<pattern>
ตัวอย่างเช่นทำ:
/-f
คุณสามารถลงจอดเพื่อ:
-f, --force
ignore nonexistent files and arguments, never prompt
สำหรับ -r do:
-r, -R, --recursive
remove directories and their contents recursively
คุณสามารถเลื่อนไปมาระหว่างผลการค้นหาโดยใช้n(ถัดไป) และN(ก่อนหน้า)
หากคุณต้องการทำบางสิ่ง แต่ไม่ทราบชื่อคำสั่งให้ใช้aproposในการค้นหาใน man pages:
apropos <pattern>
ตัวอย่างเช่น:
apropos directory listing
rmสั้นสำหรับการลบ การrตั้งค่าสถานะคือการลบไดเรกทอรีและเนื้อหาซ้ำ ๆ และfวิธีการบังคับและมันแทนที่การแจ้งเตือนการยืนยันใด ๆ
r flag is to remove directories ไม่ถูกต้อง .. มันจะลบไดเรกทอรีพร้อมกับเนื้อหามันเป็นการดำเนินการซ้ำ .. ตามคำพูดของคุณมันจะลบไดเรกทอรีสิ่งที่เกี่ยวกับตำบลไฟล์ภายใต้มัน? เป็นรายการไดเรกทอรีมีการทำแผนที่ชื่อ inode เพียงนี้ไม่ได้ทำให้รู้สึกใด ๆ ..
ตามที่ได้รับการกล่าวถึงแล้วrm -rf <ARG>นั้นหมายถึงการลบไฟล์แบบเรียกซ้ำโดยที่<ARG>เป็นไดเร็กตอรี่ (ซึ่งสามารถเป็นไฟล์ได้)
จุดทั้งหมดของ-r(การลบแบบเรียกซ้ำ) คือrmไม่สามารถลบไดเรกทอรีได้หากไม่ว่างเปล่าเนื่องจากการเรียกระบบพื้นฐานที่rmใช้ ( ยกเลิกการเชื่อมโยง ) ทำงานเฉพาะกับไดเรกทอรีที่ว่างเปล่า ดังนั้นสิ่งที่-rธงทำคือการค้นหาความลึกก่อนลงไปในไดเรกทอรีและลบไฟล์ก่อนแล้วเมื่อไดเรกทอรีว่างเปล่า - มันจะลบมัน เอฟเฟกต์แบบเดียวกันนี้ทำได้โดยใช้findคำสั่งพร้อม-deleteแฟล็ก (เมื่อคุณไม่ได้ระบุการกรองตาม-typeแต่เป็นอีกเรื่องหนึ่ง)
สำหรับ-fสองสิ่งคือป้องกันไม่ให้พรอมต์ว่าคุณต้องการลบไฟล์หรือไม่ (เช่นเมื่อคุณลบไฟล์ที่ผู้ใช้รายอื่นเป็นเจ้าของจากภายในไดเรกทอรีจะไม่แสดงrm: remove write-protected regular empty file 'f1'?พรอมต์คำยืนยัน) และไม่สนใจ ไฟล์ที่ไม่มีอยู่ ตัวอย่างเช่นด้วยชื่อไฟล์ที่ไม่มีอยู่คุณควรได้รับrm: cannot remove 'nonexistent': No such file or directoryข้อผิดพลาด
ดูสิ่งนี้ด้วย: