ความหมายของ ./ ก่อนหน้าเส้นทางที่กำหนดคืออะไร?


25

ฉันได้รับคำสั่งให้เรียกใช้สิ่งนี้:

./yiic message ./app/messages/config.php

แต่ฉันไม่เข้าใจ./ความหมายทุกคนสามารถอธิบายได้โปรด

หมายเหตุ: เชื่อฉันเราไม่สามารถ google ว่า ฉันได้พยายาม:

./ ความหมาย. / Ubuntu

มันเหมือนไม่มีอะไรเลย :(


3
ในกรณีเหล่านี้สิ่งที่ดีที่สุดคือการหา "dot slash" ซึ่งให้ผลลัพธ์ที่มีประโยชน์มากนี้: linfo.org/dot_slash.html
heltonbiker

คำตอบ:


29

./หรือเพียงแค่.ชวเลข unix สำหรับไดเรกทอรีปัจจุบัน

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

ในทำนองเดียวกัน../หรือเพียงแค่..จดชวเลขสำหรับไดเรกทอรีด้านบนไดเรกทอรีปัจจุบัน


17
ใครบางคนควรจะรวมถึงในคำตอบของพวกเขาว่าทำไม $ PATH .ไม่ได้มี เป็นเพราะการใช้ไดเรกทอรีปัจจุบันโดยอัตโนมัติคือช่องโหว่ความปลอดภัย ลองนึกภาพคนอื่นทำโปรแกรมตั้งชื่อlsและคุณcdลงในไดเรกทอรีของเขาแล้วพิมพ์ls
Zan Lynx

1
@ แซนฉันเคยสงสัยในเรื่องนี้เสมอขอบคุณสำหรับคำตอบของคุณสำหรับคำถามที่ไม่มีใครถาม แต่ควรมีใครซักคน
crasic

@ZanLynx ข้อคิดเห็นที่ดี / เพิ่มเติมควรแก้ไขเป็นคำตอบเนื่องจากความคิดเห็นอาจหายไปได้
NSGaga

15

ไดเรกทอรีในบรรทัดคำสั่งทุกคนมีสองไดเรกทอรี "พิเศษ" ที่เรียกว่าและ. ..สิ่งเหล่านี้เป็นการจดชวเลขสำหรับไดเรกทอรีปัจจุบันและไดเรกทอรีที่มีไดเรกทอรีปัจจุบันตามลำดับ

ตัวอย่างเช่นcd ./more/directory/namesหมายถึง "เริ่มต้นที่ไดเรกทอรีปัจจุบันและดำเนินการต่อในเส้นทาง" ในทำนองเดียวกันคำสั่งcd ..หมายถึง "เปลี่ยนหนึ่งไดเรกทอรีขึ้น

หากคุณต้องการชื่อของไดเรกทอรีปัจจุบันของคุณคุณสามารถใช้pwdคำสั่ง นอกจากนี้หากคุณใช้การ-aตั้งค่าสถานะสำหรับlsคุณสามารถดูสองไดเรกทอรีพิเศษเหล่านี้ นั่นคือls -aออกจะรายการที่เริ่มต้นด้วยและ...


การเพิ่มที่ยอดเยี่ยม root45 +1 :)
Rinzwind

4

คนอื่น ๆ ได้อธิบายสิ่งที่.และ..วิธีการ (ไดเรกทอรีปัจจุบันและไดเรกทอรีหลักตามลำดับ) สิ่งนี้ใช้กับชื่อพา ธ ทั้งหมด

เมื่อคุณเปิดเทอร์มินัลคุณมักจะเริ่มต้นในโฮมไดเร็กตอรี่ของคุณ: ~(ซึ่งขยายออกไป/home/username) พา ธ ด้านล่างนี้เทียบเท่ากันทั้งหมดให้ไดเรกทอรีทำงานปัจจุบันของคุณคือ/home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(ไดเรกทอรีหลักของ/ยังคงเป็น/)
  • ./././././. (ไดเรกทอรีปัจจุบันในไดเรกทอรีปัจจุบันใน ... )
  • ./ (เครื่องหมายสแลชต่อท้ายอนุญาตสำหรับไดเรกทอรี)
  • /home////username/// (และมีหลายสแลช)

อย่าได้สร้างความสับสนให้กับ./program เรียกใช้ไฟล์ในไดเรกทอรีปัจจุบันด้วยชุดบิตดำเนินการ เป็นสิ่งที่ทุบตีและสามารถเขียนตามที่อ่านคำสั่งทุบตีจากไฟล์ในไดเรกทอรีปัจจุบันและดำเนินการพวกเขาในเปลือกปัจจุบัน. program./program. ./programsource ./programprogram

หากคุณสงสัยว่าทำไมคุณสามารถเรียกใช้geditแทน/usr/bin/geditและไม่programแทน./programหรือ/home/username/programดูคำถามที่เกี่ยวข้อง:


3

current directory pathมันหมายถึงการเริ่มต้นจาก

สมมติว่าคุณมีสิ่งpathนี้:

/usr/ /usr/bin/ /usr/local/bin

และภายในมีการปฏิบัติการที่เรียกว่า/usr/bin/yiic

ถ้าคุณออกจะเริ่มหนึ่งในyiic/usr/bin/

โดยการออก./yiicคุณบอกให้ระบบดูในไดเรกทอรีปัจจุบันสำหรับปฏิบัติการนี้


ตกลง ... แต่ฉันยังไม่ได้รับ สมมติว่าผมมีภายใน yiic และที่ฉันมีนำทางโดยใช้/home/mysuser/ cd /home/myuserเมื่ออยู่ข้างในฉันเชื่อว่าการทำ yiic มันควรจะทำงานได้เพราะฉันได้โทรไปหาไดเรกทอรีนั้น แต่เขาบอกว่าคำสั่งไม่ยื่น ถ้าฉันทำแบบเดียวกันและฉันใช้. / ก็จะทำงานได้อย่างถูกต้อง ... คุณช่วยอธิบายเพิ่มเติมอีกหน่อยได้ไหม?
MEM

@frabjous ตามที่ตอบความคิดเห็นนี้เช่นกัน
MEM

Nope! มันจะดูในคำสั่ง PATH เสมอเว้นแต่คุณจะบอกให้ใช้ไดเรกทอรีปัจจุบัน (โดยใช้. /) ดูคำตอบของ user45: .เป็นแฟ้มพิเศษในโฟลเดอร์ที่คุณสามารถเห็นเมื่อทำls -laในไดเรกทอรี;)
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.