Kodokon kodokon.com

พาธสัมพัทธ์ พาธสัมบูรณ์ และไวลด์การ์ด

ชี้ไปยังไฟล์ใดก็ได้ด้วยพาธสัมบูรณ์หรือพาธสัมพัทธ์ และจัดการหลายไฟล์พร้อมกัน

8 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

มีสองวิธีในการบอกว่าไฟล์อยู่ที่ไหน เหมือนกับการบอกที่อยู่เป๊ะ ๆ พาธสัมบูรณ์ คือที่อยู่ไปรษณีย์ฉบับเต็ม: มันเริ่มจากรากและใช้ได้จากทุกที่ บน macOS และ Linux มันขึ้นต้นด้วยเครื่องหมายทับ / เสมอ ตัวอย่างเช่น /home/yoann/my-project/index.html ส่วนบน Windows มันขึ้นต้นด้วยตัวอักษรไดรฟ์ ตัวอย่างเช่น C:\Users\yoann\my-project

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

BASH
cd /home/yoann/my-project
cd ~/my-project
cd ../other-project
cat ./src/index.html
cp ../photo.jpg .
โฟลเดอร์เดียวกันที่ไปถึงแบบสัมบูรณ์แล้วก็แบบสัมพัทธ์ และการคัดลอกมาไว้ในโฟลเดอร์ปัจจุบัน

เวลาที่คุณต้องจัดการไฟล์สิบไฟล์ คุณคงไม่พิมพ์คำสั่งสิบครั้งแน่ ๆ เชลล์รู้จัก ไวลด์การ์ด หรือที่เรียกกันว่า แพตเทิร์น: อักขระพิเศษที่ใช้แทนอักขระที่ไม่รู้ค่าหนึ่งตัวหรือหลายตัว เครื่องหมายดอกจัน * แทน อักขระชุดใดก็ได้ รวมถึงกรณีที่ไม่มีอักขระเลย เครื่องหมายคำถาม ? แทนอักขระ หนึ่งตัวพอดี ส่วนวงเล็บเหลี่ยม [ ] ยอมรับอักขระตัวใดตัวหนึ่งที่ระบุไว้ข้างใน

BASH
ls *.html
ls src/*.css
ls photo-?.jpg
ls report-202[45].pdf
cp *.txt archive/
ไฟล์ .html ทุกไฟล์, ไฟล์ .css ในโฟลเดอร์ย่อย, photo-1 ถึง photo-9, รายงานปี 2024 และ 2025

รายละเอียดสุดท้ายที่ช่วยป้องกันปัญหาได้เยอะ: บน macOS และ Linux ชื่อไฟล์ แยกตัวพิมพ์ใหญ่กับตัวพิมพ์เล็ก Photo.jpg กับ photo.jpg คือไฟล์คนละไฟล์กัน และ ls photo* จะหาไฟล์แรกไม่เจอ ส่วน Windows ไม่แยกแบบนั้น ดังนั้นโปรเจกต์ที่ทำงานได้บนเครื่อง Windows ของคุณ จึงอาจพังบนเซิร์ฟเวอร์ Linux ที่โฮสต์มันอยู่ เพียงเพราะตัวพิมพ์ใหญ่ตัวเดียวเท่านั้น

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. บน macOS หรือ Linux พาธสัมบูรณ์ขึ้นต้นด้วยอะไรเสมอ?
    • จุด .
    • เครื่องหมายทับ /
    • ทิลเดอ ~
    • ชื่อของโฟลเดอร์ปัจจุบัน
  2. แพตเทิร์น *.html ตรงกับอะไร?
    • ไฟล์ทุกไฟล์ที่ชื่อลงท้ายด้วย .html
    • เฉพาะไฟล์ที่ชื่อว่า *.html เป๊ะ ๆ เท่านั้น
    • ไฟล์ทุกไฟล์ในโฟลเดอร์ ไม่ว่าจะเป็นชนิดใด
  3. คุณอยากลบไฟล์ .tmp ทั้งหมดอย่างปลอดภัย คุณจะป้องกันไว้ก่อนอย่างไร?
    • รัน rm *.tmp แล้วค่อยตรวจด้วย ls
    • รัน ls *.tmp ก่อน เพื่อดูว่าอะไรจะถูกลบบ้าง
    • ไม่ต้องทำอะไร เพราะเชลล์ถามยืนยันเสมออยู่แล้ว