// หมายความว่าอย่างไรในเส้นทาง?


9

ฉันทำงานในอาคารของฉันเมื่อฉันสะกดผิดในขณะที่cdไปที่รูท ( /) บังเอิญฉันพิมพ์//และฉันได้รับใน terminal:

root@weblocalhost://#

เมื่อฉันพิมพ์pwdฉันจะได้รับการตอบสนอง//แต่เมื่อฉันพิมพ์ls -sฉันได้รับรายการเช่นเดียวกับใน/ไดเรกทอรี

เมื่อคุณพิมพ์มากกว่า 2 นั่นคือ///คุณจะได้รับ:

root@weblocalhost:/#

เสมอ 1 /ยกเว้น 2 มีความแตกต่างและมี//ไว้เพื่ออะไร

คำตอบ:


8

/ เทียบเท่ากับ //

จากข้อมูลจำเพาะ POSIX (เน้นการเพิ่ม):

3.267 ชื่อพา ธ

สตริงที่ใช้เพื่อระบุไฟล์ ในบริบทของ POSIX.1-2008 ชื่อพา ธ อาจถูก จำกัด ไว้ที่ {PATH_MAX} ไบต์รวมถึงการยกเลิก null null มี<slash> อักขระเริ่มต้นที่เป็นตัวเลือกตามด้วยชื่อไฟล์ตั้งแต่ศูนย์หรือมากกว่าคั่นด้วย<slash> อักขระ ชื่อพา ธ สามารถมี<slash>อักขระต่อท้ายได้หนึ่งตัวหรือมากกว่า อักขระที่ต่อเนื่องหลาย<slash>ตัวจะถูกพิจารณาว่าเป็นตัวเดียว<slash>ยกเว้น<slash>ตัวอักษรนำหน้าสองตัว

และ :

4.12 การแก้ไขชื่อพา ธ

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

สำหรับการอภิปรายที่ดีของข้อยกเว้น (cygwin และไดเรกทอรี) ดู: linux จัดการกับตัวคั่นเส้นทางหลาย ๆ ตัวติดต่อกันอย่างไร (/ home //// ชื่อผู้ใช้ / ไฟล์ //)?


4

คุณสามารถเพิ่มเครื่องหมายทับหลายอันลงในไดเรกทอรีและมันจะไม่เปลี่ยนแปลงอะไรเลย

เช่นคำสั่งทั้งสามนี้ทำเหมือนกันทั้งหมด:
cd /home
cd /home/
cd /home//

หลังจากไดเรกทอรีการทำงานปัจจุบันของฉันถูกตั้งค่าเป็น / home (ตรวจสอบด้วยpwd)

ฉันเดาว่าคุณมีพรอมต์ของคุณที่กำหนดค่าให้ทำอะไรที่ชาญฉลาดและคุณประสบปัญหาที่ไม่คาดคิด สิ่งใดที่คุณได้รับเมื่อคุณecho $PS1?

ลิงก์ไปที่ความคิดเห็นในhttps://unix.stackexchange.com/ซึ่งอาจอธิบายได้


PS1 ของฉันที่ทุบตีใน OSX คือ "\ h: \ W \ u \ $" และฉันก็มีพฤติกรรมแปลก ๆ เช่นกัน / และ /// และ //// และ ///// ทั้งหมดแสดงเป็น / แต่กรณีพิเศษของเครื่องหมายสแลชสองตัวแสดงขึ้นเป็นสแลชสองตัว
Sparr

ฉันได้รับ \ u @ \ h: \ w (<b> u </b> ser ที่ <b> h </b> ost, <b> w </b> orking dir) ใน Ubuntu 12.10 แต่ฉันไม่สามารถ ทำให้เกิดปัญหาอีกครั้ง
Hennes

ฉันไม่ได้รับเสมอ // เมื่อตรวจสอบ pwd ในทุกกรณี สำหรับ echo $ PS1 ฉันได้รับ: \ [\ e] 0; \ u @ \ h: \ w \ a \] $ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $
Dimitris Theodoridis

ฉันเพิ่งตั้งค่า PS1 ของฉันด้วยตนเองและฉันไม่สามารถทำซ้ำได้ด้วยเครื่องหมายทับสองอัน แปลก. ไม่ใช่กับ 1, 3 หรือ 4 เท่านั้นที่มี 2 ฉันเป็นผู้สูญเสียที่จะอธิบายเรื่องนี้
Hennes

บางทีความคิดเห็นจาก unix.stackexchange นี้อาจเป็นคำตอบ: ฉันเชื่อว่า API ของ Windows POSIX compat APIs จะปฏิบัติต่อ // remote / ... เหมือนกับรูปแบบ UNC path \\ remote \ ... - สตีเฟ่น P 20 มกราคม 11 ที่ 0:39
Hennes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.