เหตุใดชื่อไฟล์และโฟลเดอร์ Windows บางอันจึงมีจุดอยู่ข้างหน้า
ในขณะที่เราส่วนใหญ่เพิ่งเห็นชื่อไฟล์และโฟลเดอร์ปกติบนระบบ Windows ของเราคนอื่นอาจพบบางสิ่งที่ไม่คาดคิดมากกว่านี้ - ชื่อไฟล์และโฟลเดอร์ที่มีจุดอยู่ด้านหน้า ทำไมสิ่งนี้ถึงเกิดขึ้น โพสต์ SuperUser คำถาม & คำตอบนี้มีคำตอบสำหรับคำถามของผู้อ่านที่อยากรู้อยากเห็นมาก.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
ภาพถ่ายของ Domiriel (Flickr).
คำถาม
ผู้อ่าน SuperUser Niko Bellic ต้องการทราบว่าเหตุใดชื่อไฟล์และโฟลเดอร์ Windows บางอันจึงมีจุดอยู่ข้างหน้า:
ตัวอย่างเช่นใน เอกสารของฉัน ไดเรกทอรีในระบบ Windows ของฉันฉันพบโฟลเดอร์ต่อไปนี้:
- .SSH
- .การโค่นล้ม
นี่เป็นรูปแบบการตั้งชื่อที่ฉันไม่รู้?
เหตุใดชื่อไฟล์และโฟลเดอร์ Windows บางอันจึงมีจุดอยู่ข้างหน้า?
คำตอบ
grawity ผู้สนับสนุน SuperUser มีคำตอบสำหรับเรา:
ระเบียบการตั้งชื่อนี้มาจากระบบปฏิบัติการที่คล้าย Unix (เช่น Linux หรือ OSX) ซึ่งหมายถึง a ไฟล์ที่ซ่อนอยู่ หรือ ไดเรกทอรี. มันใช้งานได้ทุกที่ แต่การใช้งานหลักคือการซ่อนไฟล์การกำหนดค่าในโฮมไดเรกทอรีของคุณ (เช่น. ~ / .cache / หรือ ~ / .plan) พวกเขามักจะเรียกว่า ไฟล์จุด.
ไฟล์ดอท ในทางใดทางหนึ่งเรียกว่า Unix ดั้งเดิมเทียบเท่ากับ ข้อมูลแอพ ไดเรกทอรีบน Windows ในขณะเดียวกันโปรแกรมลีนุกซ์จำนวนมากกำลังถูกเปลี่ยนแปลงเพื่อให้เป็นไปตามสเปคพื้นฐานของฐาน XDG ซึ่งย้ายการกำหนดค่าไปเป็น ~ / .config / และข้อมูลอื่น ๆ ~ / .cache / และ ~ / .local / share /. สิ่งนี้ทำให้คล้ายกับ AppData \ Roaming และ AppData \ Local.
คุณมีสิ่งเหล่านี้ .SSH และ .การโค่นล้ม ไดเรกทอรีบน Windows เพราะคุณใช้บางโปรแกรม (โดยเฉพาะ OpenSSH และ Subversion) ที่ได้รับการพอร์ตเพื่อใช้ API ระบบ Windows แทนที่จะเป็น POSIX แต่ไม่ได้ปรับสำหรับการประชุม Windows อื่น ๆ.
บางครั้งการปรับตัวนี้ถูกข้ามไปโดยเจตนาเพื่อทำให้ชีวิตง่ายขึ้นสำหรับผู้ที่ใช้สภาพแวดล้อมแบบ Unix เช่น Cygwin บนระบบ Windows ตัวอย่างเช่น Cygwin ติดตั้งชุดเครื่องมือมาตรฐานเหมือน Unix เช่น LS, ซึ่งไม่สนใจ Windows ซ่อนธง และให้เกียรติเท่านั้น ไฟล์จุด ชื่อ นอกจากนี้ยังง่ายกว่าในการซิงโครไนซ์การกำหนดค่าระหว่างคอมพิวเตอร์ Windows และ Linux / BSD / OSX ของแต่ละคนหากมีการแชร์ในตำแหน่งที่ตั้งเดียวกัน.
โดยทั่วไปไฟล์เหล่านี้จะอยู่ในไดเรกทอรีหลักของผู้ใช้ (เช่น. /home/name/.ssh บน Linux หรือ C: \ Users \ \ ชื่อ .ssh บน Windows 7 และใหม่กว่า) มันค่อนข้างหายากสำหรับพวกเขาที่จะใส่ใน เอกสาร หรือ เอกสารของฉัน ไดเรกทอรีย่อย (ไม่มีเอกสารหลังจากทั้งหมด).
ตามที่ Rob Pike เขียนใน Google+ นี่เป็นคุณลักษณะที่ไม่ได้ตั้งใจ:
นานมาแล้วในขณะที่การออกแบบระบบไฟล์ Unix นั้นกำลังดำเนินการอยู่ . และ ... ปรากฏขึ้นเพื่อให้การนำทางง่ายขึ้น ฉันไม่แน่ใจ แต่ฉันเชื่อ ... เข้าไปในระหว่างการเขียนเวอร์ชัน 2 เมื่อระบบไฟล์กลายเป็นลำดับขั้น (มีโครงสร้างที่แตกต่างกันมากในช่วงต้น) เมื่อหนึ่งพิมพ์ LS, อย่างไรก็ตามไฟล์เหล่านี้ปรากฏขึ้นดังนั้นทั้ง Ken หรือ Dennis จึงเพิ่มการทดสอบอย่างง่ายให้กับโปรแกรม มันอยู่ในแอสเซมเบลอร์ แต่โค้ดที่เป็นปัญหานั้นเทียบเท่ากับสิ่งนี้:
- หาก (ชื่อ [0] == '.') ดำเนินการต่อ;
ข้อความนี้สั้นกว่าที่ควรจะเป็นเล็กน้อยซึ่งก็คือ:
- if (strcmp (ชื่อ,“.”) == 0 || strcmp (ชื่อ,“ …”) == 0) ดำเนินการต่อ;
แต่เดี๋ยวก่อนมันง่ายและมีสองสิ่งที่เกิดขึ้น.
ครั้งแรกมีการตั้งค่าแบบอย่างที่ไม่ดี โปรแกรมเมอร์ที่ขี้เกียจคนอื่น ๆ จำนวนมากแนะนำบั๊กด้วยการทำให้เข้าใจง่ายเหมือนกัน ไฟล์จริงที่เริ่มต้นด้วยจุดมักจะถูกข้ามเมื่อพวกเขาควรจะนับ.
ที่สองและแย่กว่านั้นคือความคิดของ ซ่อนเร้น หรือ ไฟล์จุด ถูกสร้าง. เป็นผลให้โปรแกรมเมอร์ที่ขี้เกียจเริ่มวางไฟล์ลงในโฮมไดเร็กตอรี่ของทุกคน ฉันไม่มีซอฟต์แวร์จำนวนมากที่ติดตั้งบนคอมพิวเตอร์ที่ฉันใช้เพื่อพิมพ์สิ่งนี้ แต่โฮมไดเร็กตอรี่ของฉันมีประมาณหนึ่งร้อย ไฟล์จุด และฉันไม่รู้ด้วยซ้ำว่าส่วนใหญ่ของพวกเขาคืออะไรหรือไม่ว่าพวกเขายังต้องการ การประเมินชื่อไฟล์ทุกครั้งที่เข้าสู่โฮมไดเร็กตอรี่ของฉันนั้นช้าลงด้วยตะกอนที่สะสมนี้.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.