“.” และ“ .. ” หมายถึงอะไรเมื่ออยู่ในโฟลเดอร์


34

เมื่อฉันls -aดูไฟล์ที่ซ่อนในโฟลเดอร์มีไฟล์ที่ซ่อนอยู่ 2 ไฟล์ที่สร้างโดยค่าเริ่มต้นความสำคัญของไฟล์ทั้งสองนี้คืออะไร.และ..?

ls -a

ผลิต

.  ..

ฉันใช้พวกเขาบ่อยๆเมื่อฉันทำls -laเพราะมันจะแสดงสิทธิ์และความเป็นเจ้าของในไดเรกทอรีที่ฉันอยู่และไดเรกทอรีด้านบนสิ่งที่ฉันเข้ามา
Marco Ceppi

ฉันมีตัวแทนไม่เพียงพอที่จะลงคะแนนให้ปิด แต่ฉันได้ตั้งค่าสถานะในคำถามนี้เนื่องจากเป็นคำถามที่สามารถตอบได้ภายใน 3 วินาทีโดยการค้นหา google (และเนื่องจากมีการสนทนาเมื่อเร็ว ๆ นี้เกี่ยวกับคำถามที่ มีมากเกินไปง่ายใน SO บล็อก)
zzzzBov

1
^ zzzzBov ขอบคุณในภาษาสเปนสำหรับความมีน้ำใจของคุณ
mr_eclair

คำตอบ:


40

. เป็นโฟลเดอร์ปัจจุบัน

.. เป็นโฟลเดอร์ที่อยู่เหนือโฟลเดอร์ปัจจุบัน - โฟลเดอร์ที่มีโฟลเดอร์ปัจจุบัน

บางครั้งคุณจะเห็นว่ามีการใช้จุดเดียวเมื่อมีคนต้องการเรียกใช้สคริปต์จากไดเรกทอรีบ้านของพวกเขา ตัวอย่างเช่น: ./install-app.sh นั่นหมายความว่าไฟล์ "install-app.sh" อยู่ในไดเรกทอรีปัจจุบัน มันจะถูกต้องเช่นเดียวกับการทำ /home/username/directory/install-app.sh เช่นเดียวกันคุณสามารถทำได้ .. / install.app ถ้าไฟล์นั้นอยู่ในไดเรกทอรีหลัก เหตุผลที่เป็นเช่นนี้ไม่เพียง แต่สำหรับการนำทาง แต่ยังไม่ควรซ่อนแอปพลิเคชันระบบโดยไม่ตั้งใจด้วยการใส่ชื่อไฟล์ผิดในโฮมไดเร็กตอรี่ของคุณ


ถูกต้อง 100% คิดว่ามันเป็น hooks ที่อยู่ในทุก ๆ ไดเรกทอรี พวกเขาจะใช้อย่างหมดจดสำหรับการนำทาง คุณจะพบว่านี่ไม่ใช่แค่มาตรฐานของ linux แต่อยู่บน windows เช่นกัน อาจเหมือนกันใน unix และ mac เช่นกัน แต่ฉันไม่เคยเล่นในพรอมต์คำสั่งอย่างใดอย่างหนึ่ง
Ctuchik

1
cd / ; cd ..: P
htorque

1
มันก็เหมือนกันกับ FreeBSD ด้วยดังนั้นฉันคิดว่ามันก็เป็นเช่นนั้นบน mac เนื่องจาก mac นั้นใช้ดาร์วิน BSD
Azendale

htorque: คุณเป็นคนเคร่งศาสนาหรือเปล่า? :)
Jo-Erlend Schinstad

มันอยู่บน Mac OS X (ซึ่งทำงานเหมือนกับ Unix อื่น ๆ แม้ว่า GUI จะซ่อนบางอย่างไว้) Mac OS Classic ยังไม่มี ::ถูกใช้สำหรับไดเรกทอรีก่อนหน้า เส้นทางที่ไม่มี:ในนั้นคือไดเรกทอรีปัจจุบัน มิฉะนั้นเส้นทางแบบเต็ม (เริ่มต้นด้วยชื่อดิสก์) :ที่คาดว่ามีส่วนประกอบที่คั่นด้วย เช่น:Macintosh HD:System Folder:Finder
Derobert

4

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

หากคุณสร้างไดเรกทอรี:

mkdir /tmp/foo

คุณสามารถเห็นได้ว่ามี 2 ฮาร์ดลิงก์ไปยัง / tmp / foo:

drwxr-xr-x 2 michal michal 4096 2011-08-07 18:40 /tmp/foo
           ^---- two hardlinks

แรกมาจาก / tmp / ไดเรกทอรีที่ชี้ไปที่ / tmp / foo และที่สองคือ '.' ด้วยใน / tmp / foo / ชี้ไปที่ตนเอง


2

นอกจากนี้โปรดทราบว่าคุณสามารถใช้ls -A(แทนls -a) เพื่อแสดงรายการไฟล์ทั้งหมดรวมถึงไฟล์ที่ซ่อนอยู่ แต่ไม่รวมถึง.และ..ไดเรกทอรี


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