ระบบไฟล์ที่ไม่คำนึงถึงขนาดตัวพิมพ์จะแสดงชื่อไฟล์ทั้งเล็กและใหญ่อย่างไร?


12

คำถามนี้เกิดขึ้นกับฉันเมื่อวันก่อนเมื่อฉันทำงานเกี่ยวกับโครงการพัฒนาที่ต้องอาศัยกรอบการทำงานที่มีความเห็นเกี่ยวกับชื่อไฟล์ กรอบงาน (ไม่เกี่ยวข้องที่นี่) ต้องการเห็นชื่อไฟล์ตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก นี่ทำให้ฉันคิด

ในระบบไฟล์แบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ให้พูด extFAT หรือ HFS + (โดยเฉพาะอย่างยิ่งที่ไม่ต้องใช้ตัวพิมพ์ใหญ่ - ตัวพิมพ์เล็ก - ตัวพิมพ์ใหญ่) วิธีที่ระบบไฟล์ให้การเข้าถึงไฟล์เดียวกันกับทั้งชื่อไฟล์รุ่นบนและล่าง

ตัวอย่างเช่น:

$ cd ~/Documents
$ pwd
/home/derp/Documents

$ cd ../documents
$ pwd
/home/derp/documents

$ cd ../docuMents
$ pwd
/home/derp/docuMents

$ cd ../DOCUMENTS
$ pwd
/home/derp/DOCUMENTS

$ cd ../documentS
$ pwd
/home/derp/documentS

คำสั่งทั้งหมดเหล่านี้จะแก้ไขไปยังไดเรกทอรีเดียวกัน พฤติกรรมนี้โดยเฉพาะผลลัพธ์จากpwdฟังก์ชันbashในกรณีนี้เพียงแสดงให้ฉันเห็นว่าฉันต้องการเห็นอะไร

ตัวอย่างอื่น:

$ ls ~/Documents
Derp.txt    another.txt    whatThe.WORLD

ระบบไฟล์ที่นี่รายงานกรณีของชื่อไฟล์ต้นฉบับที่สร้างขึ้นโดยผู้ใช้หรือโปรแกรม

จุดใดในสแต็กของระบบไฟล์คือชื่อไฟล์ที่มนุษย์สามารถอ่านได้ซึ่งถูกสร้างขึ้น (เช่นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) เพื่อให้สามารถเข้าถึงได้โดยการรวมกันของอักขระ ASCII บนและล่างที่ถูกต้อง? นี่เป็นเพียงเคล็ดลับ regex บางแห่งหรือมีสิ่งอื่นเกิดขึ้น?

แก้ไข: ดูเหมือนว่าพฤติกรรมที่ฉันอยากรู้เกี่ยวกับการค้นพบในกรณีที่รักษาระบบไฟล์ case-insensitive หลังจากการวิจัยเพิ่มเติม ...


ไม่ได้เขียนสิ่งนี้เป็นคำตอบเพราะฉันไม่แน่ใจอีกต่อไป แต่ฉันเชื่อว่าคุณไม่สามารถมี ~ / เอกสารและ ~ / เอกสารในระบบไฟล์นั้นได้ แต่เมื่อคุณ cd ~ / Documents หรือ ~ / เอกสารไปที่เดิมและเชลล์ของคุณคือ "play nice" โดยจดจำสิ่งที่คุณพิมพ์ อีกด้านหนึ่งคือบาง FS เก็บวิธีการสร้างใน aux กลุ่มข้อมูล ตัวอย่างเช่นการเก็บ ~ / Documents ในตารางการค้นหา แต่เขียนไปยัง FS เป็น ~ / Documents โดยพื้นฐานแล้วการสร้างภาพลวงตาที่ระบบไฟล์ใส่ใจเกี่ยวกับการปิดเมื่อไม่ได้ใช้
coteyr

จากสิ่งที่ฉันสังเกตเห็นในกรณีที่ไดเรกทอรีมีชื่อไฟล์สองชื่อที่เหมือนกันยกเว้นกรณีระบบไฟล์ที่ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กอาจตอบสนองต่อการร้องขอไฟล์ที่กำหนดโดยเลือกหนึ่งไฟล์โดยพลการ สถานการณ์ดังกล่าวสามารถเกิดขึ้นได้หากกฎสำหรับการแปลงการเปลี่ยนแปลงบน / ตัวพิมพ์เล็กหลังจากไฟล์ถูกสร้างขึ้น
supercat

