หัวข้อ: Solaris 2.6 (User)
ชื่อเรื่อง: การจัดการไฟล์และไดเรกทอรี -> ไดเรกทอรีและโครงสร้างของไดเรกทอรี
พิมพ์: 14 ธันวาคม 2542
update: 21 ธันวาคม 2542 (ครั้งที่ 10)

ไดเรกทอรีและโครงสร้างของไดเรกทอรี
[Previous Page] [Next page] [Section contents page]

ก่อนจะมาถึงที่ตรงนี้ เราได้เรียนรู้เกี่ยวกับไฟล์ มาแล้วใช่ไหมครับ ใครที่ยังไม่เข้าใจเรื่องไฟล์ อ่านได้จาก การจัดการไฟล์และไดเรกทอรี ครับ ในบทที่แล้วผมได้เขียนถึงวิธีการจัดการเกี่ยวกับไฟล์ เช่น ดูรายชื่อของไฟล์ (list)   ก็อปปี้ไฟล์ (cp) , ลบไฟล์ (rm)  อะไรพวกนี้แหละครับ แต่ว่าไฟล์ที่สร้างนั้น จำเป็นต้องมีที่อยู่ ในที่นี้คือต้องอยู่ภายใต้ ไดเรกทอรีใด ไดเรกทอรีหนึ่งเสมอ ดังนั้นข้อความตรงนี้ บทนี้ เราจะคุยกันเรื่องเกี่ยวกับไดเรกทอรีครับ เรื่องโครงสร้างของไดเรกทอรี และการจัดการไดเรกทอรี

หัวข้อที่เราจะคุยกันอยู่ข้างล่างนี้ครับ

Directory Hierarchy

ท่านอยู่ในไดเรกทอรีไหน (Print Working Directory (pwd))

อีกอย่างหนึ่งที่เราควรรู้ในการ เข้าใช้ระบบปฎิบัติการ และทำงานเกี่ยวกับไดเรกทอรีคือ เราควรต้องรู้ว่า ณ ปัจจุบันเรายืนอยู่ตรงจุดไหน ในระบบ หรืออยู่ที่ไดเรกทอรีไหน บน unix มีคำสั่งให้เราใช้ครับ คำสั่งนั้นคือ pwd (print working directory) ดังตัวอย่างข้างล่างนี้ครับ
$pwd
/home/user1

เมื่อเราใช้คำสั่งสิ่งที่เขา แสดงออกมาให้เราก็คือ ไดเรกทอรีปัจจุบันที่เราอยู่นั่นเองครับ

บ้านของเรา (Your Home Directory)

ทุก ๆ คนที่ login เข้ามาในระบบปฎิบัติการ unix จะต้องมี home directory หรือที่ผมเรียกว่า บ้านของเรา จะต้องมีกันทุกคนครับ เมื่อเรา login เข้าไปใช้ระบบงาน ไดเรกทอรีแรกที่เราเข้าไปเยี่ยมหรือเข้าไปอยู่ ก็คือ บ้านของเรา นั่นเองครับ ส่วนบ้านของเราจะอยู่ที่ไหนนั้น ขึ้นอยู่กับผู้จัดการระบบ เขาจะให้ไดเรกทอรีเราอยู่ที่ไหน นั่น เป็นสิทธิ การจัดการของเขาครับ ในบ้านของเรา เราสามารถสร้างไฟล์ สร้างไดเรกทอรี ลบไฟล์ หรือลบไดเรกทอรี หรือทำอะไรก็ได้ครับ อยู่ในบ้านของเราเอง สิทธิทุก ๆ อย่างเป็นของเรา ไม่มีผลกระทบกับผู้ใดครับ เพราะฉะนั้น เราสามารถลองสร้างไฟล์ หรือสร้างไดเรกทอรีดูได้ครับ

เปลี่ยนที่ทำงาน (Change Working Directory (cd))

เราได้รู้วิธีการดูว่า ณ ปัจจุบันนั้นเราอยู่ที่ตรงไหน ในระบบ แล้วใช่ไหมครับ ต่อไปเราจะมาเปลี่ยนหรือย้ายที่กันดูครับ ย้ายที่ในที่นี้หมายความว่า เราจะเปลี่ยนไป อยู่ในไดเรกทอรี อื่น ๆ บนระบบครับ คำสั่งที่ใช้ในการเปลี่ยนไปไดเรกทอรีอื่น คือ คำสั่ง cd (change directory) ตัวอย่าง การใช้งาน ข้างล่างนี้ครับ
$cd /usr/lib
$pwd
/usr/lib

ถ้าเราพิมพ์คำว่า cd เฉย ๆ ไม่มี ออปชั่น หรือค่าใด ๆ ตามท้าย ระบบปฎิบัติการ เขา จะย้ายให้เราไปอยู่ที่บ้านของเราครับ เช่น บ้าน หรือ home ไดเรกทอรี ของเราอยู่ที่ /home/user1 เมื่อเราพิมพ์ cd เฉย ๆ แล้ว พิมพ์คำสั่ง pwd ดู สิ่งที่จะได้จะเป็น ดังนี้ครับ
$cd
$pwd
/home/user1

เมื่อพูดถึงไดเรกทอรี ก็ต้องมีอยู่คำหนึ่งที่เราจำต้องทำความรู้จัก คำนั้นคือ "parent directory" ผมจะใช้คำว่า "ไดเรกทอรีพ่อ" แทนคำนี้นะครับ ถ้าเราดูจากโครงสร้างของไดเรกทอรี ไดเรกทอรีพ่อ จะเป็นไดเรกทอรีที่อยู่ ติดกับไดเรกทอรีนั้นๆ และ อยู่ข้างบนไดเรกทอรี นั้น ๆ เช่น ไดเรกทอรี /home จะเป็น พ่อของไดเรกทอรี /home/user1 ในการอ้างอิงถึงไดเรกทอรีพ่อ เราจะใช้ .. (จุด-จุด) แทน ดังนั้นในการ เปลี่ยนไดเรกทอรี ไปอยู่ที่ไดเรกทอรี พ่อเราจะใช้ดังนี้ครับ
$pwd
/home/user1
$cd ..
$pwd
/home

สร้างไดเรกทอรีกันเถอะ (Creating a Directory (mkdir))

เราสร้างไดเรกทอรี กันง่าย ๆ ครับ โดยใช้คำสั่ง mkdir วิธีการสร้างก็ พิมพ์คำสั่ง mkdir ตามด้วยชื่อไดเรกทอรี ที่เราต้องการดังนี้ครับ
$pwd
/home/user2
$mkdir veggies
$cd veggies
$mkdir broccoli
$cd broccoli
$pwd
/home/user2/veggies/broccoli

พาธแบบสัมพันธ์ (Relative Path Names)

ในระบบปฎิบัติการคอมพิวเตอร์ ทั่วไป มีการอ้างอิงถึงพาธ อยู่สองวิธี คือ full path และ relative path ในที่นี้ผมจะใช้คำว่า พาธแบบสมบูรณ์ กับ พาธแบบสัมพันธ์ แทนคำ ทั้งสองตามลำดับนะครับ เรามาดู แบบแรกกัน พาธแบบสมบูรณ์ ในการอ้างถึงพาธใด ๆ จะต้องเริ่มต้นด้วยเครื่องหมาย slash (/) เสมอ เนื่องจาก เครื่องหมาย slash นี้เป็น การอ้างอิงถึง ไดเรกทอรี root หรือไดเรกทอรี ที่อยู่บนสุด เมื่อเราดูจากโครงสร้างของไดเรกทอรี ตัวอย่างการใช้งานที่เป็นพาธแบบสมบูรณ์ ดังนี้ครับ
$pwd
/home/user2
$cd /home/user2/veggies/broccoli
$pwd
/home/user2/veggies/broccoli

จากตัวอย่างผมต้องการเปลี่ยนไดเรกทอรีไปที่ ไดเรกทอรี broccoli ผมใช้วิธีการอ้างอิงพาธ แบบสมบูรณ์ คือเริ่มจากไดเรกทอรี root (/) จากนั้นก็เป็นการระบุเส้นทาง ที่ผมต้องการไป สุดท้ายเมื่อใช้คำสั่งเสร็จ แล้ว ลองใช้คำสั่ง pwd ดู จะเห็นว่า ผมได้เข้ามาอยู่ในไดเรกทอรี broccoli เรียบร้อยแล้ว

การที่จะเข้าไปอยู่ในไดเรกทอรี broccoli อีกวิธีหนึ่ง สามารถใช้คำสั่งได้ดังนี้ครับ
$pwd
/home/user2
$cd veggies/broccoli
$pwd
/home/user2/veggies/broccoli

จากวิธีนี้ เราเรียกว่า การอ้างอิงพาธแบบสัมพันธ์ ครับ สัมพพันธ์ กับอะไร ก็สัมพันธ์ กับ ไดเรกทอรีพ่อ ยังงัยละครับ ในที่นี้ผมต้องการ จะเปลี่ยนไปอยู่ที่ไดเรกทอรี broccoli ณ ปัจจุบันผมอยู่ที่ /home/user2 ผมต้องการเข้าไปที่ broccoli ซึ่งเป็น subdirectory ของ veggies และ veggies ก็เป็น subdirectory ของ user2 อีกที ดังนั้น เมื่อผมต้องการเข้า ไปที่ไดเรกทอรี broccoli ก็อ้างอิง veggies และ broccoli ได้เลย ไม่ต้องไปอ้างอิงถึง ไดเรกทอรี root การอ้างอิงแบบนี้ เราเรียกว่า การ อ้างอิงพาธแบบสัมพันธ์ ครับ

ลองสร้างไดเรกทอรี แล้วก็ลองเปลี่ยนไปอยู่ในไดเรกทอรี ต่าง ๆ ด้วยวิธีการอ้างอิง พาธ แบบ ต่าง ๆ ดูนะครับ จะทำให้เราเข้าใจ ได้ดียิ่งขึ้น

เคลื่อนย้ายและเปลี่ยนชื่อไดเรกทอรี (Moving and Renaming Directories)

เราสามารถเปลี่ยนชื่อไดเรกทอรี ได้โดยการย้ายไดเรกทอรี แล้วสร้างชื่อใหม่ให้กับเขาครับ ตัวอย่างเช่นผมต้องการเปลี่ยนชื่อไดเรกทอรี broccoli ให้เป็นชื่อ carrots ผมสามารถใช้คำสั่ง ได้ดังนี้ครับ
$pwd
/home/user2/veggies
$ls
broccoli
$mv broccoli carrots
$ls
carrots

จากตัวอย่างข้างต้น ผมได้เปลี่ยนชื่อไดเรกทอรี broccoli ไปเป็นชื่อ carrots เรียบร้อยครับ

ก็อปปี้ไดเรกทอรีเป็นไหม (Copying Directories)

ในการก็อปปี้ ไดเรกทอรี เราใช้คำสั่ง cp -r ในที่นี้คือใช้คำสั่ง cp นั่นละครับ แต่ในการก็อปปี้ไดเรกทอรี เราจะใช้ ออปชั่น -r เข้ามาช่วย เป็นการบ่งบอกว่า เราต้องการ ก็อปปี้ ไดเรกทอรี รวมทั้ง ไฟล์ หรือ ไดเรกทอรี ที่อยู่ภายใต้ไดเรกทอรีนั้นด้วย ตัวอย่งการใช้งานเช่น
$cp -r veggies veggies3
$

เป็นการก็อปปี้ไฟล์ทุกไฟล์ และไดเรกทอรีทุกไดเรกทอรี ที่อยู่ภายใต้ ไดเรกทอรี veggies ให้ไปอยู่ ในไดเรกทอรี veggies3

ลบไดเรกทอรีก็ได้ (Removing Directories (rmdir))

ถึงคราวการลบไดเรกทอรีกันแล้วละครับ ในการลบไดเรกทอรีนั้น เราสามารถใช้คำสั่งได้สองวิธีด้วยกันดังนี้ครับ วิธีแรก ลบไดเรกทอรี ที่ว่างเปล่า คำว่าว่างเปล่า ก็คือ ไม่มีไดเรกทอรี หรือไฟล์ ใด ๆ อยู่ภายใต้ ไดเรกทอรีนั้น ๆ คำสั่งที่ใช้ เราจะใช้ดังนี้ครับ
$rmdir veggies3
$

ถ้าไดเรกทอรี ที่เราระบุต่อท้ายคำสั่ง มีไฟล์หรือไดเรกทอรีอื่น อยู่ภายใน ระบบฯ จะไม่ลบ ไดเรกทอรี นั้นครับ

อีกวิธีหนึ่งคือการใช้คำสั่งเพื่อให้ลบ ไดเรกทอรี รวมทั้งไฟล์ และไดเรกทอรี ที่อยู่ภายใต้ ไดเรกทอรี นั้น ๆ ด้วย ถ้าเทียบกับ dos ก็เห็นจะเป็นคำสั่ง deltree ละครับ
$rm -r veggies3
$

ด้วยคำสั่งนี้ ระบบฯ จะไม่สนใจว่า ไดเรกทอรี veggies3 นั้นว่างเปล่าหรือไม่ แต่ระบบฯ จะลบ ไดเรกทอรี veggies3 รวมทั้งไฟล์ และไดเรกทอรี ที่อยู่ภายใต้ไดเรกทอรี veggies3 ทั้งหมดครับกระผม


เตือนกันไว้นิดหนึ่งครับ ไฟล์หรือไดเรกทอรี ที่ได้ลบไปแล้วไม่สามารถ กู้กลับคืนมาได้ เพราะฉะนั้นควรระวังในการใช้คำสั่งนะครับ



[Previous Page] [Next page] [Section contents page]


[ณ บ้านไร่ชายทุ่ง]

ข้าวในแปลงอื่น ๆ

กลับแปลง Solaris 2.6 สำหรับผู้ใช้งานทั่วไป

สงวนลิขสิทธิ์(c) 1999 ณ บ้านไร่ชายทุ่ง
1