Absolute and Relative Pathnames


Absolute path กับ Relative path คืออะไรแล้วต่างกันยังไง?
เนื้อหา
Absolute Path-name
path แปลตรงๆ ว่า เส้นทาง
คือสิ่งที่บอกที่อยู่ของไฟล์หรือโฟลเดอร์นั้นในระบบ ประกอบด้วย อักขระตัวอักษรและตัวเลข แยกหรือคั่นโดยใช้เครื่องหมาย /
(Slash)
ก่อนเข้าเนื้อหา ในบทความนี้ออาจจะใช้คำต่างกันแต่อาจมีความหมายเดียวกันเช่น คำว่า โฟลเดอร์ หรือ directory โดย
directory
เป็นคำที่ใช้เรียกใน UNIX คำว่า เส้นทาง ที่อยู่ ตำแหน่ง หรือ path
ใช้ระบุเส้นทางของไฟล์หรือโฟลเดอร์จาก root directory (/
)
การเขียน absolute path-name
- เริ่มต้นที่ root directory (
/
) แล้วเข้าไปเรื่อยๆ - ใส่ slash (
/
) ตามหลังชื่อ directory (ไม่ต้องใส่ปิดตอนท้ายก็ได้ เช่น/home
กับ/home/
จะมีความหมายเดียวกัน)
ตัวอย่าง
cat abc.sql
เรียกใช้คำสั่ง cat เพื่อดูข้อมูลในไฟล์ abc.sql
จากตำแหน่งปัจจุบัน(current directory) ถ้าไม่เจอใน directory ปัจจุบันแต่มีอยู่ที่อื่นเช่นอยู่ใน /home/node
ต้องใช้คำสั่ง
cat /home/node/abc.sql
จากตัวอย่าง กำหนด (/
) slash ไว้ตัวแรก หมายถึง เราจะเข้าถึงไฟล์หรือโฟลเดอร์ตั้งแต่ root แล้วเข้าทีละโฟลเดอร์ตามลำดับด้วยเครื่องหมาย /
current directory ปัจจุบันคืออะไรจะรู้ได้ไง? คำตอบคือ ใช้คำสั่ง
pwd
Relative path
ใช้ระบุเส้นทางของไฟล์หรือโฟลเดอร์จาก present working directly(pwd) ไม่ได้กำหนด /
ไว้ตัวแรก
สมมุติว่าเรามีโฟลเดอร์ชื่อว่า photos เอาไว้เก็บรูป อยู่ภายในโฟลอเดอร์ home
//etc/dev/home/home/folder1/home/folder1/photos/pic-1.jpg/home/folder1/photos/pic-2.jpg/home/folder2/home/folder3/work/lab1.js/home/folder3/work/lab2.js/home/folder3/work/lab3.js/usr/var
UNIX มี shortcut หรือคำสั่งสั้นๆ สำหรับเข้าถึง relative pathname ให้เราใช้เข้าถึง current or parent directory โดยใช้เครื่องหมายจุด
.
(จุดตัวเดียว) หมายถึง current directory หรือปัจจุบัน
..
(จุด 2 ตัว) หมายถึง parent directory หรือ จะใช้บ่อยตอนเปลี่ยน directory ถอย 1 ระดับ
ลองมาใข้คำสั่งแล้วดูผลลัพธ์กันเลย
สมมุติว่าตอนนี้อยู่ที่ /home/folder/photos แล้วอยากจะเปลี่ยนโฟลเดอร์ จะต้องใช้คำสั่ง change directory (cd
)
$pwd/home/folder/photos$ cd .. ***ถอย 1 ระดับ***$pwd/home/folder$ cd ../.. ***ถอย 2 ระดับ***$ pwd/
ลองใช้ทั้ง relative และ absolute path สมมุติว่าตอนนี้อยู่ที่ /home/folder แล้วเราจะเปลี่ยนไปที่ /home/folder/photos
- relative
Terminal window $pwd/home/folder$cd photos$pwd/home/folder/photos - absolute
Terminal window $pwd/home/folder$cd /home/folder/photos$pwd/home/folder/photos
สรุป
absolute เริ่มที่ root (/home/folder
)
relative เริ่มที่ current directory (./folder
)