เหตุใด NTFS case sensitive?


24

ฉันคิดว่า NTFS เป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เนื่องจากคุณสามารถพิมพ์ cmd, CMD, cMd หรือแม้กระทั่ง CmD และยังคงได้รับพรอมต์คำสั่ง อย่างไรก็ตามทำไมในระหว่างที่CHKDSK x: /f /rบางครั้งมันแก้ไขตัวพิมพ์ใหญ่ในบางไฟล์ ถ้ามันไม่ได้สนใจเรื่องนี้มันก็ไม่ควรเกี่ยวกับเรื่องนั้นและ CHKDSK ไม่ควรตรวจสอบว่าจริง ๆ แล้วมันคือ CMD หรือ cmd ฉันถูกไหม? มันมีความสำคัญในระบบไฟล์ที่ไหน?


25
โปรดทราบว่า "case-sensitive" และ "case-sensitive" เป็นสองสิ่งที่แยกจากกัน NTFS คือการรักษาตัวพิมพ์เล็กและตัวพิมพ์เล็ก แต่ตัวพิมพ์เล็ก - ใหญ่ใน Win32 namespace แต่สามารถเป็นแบบตรงตามตัวพิมพ์ใน POSIX namespace
grawity

คำตอบ:


34

การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของระบบไฟล์เป็นปัญหาแยกต่างหากจากระบบปฏิบัติการ รุ่นล่าสุดของ Windows จะขึ้นอยู่กับเคอร์เนล NT ซึ่งสืบทอดคุณสมบัติมากมายของ Windows 95 ที่ไม่ใช่ NT และแม้แต่ MS-DOS พร้อมกับ NT เคอร์เนลระบบไฟล์, NTFS ถูกออกแบบให้เป็นกรณีที่สำคัญ - ที่จะตาม POSIX

แม้ว่าระบบย่อย Win32 ไม่สนับสนุนชื่อไฟล์ที่แตกต่างกันตามความไวของตัวพิมพ์เล็ก แต่ก็เป็นไปได้ที่จะสร้างไฟล์เหล่านั้นด้วยการเรียกระบบระดับล่าง


1
ฉันไม่ทราบวิธีง่ายๆในการสร้างไฟล์ดังกล่าวใน Windows อย่างไรก็ตามการเรียก CreateFile () API ด้วยบิต FILE_FLAG_POSIX_SEMANTICS ควรทำงานโดยทางโปรแกรม
Frank

2
@Luke: Win32 ไม่รองรับไฟล์เล็กและใหญ่ คุณจะต้องทำการเรียก API เข้าสู่ระบบย่อยของระบบปฏิบัติการ osronline.com/article.cfm?id=91
surfasb

2
@Luke: หนึ่งในวิธีที่ง่ายที่จะติดตั้งไดรฟ์ NTFS จากระบบลินุกซ์และสร้างไฟล์ที่คุณต้องการมี :)
ฮิปโป

1
เพียงตรวจสอบให้แน่ใจว่าคุณมี Windows NT รุ่นที่ถูกต้องและติดตั้งระบบย่อยสำหรับยูทิลิตี้แอพพลิเคชั่นที่ใช้ UNIX
JdeBP

1
@Luke: ตามปกติวิกิพีเดียในการช่วยเหลือ :-)
afrazier

7

จริงๆแล้วมันไม่ใช่ NTFS ที่คุณต้องการสอบถาม

NTFS เป็นระบบไฟล์ คำถามของคุณเกี่ยวกับความไวตัวพิมพ์เล็กและใหญ่ของเชลล์คำสั่ง Windows พวกมันต่างกันอย่างสิ้นเชิง Windows Explorer เป็นเชลล์คำสั่งแบบกราฟิก โดย entring cmd(ใน Start | Run ตัวอย่าง) คุณกำลังบอกเชลล์คำสั่งของ Windows ให้รันคำสั่งcmd(ซึ่งจริงๆแล้วคือเชลล์คำสั่งอื่น แต่บรรทัดคำสั่งอิงตามกราฟิกมากกว่า)

