สิ่งที่ไม่rm -rf
ควรทำเมื่อใช้ในการลบไฟล์หรือไดเรกทอรี?
วิธีทำ-r
และ-f
ตัวเลือกการทำงานร่วมกัน?
สิ่งที่ไม่rm -rf
ควรทำเมื่อใช้ในการลบไฟล์หรือไดเรกทอรี?
วิธีทำ-r
และ-f
ตัวเลือกการทำงานร่วมกัน?
คำตอบ:
คำสั่งเป็นเช่นเดียวกับrm -rf
rm -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
ข้อผิดพลาด
ดูสิ่งนี้ด้วย: