กลับไปหน้าบทความ

อ่าน 6 นาที

เส้นทาง (การคำนวณ)

เส้นทาง(หรือfilepath , file path , pathnameหรือคำอื่นๆ ที่คล้ายกัน) คือสตริงที่ระบุรายการในระบบไฟล์แบบลำดับชั้น ได้อย่างเฉพาะเจาะจง โดยทั่วไป เส้นทางจะประกอบด้วยชื่อไดเร็กทอรี...

เส้นทาง (การคำนวณ)

เส้นทาง(หรือfilepath , file path , pathnameหรือคำอื่นๆ ที่คล้ายกัน) คือสตริงที่ระบุรายการในระบบไฟล์แบบลำดับชั้น ได้อย่างเฉพาะเจาะจง โดยทั่วไป เส้นทางจะประกอบด้วยชื่อไดเร็กทอรี ตัวระบุรูปแบบพิเศษ และชื่อไฟล์ (ถ้ามี) โดยทั้งหมดคั่นด้วยตัวคั่นตัวคั่นนี้อาจแตกต่างกันไปตามระบบปฏิบัติการ แต่ระบบที่นิยมใช้ในปัจจุบันมักใช้เครื่องหมายทับ ( /) เครื่องหมายแบ็ กสแลช (\)หรือเครื่องหมายโคลอน (:) /\:

ความไวต่อตัวพิมพ์ใหญ่-เล็กของส่วนประกอบพาธแต่ละรายการจะแตกต่างกันไปตามระบบปฏิบัติการหรือตามตัวเลือกที่ระบุไว้ในขณะที่สร้างหรือใช้งานระบบไฟล์ครั้งแรกในทางปฏิบัติ หมายความว่าสำหรับ ระบบ ที่ไวต่อตัวพิมพ์ใหญ่-เล็ก ส่วนประกอบพาธที่มีชื่อcomponent1และComponent1สามารถอยู่ร่วมกันได้ในระดับเดียวกันในลำดับชั้น ในขณะที่สำหรับ ระบบไฟล์ที่ ไม่ไวต่อตัวพิมพ์ใหญ่-เล็ก จะไม่สามารถอยู่ร่วมกันได้ (จะเกิดข้อผิดพลาด) ระบบไฟล์ดั้งเดิมของ macOS และ Windows ไม่ไวต่อตัวพิมพ์ใหญ่-เล็กโดยค่าเริ่มต้น ในขณะที่ระบบไฟล์ Linux ทั่วไปไวต่อตัวพิมพ์ใหญ่-เล็ก[ 1 ] [ 2 ] [ 3 ]

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

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

ประวัติศาสตร์

Multicsเป็นผู้ริเริ่มระบบไฟล์แบบลำดับชั้นที่มีไดเร็กทอรี (คั่นด้วย ">") ในช่วงกลางทศวรรษ 1960 [ 4 ]

ประมาณปี 1970 ระบบปฏิบัติการ Unixได้นำเครื่องหมายทับ (/) มา/ใช้เป็นตัวคั่นไดเร็กทอรี

เดิมทีMS-DOSไม่รองรับไดเร็กทอรี เมื่อเพิ่มฟีเจอร์นี้ การใช้เครื่องหมายทับตามมาตรฐาน Unix ไม่ใช่ตัวเลือกที่ดี เนื่องจากคำสั่งที่มีอยู่หลายคำสั่งใช้เครื่องหมายทับเป็น คำนำหน้า สวิตช์ (เช่นdir /w) ในทางตรงกันข้าม Unix ใช้เครื่องหมายขีดกลาง-เป็นคำนำหน้าสวิตช์\ในที่สุดจึงเลือกใช้เครื่องหมายแบ็กสแลชแทน เนื่องจากมีความคล้ายคลึงกับเครื่องหมายทับและไม่ขัดแย้งกับคำสั่งที่มีอยู่ ข้อกำหนดนี้ยังคงใช้ในWindows ต่อไป อย่างไรก็ตาม บางส่วนของ Windows ก็ยอมรับหรือเข้าใจเครื่องหมายทับแบบ Unix เช่น กันเช่นPowerShell [ 5 ] [ 6 ]

สรุประบบต่างๆ

ตารางต่อไปนี้อธิบายไวยากรณ์ของเส้นทางในระบบปฏิบัติการที่สำคัญต่างๆ:

ระบบ ไดเร็กทอรีราก เส้นทางกำหนดขอบเขต ผู้กำกับฝ่ายปฏิบัติงาน ผู้อำนวยการใหญ่ ผู้กำกับบ้าน ตัวอย่าง
ระบบ Unixและ ระบบ ที่คล้าย UnixรวมถึงmacOS [ 7 ]//....~/home/user/docs/Letter.txt ./child ../../greatgrandparent ~/.rcinfo
วินโดวส์ , พร้อมท์คำสั่ง(สัมพันธ์กับไดเร็กทอรีทำงานปัจจุบัน) หรือ[อักษรไดรฟ์]:\หรือ\\.\หรือ\\?\หรือ UNC / [ a ] ​​หรือ\....C:\user\docs\Letter.txt /user/docs/Letter.txt C:\user\docs\somefile.ext: ชื่อสตรีมทางเลือก

C:picture.jpg \\?\UNC\Server01\user\docs\Letter.txt \\.\COM1

พาวเวอร์เชลล์[อักษรไดรฟ์]:/หรือ[ชื่อไดรฟ์]:\หรือ[ชื่อ PSSnapIn]\[ชื่อ PSProvider]::[ไดรฟ์รากของ PSDrive]หรือ UNC / [ a ] ​​หรือ\....~C:\user\docs\Letter.txt ~\Desktop UserDocs:/Letter.txt Variable:PSVersionTable Registry::HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft.PowerShell.Security\Certificate::CurrentUser\
UNC [ 8 ]\\[เซิร์ฟเวอร์]\[ชื่อแชร์]\/\\Server01\user\docs\Letter.txt
DOS , COMMAND.COM[อักษรไดรฟ์]:\หรือ\\[ชื่อเซิร์ฟเวอร์]\[วอลุ่ม]\\....C:\USER\DOCS\LETTER.TXT A:PICTURE.JPG \\SERVER01\USER\DOCS\LETTER.TXT
โอเอส/2[อักษรไดรฟ์]:\หรือ\\[ชื่อเซิร์ฟเวอร์]\[วอลุ่ม]\/หรือ\....C:\user\docs\Letter.txt A:Picture.jpg \\SERVER01\USER\docs\Letter.txt
RSX-11 MCR [ 9 ][ชื่ออุปกรณ์]:DR0:[30,12]LETTER.TXT;4 [ b ]
TOPS-20 DCL [ 10 ][ชื่ออุปกรณ์]:.PS:<USER.DOCS>LETTER.TXT,4
OpenVMS DCL [ 11 ] [ 12 ][ชื่ออุปกรณ์]:[000000]หรือ[NODE["รหัสผ่านชื่อบัญชี"]]::[ชื่ออุปกรณ์][000000]:.[][-]SYS$LOGIN:NODE$DISK:[USER.DOCS]PHOTO.JPG USER:[000000]000000.DIR []IN_THIS_DIR.COM; [-.-]GreatGrandParent.TXT SYS$SYSDEVICE:[.DRAFTS]LETTER.TXT;4 GEIN::[000000]LETTER.TXT;4 SYS$LOGIN:LOGIN.COM
ProDOS AppleSoft BASIC [ 13 ]/[ชื่อไดรฟ์หรือวอลุ่ม]///SCHOOL.DISK/APPLEWORKS/MY.REPORT FLIGHT.SIMULATOR,D2
AmigaOSเอมิกา CLI / AmigaShell [ 14 ][ไดรฟ์, วอลุ่ม, อุปกรณ์ หรือกำหนดชื่อ]:/สตริงว่าง/Workbench:Utilities/MultiView DF0:S/Startup-Sequence S:Startup-Sequence TCP:en.wikipedia.com/80
RISC OS ShellCLI [ 15 ][fs type[#option]:][:หมายเลขไดรฟ์หรือชื่อดิสก์]$ [ c ].@^&ADFS::MyDrive.$.Documents.Letter Net#MainServer::DataDrive.$.Main.sy10823 LanMan::WindowsC.$.Pictures.Japan/gif NFS:&.!Choices ADFS:%.IfThere @.inthisdir ^.^.greatgrandparent [ d ]
ตัวจัดการไฟล์ ระบบปฏิบัติการซิมเบียน\\\user\docs\Letter.txt
โดเมน/เชลล์ ระบบปฏิบัติการ [ 16 ]// (รากของโดเมน) หรือ/ (รากของโหนดปัจจุบัน) /.\~//node/home/user/docs/Letter.txt ./inthisdir \\greatgrandparent ~rcinfo
เมนูเอทโอเอสเอ็มดี ///ไฟล์
สแตรตัส วีโอเอสซีแอลไอ %[system_name]#[module_name]>><%sysname#module1>SubDir>AnotherDir
TACL ของเคอร์เนลNonStop [ e ].โหนด.$ดิสก์.ซับ โวล .ไฟล์ โหนด.$อุปกรณ์โหนด.$อุปกรณ์#ซับเดวิเออร์
CP/M CCP [ 17 ][ตัวอักษรไดรฟ์:]ไม่มีไดเร็กทอรีย่อย มีเฉพาะพื้นที่ผู้ใช้ 0–F เท่านั้นA:LETTER.TXT
จีเอส/โอเอส:[ชื่อวอลุ่ม]:หรือ.[ชื่ออุปกรณ์]:หรือ[คำนำหน้า]: [ f ]:หรือ/@:Apps:Platinum.Paint:Platinum.Paint *:System:Finder .APPLEDISK3.5B/file
OpenHarmony exec, Oniro รวมถึงHarmonyOS [ 18 ] [ 19 ]hb set -root [ROOT_PATH]หรือhb set -p --product [PRODUCT_NAME]> หรือ /./...ไฟล์ LOCAL/MEDIA_TYPE_/Download/Letter.txt

ในภาษาโปรแกรม

ภาษาโปรแกรมส่วนใหญ่ใช้การแสดงเส้นทางของระบบพื้นฐาน แต่บางภาษาก็อาจไม่ขึ้นกับระบบ[ 2 ]

ตัวอย่างเช่น โค้ด C นี้ขึ้นอยู่กับ ระบบ และอาจล้มเหลวในระบบที่ตรงข้ามกัน: [ 1 ]

uxFile = fopen ( "project/readme.txt" , "r" ) // ล้มเหลวบน Windows winFile = fopen ( "C: \\ Program Files \\ bin \\ config.bat" , "r" ) // ล้มเหลวบน Unix
  • ในJava ฟิลด์ File.separatorจะเก็บตัวคั่นที่ขึ้นอยู่กับระบบ[ 20 ]บางฟังก์ชันไม่จำเป็นต้องใช้ตัวคั่นเลย
import java.io.File ; import java.nio.file.Path ; import java.nio.file.Paths ; // ... File file = new File ( "path" + File.separator + "file.txt" ); Path path = Paths.get ( " path" , " file.txt" ) ;
  • ในPython โมดูล นี้pathlibเสนอการดำเนินการเส้นทางที่ไม่ขึ้นกับระบบ[ 21 ]
จากpathlib นำเข้าPathด้วย( Path ( "path" ) / "to" / "file.txt" ) . open () as open_file : ...

ในระบบ Unix

ระบบที่คล้าย Unix ส่วนใหญ่ใช้ไวยากรณ์ที่คล้ายกัน[ 22 ] POSIXอนุญาตให้จัดการเส้นทางที่ขึ้นต้นด้วยเครื่องหมายทับสองตัวในลักษณะที่กำหนดโดยการใช้งาน[ 23 ]แม้ว่าในกรณีอื่นๆ ระบบจะต้องจัดการเครื่องหมายทับที่ติดกันเป็นหนึ่งเดียว[ 24 ]

แอปพลิเคชันจำนวนมากบนระบบที่คล้าย Unix (เช่นscp , rcpและrsync ) ใช้คำจำกัดความทรัพยากรเช่นhostname:/directorypath/resourceหรือ รูปแบบ URIที่มีชื่อบริการ (ในที่นี้คือ ' smb ' ) เช่นsmb://hostname/directorypath/resource[ 3 ]

ใน macOS

ในระหว่างการพัฒนาmacOS นั้น ได้รับมรดกตัวเลือกการกำหนดเส้นทางบางส่วนมาจาก Classic Mac OSและNeXTSTEP ที่คล้ายกับ Unix Classic Mac OS ใช้ เครื่องหมายโคลอน ในขณะที่ ระบบ Unixและระบบที่คล้ายกับ Unix ใช้เครื่องหมายทับ เป็นตัวคั่นเส้นทาง เพื่อรักษาความเข้ากันได้ของซอฟต์แวร์และความคุ้นเคยของผู้ใช้ และเพื่อให้ระบบไฟล์ดิสก์สามารถใช้งานได้ทั้งใน Classic Mac OS และ macOS บางส่วนของ macOS จึงแปลงระหว่างเครื่องหมายโคลอนและเครื่องหมายทับในชื่อเส้นทาง[ 25 ]ตัวอย่างเช่น ระบบไฟล์ HFS+ จาก Classic Mac OS จะแปลงเครื่องหมายโคลอนในชื่อไฟล์เป็นเครื่องหมายทับ และเมื่ออ่านไดเร็กทอรี จะแปลงเครื่องหมายทับในชื่อไฟล์เป็นเครื่องหมายโคลอน[ 26 ]และ ชุดเครื่องมือ Carbonจะแปลงเครื่องหมายโคลอนในชื่อเส้นทางเป็นเครื่องหมายทับ และเครื่องหมายทับในชื่อเส้นทางเป็นเครื่องหมายโคลอน แล้วแปลงกลับเมื่อให้ชื่อไฟล์และชื่อเส้นทางแก่ผู้เรียก[ 26 ]:/

ใน DOS และ Windows

ภาพหน้าจอของ หน้าต่าง Command Prompt ใน Windows ที่แสดงชื่อไฟล์ในไดเร็กทอรี

DOS และ Windows ไม่มีไดเร็กทอรีรากเดียว แต่ละไดรฟ์จัดเก็บข้อมูลจะมีไดเร็กทอรีราก ซึ่งระบุด้วยตัวอักษรไดรฟ์หรือผ่าน UNC

การเปรียบเทียบชื่อไดเร็กทอรีและชื่อไฟล์ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก: "test.TXT" จะตรงกับ "Test.txt" [ 27 ]

ระบบปฏิบัติการ Windows เข้าใจเส้นทางประเภทต่อไปนี้:

  • เส้นทางท้องถิ่น เช่นC:\File.
  • หลักเกณฑ์การตั้งชื่อสากล (UNC )
  • เส้นทางอุปกรณ์ DOS เช่น\\.\C:\Fileหรือ แบบ\\?\UNC\Server\Volume\Fileแรก\\?\จะข้ามการทำให้เส้นทางเป็นมาตรฐาน แบบที่สอง\\.\จะใช้เนมสเปซอุปกรณ์ดิบ[ 27 ] [ 28 ]

ในWindows APIฟังก์ชันการอ่านเขียนไฟล์จะแปลง/เป็น โดยอัตโนมัติ \(ยกเว้นเมื่อใช้\\?\คำนำหน้า) เส้นทางที่ใช้ Windows API มาตรฐาน (ย้อนกลับไปถึง DOS และWin9x ) ถูกจำกัดไว้ที่ 260 ตัวอักษรหรือน้อยกว่า ตามที่กำหนดโดยตัวแปรสภาพแวดล้อมMAX_PATHเพื่อความเข้ากันได้กับแอปพลิเคชันรุ่นเก่า ข้อจำกัดนี้ไม่ได้ถูกลบออกจนกระทั่ง Windows 10 บิลด์ 1607 เมื่อสามารถขยายได้ถึง 32,767 Windows NT รองรับความยาวเส้นทาง 32,767 ภายในเสมอ แต่เฉพาะเมื่อใช้ Unicode API หรือบังคับใช้เส้นทาง UNC โดยใช้\\?\คำนำหน้า[ 29 ]

PowerShellอนุญาตให้ใช้สแลชเพื่อความเข้ากันได้แบบย้อนหลัง: [ 30 ]

PS C :\> Get-Content -Path "C:/path/to/file.txt"นี่คือข้อความบางส่วนในไฟล์

ข้อผิดพลาดเกี่ยวกับอักขระเยน/วอน

ระบบปฏิบัติการ Windows เวอร์ชันภาษาญี่ปุ่นและเกาหลีมักแสดงอักขระ ' ¥ ' หรือ ' ' แทนตัวคั่นไดเร็กทอรี ทั้งนี้เนื่องจากในโค้ดเพจ ANSI อักขระที่ 0x5C คือเครื่องหมายแบ็กสแลช ในขณะที่ในโค้ดเพจภาษาญี่ปุ่นและเกาหลี 0x5C คือสัญลักษณ์เยนและวอนตามลำดับ ดังนั้นเมื่อใช้อักขระสำหรับเครื่องหมายแบ็กสแลช สัญลักษณ์อื่นๆ จึงปรากฏขึ้น[ 31 ]

หลักเกณฑ์การตั้งชื่อสากล

Microsoft Universal Naming Convention ( UNC , uniform naming conventionหรือnetwork path ) เป็นไวยากรณ์ที่ใช้อธิบายตำแหน่งของทรัพยากรเครือข่าย เช่น ไฟล์ที่ใช้ร่วมกัน ไดเร็กทอรี หรือเครื่องพิมพ์ เส้นทาง UNC มีรูปแบบทั่วไปดังนี้: [ 2 ]

\\ชื่อคอมพิวเตอร์\โฟลเดอร์ที่ใช้ร่วมกัน\ทรัพยากร

อินเทอร์เฟซ Windows บางตัวอนุญาตหรือกำหนดให้ใช้ไวยากรณ์ UNC สำหรับ การเข้าถึงการแชร์ WebDAVแทนที่จะใช้ URL ไวยากรณ์ UNC ได้รับการขยายด้วยส่วนประกอบเสริมเพื่อระบุการใช้ SSL และหมายเลขพอร์ต TCP/IP ดังนั้น URL ของ WebDAV https://hostname:443/SharedFolder/Resourceจึงกลายเป็น\\hostname@SSL@443\SharedFolder\Resource. [ 32 ]

เมื่อดูจากระยะไกล ชื่อของ "SharedFolder" อาจแตกต่างจากชื่อที่โปรแกรมบนเซิร์ฟเวอร์เห็นเมื่อเปิด "\SharedFolder" โดยชื่อของ SharedFolder จะประกอบด้วยชื่อที่กำหนดขึ้นโดยพลการในระหว่างการสร้างการแชร์

เนื่องจาก UNC ขึ้นต้นด้วยเครื่องหมายแบ็กสแลชสองตัว และเครื่องหมายแบ็กสแลชยังใช้สำหรับลำดับการหลีกเลี่ยงและในนิพจน์ปกติ จึงอาจเกิด กรณีที่คล้ายกับอาการไม้จิ้มฟันเอียงได้ สตริงที่ถูกหลีกเลี่ยงสำหรับนิพจน์ปกติที่ตรง กับ UNC จะขึ้นต้นด้วยเครื่องหมายแบ็กสแลช 8 ตัว เนื่องจากทั้งสตริงและนิพจน์ปกติจำเป็นต้องมีการหลีกเลี่ยง วิธี นี้ \\\\\\\\สามารถทำให้ง่ายขึ้นได้โดยการใช้สตริงดิบเช่นใน@"\\\\"C#, PythonหรือPerlr'\\\\'qr{\\\\}

ดูเพิ่มเติม

  • basename  – คำสั่งเชลล์สำหรับแยกนามสกุลจากพาธ
  • ไฟล์อุปกรณ์  – อินเทอร์เฟซสำหรับไดรเวอร์อุปกรณ์ที่ปรากฏในระบบไฟล์
  • dirname  – คำสั่งเชลล์สำหรับแยกส่วนของพาธไดเร็กทอรีออกจากพาธที่กำหนด
  • ระบบไฟล์แบบกระจายศูนย์  – ประเภทหนึ่งของระบบไฟล์แบบกระจายศูนย์
  • ชื่อไฟล์  – ข้อความที่ใช้ระบุไฟล์คอมพิวเตอร์แต่ละไฟล์อย่างเฉพาะเจาะจง
  • มาตรฐานลำดับชั้นของระบบไฟล์  – มาตรฐานของ Linux สำหรับโครงสร้างไดเร็กทอรี
  • ชื่อไฟล์แบบเต็ม (Fully qualified file name  ) – ชื่อที่ไม่กำกวมในรหัสคอมพิวเตอร์
  • PATH (ตัวแปร)  – ตัวแปรสภาพแวดล้อมของคอมพิวเตอร์
  • URL  – ที่อยู่บนเวิลด์ไวด์เว็บ

หมายเหตุ

  1. ^ a bความเข้ากันได้มีจำกัด อาจใช้งานไม่ได้ในโปรแกรม Windows ทุกโปรแกรม
  2. ^เรียงตามลำดับแล้ว ฟิลด์ต่างๆ มีดังนี้ddnn:[g,m]:filename.type;version
  3. ^& ,%, และ@ยังสามารถใช้เพื่ออ้างอิงถึงรากของผู้ใช้ปัจจุบัน ไลบรารี และไดเร็กทอรีปัจจุบัน ตามลำดับ
  4. ^เมื่อมีการเมานต์ระบบไฟล์ที่มีนามสกุลไฟล์.อักขระจะถูกเปลี่ยนเป็น/ดังตัวอย่าง Japan/gif ด้านบน
  5. ^ย่อมาจาก Tandem Advanced Command Language
  6. ^[prefix]อาจเป็นตัวเลข (0–31)  *(ไดรฟ์บูต) หรือ@(ไดเร็กทอรีโฮม AppleShare)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Path_(computing)&oldid=1357841677 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เส้นทาง (การคำนวณ)

เส้นทาง(หรือfilepath , file path , pathnameหรือคำอื่นๆ ที่คล้ายกัน) คือสตริงที่ระบุรายการในระบบไฟล์แบบลำดับชั้น ได้อย่างเฉพาะเจาะจง โดยทั่วไป เส้นทางจะประกอบด้วยชื่อไดเร็กทอรี...

ประวัติศาสตร์

Multics เป็นผู้ริเริ่ม ระบบไฟล์แบบลำดับชั้น ที่มีไดเร็กทอรี (คั่นด้วย ">") ในช่วงกลางทศวรรษ 1960 [ 4 ]

สรุประบบต่างๆ

ตารางต่อไปนี้อธิบายไวยากรณ์ของเส้นทางในระบบปฏิบัติการที่สำคัญต่างๆ:

ในภาษาโปรแกรม

ภาษาโปรแกรมส่วนใหญ่ใช้การแสดงเส้นทางของระบบพื้นฐาน แต่บางภาษาก็อาจไม่ขึ้นกับระบบ [ 2 ]