rm การเรียกซ้ำใช้งานได้ถูกต้องหรือไม่
rm -r x yจะลบxและyทุกอย่างภายในตัวพวกเขา (ถ้าพวกเขาเป็นไดเรกทอรี) แต่ไม่ใช่พ่อแม่ของพวกเขาหรืออะไรก็ตามที่อยู่ข้างนอก
วิ่ง: sudo rm -R *.QTFSจะลบไฟล์ * .QTFS ทั้งหมดในไดเรกทอรีปัจจุบันและลูก ๆ ของมันถูกต้องไหม?
ไม่มันจะลบไฟล์ทั้งหมดที่มีชื่อไฟล์*.QTFSใด ๆ ที่เรียกซ้ำภายในไดเรกทอรีที่เรียกว่า*.QTFSและไดเรกทอรีเหล่านั้นด้วยตนเอง หากคุณต้องการว่าพฤติกรรมการลบอื่น ๆ find -deleteการใช้งาน
ไดเรกทอรีปัจจุบันที่แสดงโดยls -lhaยังมี.และ..ลิงก์สำหรับการขาดคำที่ดีกว่าดังนั้นทำไมการเรียกซ้ำไม่ทำตามสิ่งเหล่านี้ขึ้นในแผนผังไดเรกทอรี? มีการ จำกัด สิทธิ์ในแอป rm หรือไม่.และ..ไม่ใช่ของจริง?
มันเป็นขีด จำกัด rmของเทียม
มันไม่ใช่สิ่งที่ประดิษฐ์ขึ้นมาทั้งหมด - มันเป็นวิธีเดียวที่จะทำงานได้ ถ้าrmตามผู้ปกครอง..การเชื่อมโยงทุกrm -rจะลบไฟล์บนทุกระบบโดยทำตามทั้งหมดของการเชื่อมโยงทั้งหมดทางกลับไป.. เห็นและรายการในแต่ละไดเรกทอรีเมื่อรายการเนื้อหาและไม่สนใจพวกเขาอย่างชัดเจนด้วยเหตุผลดังกล่าว/rm...
คุณสามารถลองด้วยตัวเองในความเป็นจริง เรียกใช้rm -r .และrmการใช้งานส่วนใหญ่จะปฏิเสธที่จะทำหน้าที่รายงานข้อผิดพลาดอย่างชัดเจน:
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(ข้อความนั้นมาจาก GNUrm ; คนอื่นคล้ายกัน) เมื่อพบรายการเหล่านี้โดยปริยายแทนที่จะเป็นข้อโต้แย้งที่ชัดเจนก็เพียงละเว้นพวกเขาและดำเนินการต่อ พฤติกรรมที่ถูกต้องตาม POSIX ใน GNU rmและ BSD จำนวนมากมันถูกจัดเตรียมโดยอัตโนมัติโดยกลุ่มfts_readฟังก์ชันลำดับชั้น - การข้ามผ่าน
หรือ.และ..ไม่ใช่ของจริง?
.และ..มีทั่วไปรายการไดเรกทอรีจริงถึงแม้ว่ามันจะเป็นระบบแฟ้มที่เฉพาะเจาะจง พวกเขาเกือบจะถูกนำเสนอราวกับว่าพวกเขาเป็นรายการจริงของรหัสผู้ใช้ทั้งหมดโดยไม่คำนึงถึง ซอฟต์แวร์หลายชิ้น (ไม่ใช่แค่rm) เป็นกรณีพิเศษพฤติกรรมของพวกเขาในการจับหรือป้องกันการหลบหนีหรือการเรียกซ้ำที่ไม่พึงประสงค์