หลังจากอ่านคำถามนี้ทำไมเลือก '~' เพื่อเป็นตัวแทนของโฮมไดเร็กตอรี่? คำถามที่ชัดเจนต่อไปในใจของฉันคือทำไม '.' และ '.. ' ถูกใช้เพื่อแสดงไดเรกทอรีปัจจุบันและไดเรกทอรีหลัก
ดูเหมือนว่าจะเป็นสัญชาตญาณตอนนี้ แต่มีเหตุผลพิเศษอะไรบ้าง
หลังจากอ่านคำถามนี้ทำไมเลือก '~' เพื่อเป็นตัวแทนของโฮมไดเร็กตอรี่? คำถามที่ชัดเจนต่อไปในใจของฉันคือทำไม '.' และ '.. ' ถูกใช้เพื่อแสดงไดเรกทอรีปัจจุบันและไดเรกทอรีหลัก
ดูเหมือนว่าจะเป็นสัญชาตญาณตอนนี้ แต่มีเหตุผลพิเศษอะไรบ้าง
คำตอบ:
ฉันสงสัยว่าคุณจะพบคำตอบที่น่าสนใจเกี่ยวกับคำถามตัวหนอน!
ผมก็ไม่ได้มี แต่ .. เป็นเหมือนจุดไข่ปลา ( ... ) cd ../../../there
ซึ่งจะทำให้ความรู้สึกในบริบทเช่น ยิ่งไปกว่านั้นและโดยเฉพาะอย่างยิ่งเมื่อมองไปที่แป้นเทอร์มินัลของเจ้า olde จากตัวหนอนตัวอ่อนมีอักขระที่มีสิทธิ์ไม่มากนักสำหรับจุดประสงค์นี้ คุณไม่จำเป็นที่จะเปลี่ยนสำหรับการ.
อย่างใดอย่างหนึ่ง มันสมบูรณ์แบบ.
ความจริงที่ว่า dot prefix นั้นใช้สำหรับไฟล์ที่ซ่อนอยู่อาจเป็นอีกสาเหตุหนึ่ง ไฟล์ที่ซ่อนไม่ได้ระบุไว้โดยค่าเริ่มต้นโดยเครื่องมือเช่นls
ดังนั้นไม่เป็นซ้ำซ้อนหลักและ.
..
ซ้ำซ้อนในแง่ที่ว่าไม่มีประเด็นที่จะพิจารณาพวกเขาพร้อมกับไฟล์อื่น ๆ - พวกมันมีประโยชน์อย่างอื่น
ตามที่ปรากฎฉันอาจย้อนกลับ ... จากวิกิพีเดีย :
ความคิดที่ว่าชื่อไฟล์นำหน้าด้วย '.' ควรถูกซ่อนไว้เป็นผลมาจากข้อผิดพลาดของซอฟต์แวร์ในช่วงแรก ๆ ของ Unix เมื่อพิเศษ '.' และรายการไดเรกทอรี '.. ' ถูกเพิ่มลงในระบบไฟล์ก็มีการตัดสินใจว่าคำสั่ง ls ไม่ควรแสดงพวกเขา อย่างไรก็ตามโปรแกรม ls นั้นถูกเขียนผิดพลาดเพื่อแยกไฟล์ใด ๆ ที่ชื่อขึ้นต้นด้วย '.' แทนที่จะเป็นไฟล์ที่ชื่อ '.' เท่านั้น หรือ '..'.
สิ่งนี้กลายเป็นประโยชน์เมื่อเขียนโปรแกรม เนื่องจากระบบรวมถึง และ .. ในการตอบสนองต่อreaddir()
คำสั่งการพิมพ์ (และเปลือก globs) การเพิกเฉยพวกเขาและไฟล์ที่ซ่อนอยู่สามารถทำได้ในลักษณะเดียวกัน
มีความคิดเห็นที่แตกต่างกันเกี่ยวกับค่าใช้ที่อยู่ในการอ้างอิงสำหรับอ้างวิกิพีเดีย แน่นอนว่าเรื่องราวทั้งหมดอาจเป็นหลักฐานได้ ... มันยากที่จะเชื่อเช่นว่า Dennis Ritchie คิดเพียงการตรวจสอบตัวละครตัวแรกจะไม่เป็นไร
ฉันไม่เห็นด้วยกับผู้เขียนจะดีกว่าถ้าวางไฟล์การกำหนดค่าที่ซ่อนอยู่ในไดเรกทอรีของตัวเองแทนที่จะให้คำนำหน้าสากล คำนำหน้ามีความยืดหยุ่นมากขึ้นเพื่อให้สามารถอยู่ในต้นไม้สั่งเหมือนและ.gitignore
.htaccess
พยานว่าไฟล์ที่จัดเรียงยังปรากฏร่วมกันเมื่อเรียง lexicographically - ดังนั้นบางทีนี่คือวัตถุประสงค์หลังจากทั้งหมด
ส่วนใหญ่คำตอบเดียวกับ@Panos 'ใน stackoverflow :
ในระยะสั้นมันพัฒนามาจากd
และdd
( d
ไดเรกทอรีและd
ไดเรกทอรีของd
ไดเรกทอรี) ซึ่งสร้างขึ้นโดยผู้ใช้ด้วยมือ d
กลายเป็นจุดและสิ่งเหล่านั้น.
และ..
ถูกสร้างขึ้นครั้งแรกโดยmkdir
ยูทิลิตี้ (setuid หลังจากการเชื่อมโยงไดเรกทอรีไม่ได้รับอนุญาตจากผู้ใช้เพียงแค่) และต่อมาโดยการmkdir
เรียกระบบ
ข้อความที่ตัดตอนมาจากการสัมภาษณ์กับ Ken Thompson (1989-09-06):
MSM : แต่สำหรับผู้ใช้มันจะดูคล้าย ๆ กับลำดับชั้นของไดเรกทอรี
Thompson : ไม่คนแรกคือ DG ในความเป็นจริงมันไม่ได้เป็นแบบวนซ้ำ หากคุณเข้าใจระบบไฟล์ UNIX นั่นคือ .... มี I-list ซึ่งเป็นคำจำกัดความของไฟล์ทั้งหมดในระบบ จากนั้นไฟล์บางไฟล์นั้นเป็นไดเรกทอรีที่เพิ่งมีชื่อและหมายเลข I ไม่มีสิ่งใดในนั้นที่ จำกัด มันไว้กับต้นไม้ ดังนั้นในความเป็นจริงมันไม่ได้เป็นแบบลำดับขั้นเลย
ชายรักชาย : ฉันเข้าใจ
ธ อมป์สัน : และเราไม่ได้ห้ามมันไว้กับต้นไม้ เรากำลังทดลองกับโทโพโลยีต่างๆ สิ่งที่เราทำลงเอยก็คือกลายเป็นรูปธรรมและบังคับให้โทโพโลยีที่จริงแล้วโทโพโลยีที่มาจากการประชุมจากระบบนั้น ... ทุกครั้งที่เราสร้างไดเรกทอรีโดยการประชุมเราวางไว้ในไดเรกทอรีอื่นที่เรียกว่าdirectory - directoryซึ่งก็คือ dd ชื่อของมันคือ dd และไดเรกทอรีผู้ใช้ทั้งหมดและในความเป็นจริงไดเรกทอรีอื่น ๆ ส่วนใหญ่ผู้ใช้รักษาระบบไดเรกทอรีของตัวเองมีตัวชี้กลับไปที่ dd และ dd ย่อลงเป็นdot-dotและ dd มีไว้สำหรับไดเรกทอรีไดเรกทอรี มันเป็นสถานที่ที่คุณสามารถไปที่ไดเรกทอรีอื่น ๆ ในระบบเพื่อรักษาชามสปาเก็ตตี้นี้ ดังนั้นฉันหมายถึงปอยนี้ในรูปแบบต่าง ๆ ซึ่งเป็นการประชุมที่เคร่งครัดในการนำ DG ไปใช้กับชุดไดเรกทอรีและไฟล์แบบสุ่มที่ถูกบังคับให้ใช้แบบอักษรที่เราเก็บรักษาไว้ เมื่อเราเริ่มเขียนสิ่งต่าง ๆ เช่นระบบไฟล์ที่ตรวจสอบโปรแกรมและสิ่งต่าง ๆ การล็อกไดเรกทอรีสปาเก็ตตี้ชามและค้นหาสิ่งที่แยกจากกันฉันหมายความว่าคุณจะแยกบางสิ่งบางอย่างออกและไม่ได้รับคืนเพราะคุณรู้ว่าคุณทำหายไป ปัญหาเหล่านั้นใกล้จะผ่านพ้นไม่ได้ดังนั้นในการดำเนินการครั้งต่อไปเราจึงจำเป็นต้องจัดประเภทที่แข็งแกร่งกว่านั้น