วิธีการทำงานของระบบไฟล์ไดเรกทอรีไม่ใช่โฟลเดอร์ที่มีไฟล์ แต่เป็นไดเรกทอรีที่เป็นไฟล์ที่มี inode pointersเป็นไฟล์ "child" ที่เชื่อมต่ออยู่ ความหมายจากมุมมองของระบบไฟล์ไฟล์เป็นไฟล์ แต่ไดเร็กทอรีเป็นเพียงไฟล์ที่มีรายการไฟล์ที่เชื่อมต่อ
ดังนั้นจากมุมมองบรรทัดคำสั่งทำสิ่งนี้:
$ cp dir1 copyDir1
โดยทั่วไปจะหมายถึงการคัดลอกไฟล์ชื่อไปยังแฟ้มใหม่ที่ชื่อว่าdir1
copyDir1
และเท่าที่ระบบไฟล์มีความกังวลdir1
ก็เป็นเพียงไฟล์ต่อไป ความจริงมันเป็น "ไดเรกทอรี" จะปรากฏเฉพาะเมื่อระบบแฟ้มตรวจสอบจริงdir1
เพื่อดูว่ากองบิตที่เป็นจริง
-r
ธงบอกระบบไฟล์ที่จะม้วนลงซ้ำไฟล์ต้น / ไดเรกทอรีและคัดลอกเนื้อหาใด ๆ และทั้งหมดที่อาจจะเป็น“เด็ก” ของไฟล์นั้นไปยังสถานที่ใหม่
ทีนี้สาเหตุที่อาจดูฟุ่มเฟือยหรือซ้ำซ้อนนี่เป็นวิธีการทางประวัติศาสตร์ในการจัดการกับระบบไฟล์ รวมถึงการสร้างระบบที่ปลอดภัยจากข้อผิดพลาดที่เกี่ยวข้องกับผู้ใช้ทุกประเภท โดยไม่ตั้งใจเช่นเดียวกับความตั้งใจ
หมายความว่าคุณมี~/bin
ไฟล์ในโฮมไดเร็กตอรี่ของคุณที่คุณต้องการคัดลอก แต่ไม่ได้ตั้งใจ~
เพราะคุณเป็นมนุษย์และทำผิดพลาด - ดังนั้นมันจึงเป็น/bin
เช่นนี้:
cp /bin/ ~/copy_of_bin
ด้วย "ความปลอดภัยสุทธิ" ของ/bin
การเป็นไดเรกทอรีรวมกับความต้องการสำหรับการ-r
ตั้งค่าสถานะคุณจะหลีกเลี่ยงการคัดลอกทั้งรากไบนารีของระบบที่คุณอยู่ในไดเรกทอรีบ้านของคุณโดยไม่ตั้งใจ หากไม่มีเครือข่ายความปลอดภัยนั้นผู้เยาว์ - หรือที่สำคัญอาจเป็นหายนะก็จะเกิดขึ้น
ตรรกะในที่นี้คือในสมัยก่อน GUI (ส่วนต่อประสานผู้ใช้แบบกราฟิก) การประชุมแบบลอจิคัล / พฤติกรรมจะต้องมีการตั้งค่าเพื่อหลีกเลี่ยงการมีผู้ใช้สร้างอุบัติเหตุที่อาจฆ่าระบบ และการใช้-r
ธงเป็นหนึ่งในนั้น
หากดูเหมือนว่าฟุ่มเฟือยแล้วไม่ต้องมองไกลไปกว่าระบบ GUI ที่ทันสมัยอย่างใดอย่างหนึ่งสามารถวางเหนือระบบไฟล์ Linux GUI จัดการปัญหาพื้นฐานของผู้ใช้เช่นนี้โดยอนุญาตให้ลากและวางไฟล์และไดเรกทอรีได้อย่างง่ายดาย
แต่ในกรณีของขอบเขตของอินเตอร์เฟซที่ใช้ข้อความเป็นจำนวนมาก“ ประสบการณ์ผู้ใช้” ในโลกนั้นเป็นเพียงแค่การกระแทกบนถนนแบบตรรกะและแบบใช้ความคิดสร้างสรรค์ซึ่งช่วยให้ผู้ใช้อยู่ในการตรวจสอบเพื่อป้องกันภัยพิบัติที่อาจเกิดขึ้น
ในทำนองเดียวกันนี้คือเหตุผลที่ filesystems Linux / Unix ไม่ได้มี777
สิทธิ์และsudo
สิทธิที่กำหนดโดยค่าเริ่มต้นและวิธีการที่ระบบจริงผู้บริหารสะดุ้งเมื่อมีการตั้งค่าผู้ใช้777
สิทธิ์หรือทุนทุกคนsudo
สิทธิ สิ่งเหล่านี้เป็นสิ่งพื้นฐานที่เราทำเพื่อให้แน่ใจว่าระบบมีเสถียรภาพและเป็น "หลักฐานการใช้งาน" ที่สุด ใครก็ตามที่วิ่งไปลัดวงจรการประชุมเหล่านั้นมักจะทำให้ระบบของพวกเขาเกิดความเสียหายโดยที่ไม่รู้ตัว
ข้อมูลเพิ่มเติม: คำตอบอื่นที่นี่ในเว็บไซต์ Unix Stack Exchangeให้คำอธิบายที่ดีว่าเหตุใดสำเนาที่ไม่ใช่แบบเรียกซ้ำของไดเรกทอรีจึงเป็นปัญหา เน้นเป็นของฉัน
ถ้าไม่มีแฟล็ก -R มันเป็นไปได้ที่จะคัดลอกไฟล์เท่านั้นเพราะมันค่อนข้างแปลกที่บางคนต้องการที่จะไม่ทำการคัดลอกไดเรกทอรีซ้ำ: สำเนาที่ไม่ใช่แบบเรียกซ้ำจะทำให้ชื่อที่สองของไดเรกทอรีชี้ไปที่ โครงสร้างไดเรกทอรีเดียวกัน
เพราะนั่นเป็นสิ่งที่คนต้องการและจริงๆแล้วมีโปรแกรมแยกต่างหากที่ทำเช่นนี้ (ln) จึงไม่อนุญาตให้คัดลอกไดเรกทอรีที่ไม่เกิดซ้ำ
ดังนั้นหากไดเรกทอรีเป็นเพียงไฟล์ที่มีไอโหนดในนั้นการทำสำเนาไฟล์ตรงนั้นจะเท่ากับการทำงานของฮาร์ดลิงก์ ซึ่งไม่ใช่สิ่งที่ทุกคนต้องการ