ในทำนองเดียวกัน CHKDSK ไม่ได้ทำการตรวจสอบใด ๆ ไม่ว่าคุณจะใช้ CMD หรือ cmd CHKDSK ทั้งหมดรู้เกี่ยวกับพารามิเตอร์ที่คุณส่งให้ซึ่งในกรณีนี้คือ x :, / f และ / r

สำหรับ CHKDSK "การแก้ไขตัวพิมพ์ใหญ่" ฉันไม่แน่ใจจริงๆว่าคุณหมายถึงอะไร


4
NTFS คำนึงถึงขนาดตัวพิมพ์ ตามบทความ MS KB 100625: ใน NTFS คุณสามารถสร้างชื่อไฟล์ที่ไม่ซ้ำกันซึ่งจัดเก็บในไดเรกทอรีเดียวกันซึ่งแตกต่างกันเฉพาะในกรณีที่ ตัวอย่างเช่นชื่อไฟล์ต่อไปนี้สามารถอยู่ร่วมกันในไดเรกทอรีเดียวบนไดรฟ์ข้อมูล NTFS: CASE.TXT case.txt case.TXT อย่างไรก็ตามหากคุณพยายามเปิดไฟล์เหล่านี้ในแอปพลิเคชัน Win32 เช่น Notepad คุณจะสามารถเข้าถึงได้เท่านั้น ไปที่หนึ่งในไฟล์โดยไม่คำนึงถึงชื่อไฟล์ที่คุณพิมพ์ในกล่องโต้ตอบเปิดไฟล์
Frank

นั่นเป็นเรื่องจริงขอบคุณที่ชี้แจงว่า ฉันเอาคำตอบนั้นออกไปเพราะมันไม่ใช่สิ่งที่เป็นปัญหาในที่นี้
squillman

> อย่างไรก็ตามหากคุณพยายามเปิดไฟล์ใดไฟล์หนึ่งในแอปพลิเคชัน Win32 เช่น Notepad คุณจะสามารถเข้าถึงไฟล์ใดไฟล์หนึ่งโดยไม่คำนึงถึงกรณีของชื่อไฟล์ที่คุณพิมพ์ในกล่องโต้ตอบเปิดไฟล์ไฟล์ใด
Synetech

4
@Synetech: คนแรกอาจจะ? ขึ้นอยู่กับลำดับของไฟล์ในไดเรกทอรีและอาจเป็นระยะที่ดวงจันทร์
grawity

5

ฉันสงสัยว่าผู้ถามคำถามที่อ้างว่า chkdsk.exe คือ "การแก้ไขตัวพิมพ์ใหญ่ในบางไฟล์" ได้รับแจ้งจากข้อความจาก CHKDSK ที่เกิดขึ้นภายใต้สถานการณ์จริง:

การแก้ไขข้อผิดพลาดในไฟล์ตัวพิมพ์ใหญ่

โดยทั่วไปผลลัพธ์นี้มาจาก chkdsk.exe รุ่น Windows XP ที่ทำงานกับไดรฟ์ข้อมูล NTFS ที่ได้รับการจัดรูปแบบใน Windows รุ่นที่ใหม่กว่าดังที่อธิบายไว้ในข้อความแสดงข้อผิดพลาดเมื่อคุณเรียกใช้ Chkdsk.exe บน Windows XP หรือบน Windows คอมพิวเตอร์เซิร์ฟเวอร์ 2003:“การแก้ไขข้อผิดพลาดในแฟ้มพิมพ์ใหญ่” ผลที่สุดก็คือว่านี่ไม่ใช่ข้อผิดพลาดจริงๆและไม่มีส่วนเกี่ยวข้องกับความไวของตัวพิมพ์ใหญ่

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