หมายความว่า . และ .. ไดเรกทอรีใน linux [ซ้ำ]


5

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

เมื่อแสดงไฟล์และไดเรกทอรีที่ซ่อนอยู่ในเทอร์มินัลโดยใช้ ls -la มันแสดงสองไดเรกทอรีเช่น . and .. และเมื่อรายการเนื้อหาของไดเรกทอรี dot (.) มันมีไฟล์และไดเรกทอรีทั้งหมดที่อยู่ในไดเรกทอรีหลักมันจะสร้างโคลนของไฟล์นั้นหรือไม่ถ้าใช่มีไฟล์ที่ซ้ำกันหรือไม่

และในขณะที่เรียกใช้สคริปต์เรามีการใช้จุดไดเรกทอรีนั้นถ้าเราอยู่ในไดเรกทอรีที่มันอยู่ ./script

แต่ไม่ใช่เมื่อเราเรียกใช้จากไดเรกทอรีอื่นเช่น

/Document/myscript/script

ทำไม?

คำตอบ:


13
  • . เหมือนกับการพูดว่า "ไดเรกทอรีปัจจุบัน" ดังนั้น ./script หมายถึงรัน script ไฟล์ในไดเรกทอรีปัจจุบัน
  • .. เหมือนกับคำว่า "parent directory" (หนึ่งไดเรกทอรีขึ้นไป)

นอกจากนี้ถ้าคุณอยู่ใน / ไดเรกทอรีไม่มีความแตกต่างระหว่าง:

/Document/myscript/script

และ

./Document/myscript/script

ดังนั้นเมื่อคุณใช้จุด . หรือ .. ) เส้นทางที่คุณระบุคือ ญาติ ไปยังไดเรกทอรี \ parent ปัจจุบันคุณอยู่

หากคุณใช้เส้นทางแบบเต็มเส้นทางจะเป็นเช่นนั้น แน่นอน พา ธ ไปยังไฟล์


4
ฉันจะถูกต้องในการเพิ่มว่าเหตุผลของการดำเนินการ ./script ค่อนข้างมากกว่า script จะป้องกันการประมวลผลสคริปต์ที่มีชื่อเหมือนกันบางแห่งใน PATH ของคุณหรือไม่ (สำคัญหากคุณพิมพ์ชื่อสคริปต์ผิด)
Chris H

3
ใช่คุณถูกต้อง. ./script จะรันสคริปต์ในไดเรกทอรีปัจจุบันในขณะที่เพิ่ง script จะดู PATH. ฉันไม่คิดว่ามันจะดูในไดเรกทอรีปัจจุบันหากไม่อยู่ PATH.
phoops

4
ระบบ PATH on Unix ไม่รวมไดเรกทอรีปัจจุบัน (.) เป็นการป้องกันความปลอดภัย
David

จุดที่อยู่ตรงกลางของเส้นทางทำอะไร (เช่น /Documents/./myscript )
Bogdacutu

จุดเดียวภายในพา ธ ไม่มีผลใด ๆ ตามที่อ้างถึง แล้วก็ ไดเรกทอรีปัจจุบัน ดังนั้น x/y/./z เป็นเช่นเดียวกับ x/y/z. จุดสองจุดขึ้นไปหนึ่งระดับดังนั้นสมมติว่า y1 และ y2 เป็นไดเรกทอรีภายในไดเรกทอรี x x/y1/../y2/z เป็นเช่นเดียวกับ x/y2/z
DoxyLover
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.