ข้อมูลเด็ด ๆ เกี่ยวกับกรณีของ NTFS ที่รักษาธรรมชาติ: superuser.com/questions/364057/why-is-ntfs-case-sensitive
ลุคแคนาดา

คำตอบ:


14

ระบบไฟล์แบบคำนึงถึงขนาดตัวพิมพ์หมายความว่าเมื่อใดก็ตามที่ระบบไฟล์ต้องถามว่า "A อ้างถึงไฟล์ / ไดเร็กทอรีเดียวกันกับ B หรือไม่" มันเปรียบเทียบชื่อของไฟล์ / ไดเรกทอรีโดยไม่สนใจความแตกต่างในตัวบน / ตัวพิมพ์เล็ก (ความแตกต่างของตัวบน / ตัวพิมพ์เล็กนั้นขึ้นอยู่กับระบบไฟล์ซึ่งไม่ชัดเจนเมื่อคุณได้รับเกิน ASCII) ระบบไฟล์ที่คำนึงถึงขนาดตัวพิมพ์ไม่สนใจความแตกต่างเหล่านั้น

ระบบไฟล์ที่เก็บเล็กและใหญ่จะจัดเก็บชื่อไฟล์ตามที่กำหนด ระบบไฟล์ที่ไม่ได้รับการรักษาตัวพิมพ์เล็ก - ใหญ่ไม่ได้; โดยทั่วไปมันจะแปลงตัวอักษรทั้งหมดเป็นตัวพิมพ์ใหญ่ก่อนที่จะจัดเก็บ (ตามหลักทฤษฎีมันสามารถใช้ตัวพิมพ์เล็กหรือกรณี RaNsOm NoTe หรืออะไรก็ตาม แต่ AFAIK ตัวจริงทั้งหมดใช้ตัวพิมพ์ใหญ่)

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

ดังนั้นระบบไฟล์ที่คำนึงถึงขนาดตัวพิมพ์ case-insensitive (ชนิดที่พบมากที่สุดของระบบไฟล์ case-insensitive ในปัจจุบัน) จะจัดเก็บและส่งคืนชื่อไฟล์ในการใช้อักษรตัวพิมพ์ใหญ่ที่คุณสร้างขึ้นหรือเปลี่ยนชื่อล่าสุด แต่เมื่อเปรียบเทียบชื่อไฟล์สองชื่อ มีอยู่เพื่อเปิดหนึ่งเพื่อลบหนึ่งรายการ ฯลฯ ) มันจะละเว้นความแตกต่างของตัวอักษร

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

ในpwdกรณีที่สิ่งที่คุณเห็นคือโดยค่าเริ่มต้นเพียงส่งเส้นทางที่คุณเคยได้รับไปยังไดเรกทอรี ดังนั้นหากคุณไปถึงที่นั่นcd DirNameก็จะใช้DirNameในการส่งออก หากคุณไปถึงที่นั่นDiRnAmEคุณจะเห็นDiRnAmEผลลัพธ์ Bash ทำสิ่งนี้โดยการติดตามว่าคุณไปยังไดเรกทอรีปัจจุบันของคุณใน$PWDตัวแปรสภาพแวดล้อมได้อย่างไร ส่วนใหญ่ใช้สำหรับcdsymlink (หากคุณเข้าสู่ symlink คุณจะเห็น symlink ในของคุณpwdแม้ว่าจริงๆแล้วมันจะไม่ได้เป็นส่วนหนึ่งของเส้นทางไปยังไดเรกทอรีปัจจุบันของคุณ) แต่มันยังให้พฤติกรรมแปลก ๆ ที่คุณสังเกตเห็นในระบบไฟล์ที่ไม่ตรงตามตัวพิมพ์ใหญ่ - เล็ก ฉันสงสัยว่าpwd -Pจะให้ชื่อไดเรกทอรีคุณกับเคสที่เก็บไว้ในดิสก์ แต่ยังไม่ได้ทดสอบ


ฉันอาจจะรู้ว่าคุณเอาชนะฉันไปที่นี้! (upvoted)
Fabby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.