เหตุใด Windows จึงใช้แบ็กสแลชสำหรับเส้นทางและ Unix forward slash


85

มันทำให้ฉันรำคาญที่ใช้ Unix ในวิทยาลัยและตอนนี้ทำงานด้าน Windows ประวัติศาสตร์ที่อยู่เบื้องหลังการตัดสินใจครั้งนี้คืออะไร? มีใครรู้บ้างไหมว่าทำไมจึงเป็นเช่นนี้


คำตอบ:


98

Unix ถูกนำมาใช้/เป็นตัวคั่นไดเรกทอรีประมาณปี 1970 ฉันไม่รู้ว่าทำไมตัวละครตัวนี้ถึงถูกเลือก ระบบบรรพบุรุษใช้ Multics >แต่ผู้ออกแบบของ Unix ได้ใช้>ร่วมกับ<การเปลี่ยนเส้นทางในเชลล์แล้ว (ดูทำไมไดเรกทอรีรากแสดงด้วย/เครื่องหมาย? )

MS-DOS 2.0 เปิดตัว\เป็นตัวคั่นไดเรกทอรีในช่วงต้นทศวรรษ 1980 เหตุผลที่/ไม่ได้ใช้คือ MS-DOS 1.0 (ซึ่งไม่สนับสนุนไดเรกทอรีเลย) ได้ใช้/เพื่อแนะนำตัวเลือกบรรทัดคำสั่ง มันต้องใช้เวลาการใช้งานของ/จากCP / Mซึ่งเกิดได้จากVMS คุณสามารถอ่านคำอธิบายที่ละเอียดกว่านี้ได้ว่าเหตุใดตัวเลือกดังกล่าวจึงถูกสร้างขึ้นบนบล็อกของ Larry Osterman (MS-DOS แม้ในเวลาสั้น ๆ มีตัวเลือกในการเปลี่ยนอักขระตัวเลือกเป็น-และตัวคั่นไดเรกทอรีเป็น/แต่ไม่ติด)

/มันเป็นที่รู้จักโดยโปรแกรมเมอร์ระดับ API ส่วนใหญ่ (ในทุกรุ่นของ DOS และ Windows) ดังนั้นคุณสามารถทำได้บ่อยครั้ง แต่ไม่สามารถหลีกเลี่ยงได้โดยใช้/เป็นตัวคั่นไดเรกทอรีใน Windows ข้อยกเว้นที่น่าสังเกตคือคุณไม่สามารถใช้/เป็นตัวคั่นหลัง\\?คำนำหน้าซึ่ง (แม้ใน Windows 7) เป็นวิธีเดียวที่จะระบุเส้นทางโดยใช้ Unicode หรือมีอักขระมากกว่า 260 ตัว

องค์ประกอบอินเทอร์เฟซผู้ใช้บางอย่างรองรับ/เป็นตัวคั่นไดเรกทอรีภายใต้ Windows แต่ไม่ทั้งหมด บางโปรแกรมเพิ่งส่งชื่อไฟล์ผ่านไปยัง API พื้นฐานดังนั้นจึงรองรับ/และ\ไม่สนใจ ในล่ามคำสั่ง (ในcommand.comหรือcmd) คุณสามารถใช้/ในหลายกรณี แต่ไม่เสมอไป ส่วนนี้ขึ้นอยู่กับรุ่นของ Windows (ตัวอย่างเช่นcd /windowsทำงานใน XP และ 7 แต่ไม่ได้อยู่ใน Windows 9x) ช่องรายการพา ธ Explorer ยอมรับ/(อย่างน้อยจาก XP ขึ้นไปอาจเป็นเพราะยอมรับ URL) ในทางกลับกันไดอะล็อกเปิดไฟล์มาตรฐานปฏิเสธสแล


2
/ได้รับการยอมรับว่าเป็นตัวคั่นไดเรกทอรีโดยบรรทัดคำสั่ง MS-DOS หรือ Windows
Tamara Wijsman

1
"C: \ Windows \ System32> cd / windows / system" ทำงาน
Andrew J. Brehm

@TomWij: คุณมีการอ้างอิงถึงตำแหน่งที่ได้/รับการยอมรับอย่างแม่นยำในบรรทัดคำสั่งหรือไม่? ตัวอย่างเช่นdir /pทำอะไร และdir c:/p? และc:/windows/notepad.exe? และstart /windows/notepad.exe? เป็นต้น (ฉันไม่มีเครื่อง Windows ที่นี่เพื่อทดสอบ)
Gilles

2
/อาจถูกใช้เป็นตัวคั่นไดเรกทอรีใน UNIX เพราะมันเป็นกุญแจง่าย (unshifted) เพื่อโจมตีบน Teletype อักขระพิเศษที่ไม่: - ; , . /เปลี่ยนแปลงคือ
Daniel R Hicks

2
น่าสนใจพอฉันเพิ่งขุดผ่านแหล่งข้อมูลและคู่มือ DOS 1 และ 2 และพบว่า Microsoft ใช้/(และ-สวิตช์) เช่น Xenix และได้รับแรงบันดาลใจจาก Xenix แต่ IBM เปิดตัวก่อนที่ Microsoft จะส่งไปยัง OEM และ IBM ใช้` (and / `สำหรับสวิตช์) และเปลี่ยนพรอมต์จากA:เป็นA>ดังนั้นพวกเขาจึงเปลี่ยนเอกสารเริ่มต้นและรถส่ง (ยังถือว่า// -) รวมทั้งบันทึกว่ามันเปลี่ยนไปและทำไม
mirabilos

9

พื้นฐานของ Windows APIสามารถยอมรับทั้งเครื่องหมายหรือเฉือนที่จะแยกจากกันไดเรกทอรีและไฟล์ส่วนประกอบของเส้นทาง แต่การประชุมไมโครซอฟท์คือการใช้เครื่องหมายและ API ที่ส่งกลับเส้นทางวางทับขวาใน

MS-DOS 2.0คัดลอกระบบไฟล์แบบลำดับชั้นจาก Unix และใช้เครื่องหมายสแลช (แต่อาจเป็นการยืนยันของIBM ) เพิ่มเครื่องหมายแบ็กสแลชเพื่อให้พิมพ์เส้นทางลงในเชลล์คำสั่งในขณะที่รักษาความเข้ากันได้กับMS-DOS 1.0และCP / Mโดยที่เครื่องหมายทับเป็นตัวบ่งชี้ตัวเลือกบรรทัดคำสั่ง

เปรียบเทียบ

dir/w

ซึ่งจะแสดงไดเรกทอรีปัจจุบันในรูปแบบกว้าง ๆ

dir\w

ซึ่งไหลแฟ้มในผู้อำนวยการwdir

อ้างอิง:

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