โครงสร้างระบบไฟล์ใน Linux (ตอนที่ 1)
ณฐพล พรพุทธพงศ์
สวัสดีครับ กลับมาพบกันอีกครั้งนะครับ หลังจากที่เราได้ทำความรู้จักกับระบบปฏิบัติการลินุกซ์ และระบบ command line กันอย่างคร่าวๆ แล้ว ในฉบับนี้เรามาทำความรู้จักกับโครงสร้างของระบบไฟล์ในลินุกซ์ กันต่อนะครับ
โครงสร้างของระบบไฟล์ในลินุกซ์เป็นระบบแบบลำดับชั้น โดยเริ่มต้นที่ระดับชั้นสูงสุดคือ root ซึ่งมีสัญลักษณ์เป็นเครื่องหมาย / (slash) ซึ่ง root จะมีลักษณะเหมือนโฟลเดอร์หรือห้องเก็บข้อมูลที่มีขนาดใหญ่มาก ทุกสิ่งทุกอย่างของระบบลินุกซ์จะอยู่ภายไต้ root ทั้งหมดไม่เพียงแต่ไฟล์เท่านั้น ยังรวมส่วนติดต่อกับอุปกรณ์ของเครื่องเราอีกด้วย แต่ว่าโดยปกตินั้นผู้ใช้ทั่วไปไม่สามารถเข้าไปแก้ไข ไฟล์ หรือ โฟลเดอร์ ภายไต้ root ได้ นอกจากผู้ดูแลระบบ (administrators) หรือที่เรียกย่อๆ ว่าแอดมิน เท่านั้น
หลายคนคงสงสัยแล้วแอดมินคือใครและมาจากที่ไหนกันละ โดยเริ่มแรกระบบ Unix ซึ่งเป็นต้นแบบของลินุกซ์นั้นสร้างขึ้นบนเครื่องที่ใหญ่มาก เพื่อรับรองระบบผู้ใช้หลายคน (multi-users) ซึ่งแต่ละคนจะมีชื่อเข้าใช้และสิทธิในการใช้งานไม่เหมือนกัน และสามารถเข้าใช้งานจากที่ใดก็ได้ ที่สามารถเชื่อมต่อกับเครือข่ายได้ ผู้ใช้ทั่วไปจะใช้งานระบบได้แต่จะถูกห้ามไม่ให้สามารถแก้ไขค่าต่างๆ ของเครื่องและของระบบได้เพื่อความปลอดภัย จึงต้องผู้ที่มีความรู้ เชี่ยวชาญเข้ามาดูแลระบบนั่นเอง โดยทั่วไปผู้ดูแลระบบจะได้ชื่อเข้าใช้งานเป็น root ด้วย ซึ่งรายละเอียดเกี่ยวกับระบบผู้ใช้งาน จะกล่าวโดยละเอียดในตอนหน้านะครับ ในปัจจุบันลิกนุกซ์ถูกพัฒนาขึ้นจนสามารถนำมาติดตั้งบนเครื่องส่วนตัวได้ ซึ่งผู้ดูแลระบบบนเครื่องเราก็คือผู้ติดตั้งระบบบนเครื่องเรานั่นเอง
คงต้องมาเริ่มเนื้อหาในบทนี้กันแล้วนะครับ อย่างที่สัญญากันไว้ในบทที่แล้ว เราจะมาลองใช้ command line มาท่องระบบไฟล์บนเครื่องของเรากันนะครับ เริ่มเปิด Terminal กันเลยครับ หวังว่าทุกคนคงยังไม่ลืมนะครับ เมื่อเราเปิดขึ้นมาแล้วจะพบเครื่องหมายพร้อม $ (dollar sign) แล้วมีข้อความอยู่ข้างหน้าเครื่องหมาย พร้อมทั้ง cursor ซึ่งกระพริบอยู่ข้างหลังรอคอยคำสั่งจากผู้ใช้อยู่ ซึ่งมีอธิบายอย่างคร่าวๆ ไว้ในฉบับที่แล้ว แต่วันนี้เราจะมาเจาะลึกในรายละเอียดกัน ซึ่งข้อความที่อยู่ข้างหน้านั้นจะต่างกันออกไปขึ้นอยู่กับการตั้งค่าของระบบ จะมีหรือไม่มีก็ได้ หากผู้ใช้เลือกติดตั้งระบบปฏิบัติการที่เป็นที่นิยมมักจะตั้งค่าไว้คล้ายๆ กัน โดยทั่วไปจะแสดงถึงข้อมูลของผู้ใช้ ในที่นี้คือ natapol ซึ่งเป็นชื่อผู้ใช้ของผู้เขียนเอง ถัดจากนั้นเป็นเครื่องหมาย @ (at sign) ซึ่งมีความหมายคล้ายกับคำว่า "อยู่ที่" ถัดจากนั้นจะเป็นชื่อเครื่อง ซึ่งในที่นี้คือ oo-banana ซึ่งเป็นชื่อเครื่องที่ถูกตั้งไว้ขณะติดตั้งระบบ ถัดจากนั้นจะเป็นการบอกตำแหน่งของเราในระบบไฟล์ขณะที่ ในที่นี้คือ เครื่องหมาย ~ () ซึ่งเป็นเครื่องหมายแทน home ของผู้ใช้นั่นเอง home จะเปรียบเสมือนบ้านของผู้ใช้เมื่อผู้ใช้เข้าระบบ (ในที่นี้หมายถึงเปิด Terminal) ผู้ใช้ทุกคนจะไปเริ่มต้นที่นี่เช่นเดียวกันทุกคน ใน home นั้นผู้ใช้มีสิทธิ์เต็มที่ที่จะทำอะไรก็ได้ ติดตั้งอะไรก็ได้ แต่ไม่สามารถเข้าไปดู home ของคนอื่นได้ครับ บ้านของใคร ใครก็หวงครับ ผู้ใช้ทุกคนจะมีโฟลเดอร์ส่วนตัวนี่โดยมีชื่อเดียวกับชื่อผู้ใช้ในที่นี้จะเป็นชื่อผู้ใช้ของผู้เขียน และส่วนใหญ่จะอยู่ภายไต้โฟลเดอร์ที่ชื่อ home อีกที แต่ตอนที่เปิด Terminal ขึ้นมานั้นระบบแสดงเป็นสัญลักษณ์ ~ ระบุว่าเราอยู่ที่ home เท่านั้น แต่จริงๆ แล้วเราอยู่ที่ไหนกันแน่ละครับ เนื่องจากผู้ดูแลระบบสมารถกำหนดตำแหน่งของ home ได้เองดังนั้นในลินุกซ์บางระบบจะมีตำแหน่งของ home ที่แตกต่างกันได้ ในกรณีนี้มีคำสั่งที่ช่วยเราได้ (ในที่สุดก็เริ่มตำสั่งแรกเสียที) คือ คำสั่ง pwd ซึ่งย่อมาจาก (Print Working Directory) เมื่อพิมพ์คำสั่งแล้วเคาะ
[natapol@oo-banana ~]$ pwd
/home/natapol
เมื่อใช้คำสั่งนี้ ระบบจะรายงานตำแหน่งปัจจุบันขอเราออกมาในรูปแบบเต็ม คือเริ่มต้นจาก root ของบางคนอาจจะแตกต่างกันไม่ต้องตกใจนะครับ ถัดจากนี้เราลองมาสำรวจ home ดูดีกว่าว่ามีอะไรอยู่บ้างโดยใช้คำสั่ง ls (List)
[natapol@oo-banana ~]$ ls
text1.txt
คำสั่งนี้จะสั่งให้ระบบรายงานชื่อไฟล์ออกมา ในตัวอย่างจะมีเพียงไฟล์เดียวคือ text1.txt แต่บางคนอาจจะไม่มีอะไรรายงานออกมา ยังไม่ต้องตกใจ นั่นแสดงว่าบ้านของผู้อ่านยังสะอาด และ ว่างอยู่นั่นเอง แต่จริงๆ แล้วมันไม่ได้ว่างอย่างที่คิดหรอกครับ ลองมาพิมพ์คำสั่งนี้ดูนะครับ
[natapol@oo-banana ~]$ ls -la
total 692
drwxr-xr-x 52 natapol natapol 4096 Dec 20 16:18 .
drwxr-xr-x 3 root root 4096 Aug 24 10:51 ..
-rw------- 1 natapol natapol 10053 Dec 17 11:00 .bash_history
-rw-r--r-- 1 natapol natapol 220 Aug 24 10:51 .bash_logout
-rw-r--r-- 1 natapol natapol 3184 Aug 24 10:51 .bashrc
drwx------ 2 natapol natapol 4096 Oct 27 21:35 text1.txt
หลังคำสั่ง ls เราเรียกส่วนนี้ว่า option หรือ parameter ก็ได้ครับ option ในลินุกซ์มักจะขึ้นต้นด้วย (-) เสมอ บางทีก็เป็น (–-) ถ้าเป็น option แบบยาวในที่นี้เราใส่สอง option ต่อกัน คือ –l และ –a
-l จะสั่งให้ระบบรายงานชื่อและข้อมูลของไฟล์ที่มีอยู่ในโฟลเดอร์ปัจจุบัน แบบยาว
-a จะสั่งให้ระบบรายงานชื่อและข้อมูลของไฟล์ทั้งหมดออกมาโดยไม่มีข้อยกเว้น
จากผลที่ได้ หนึ่งบรรทัดคือข้อมูลของไฟล์หนึ่งไฟล์ คั่นแต่ละข้อมูลด้วยเคาะว่าง โดยเริ่มต้นจาก ส่วนแรก จะระบุถึงชนิดของไฟล์ และสิทธิ์ในการเข้าถึงไฟล์นั้นๆ ในรายละเอียดเราจะพูดถึงในคราวต่อๆ ไปนะครับ เราจะทำอะไรกับไฟล์นั้นได้ภายไต้สิทธิ์เท่านั้น ยกเว้น root ครับที่สามารถทำได้ทุกอย่าง ถัดมาเป็นจำนวนของ hard link ที่เกิดขึ้นซึ่งเป็นรายละเอียดทางเทคนิคค่อนข้างมากและไม่ค่อยเกี่ยวข้องกับผู้ใช้ทั่วไปเท่าไรนักคงต้องขอไม่พูดถึงนะครับ ถัดไปจะเป็นผู้ใช้ กลุ่มผู้ใช้ ขนาดของไฟล์ วันที่ที่แก้ไขครั้งสุดท้าย เวลา และชื่อไฟล์ ตามลำดับ
ผู้อ่านคงจะสังเกตุเห็นว่ามีไฟล์แปลกๆ ถูกรายงานเพิ่มมาอีกดังในตัวอย่าง ซึ่ง ไฟล์ที่เป็น . และ .. ซึ่งเป็นไฟล์สมมติของระบบ ซึ่ง . จะหมายถึงโฟลเดอร์ปัจจุบัน ส่วน .. หมายถึงโฟล์เดอร์ที่อยู่สูงขึ้นไป ซึ่งก็คือ home นั่นเอง ผู้อ่านสามารถใช้สัญลักษณ์ทั้งสองนี้ในการอ้างถึงโฟลเดอร์ในคำสั่งอื่นได้ ส่วนไฟล์ที่เพิ่มมาอีกสามไฟล์นั้นจะขึ้นต้นด้วยจุดซึ่งระบบจะถือว่าเป็นไฟล์ที่ถูกซ่อนไว้ซึ่งส่วนใหญ่เป็นไฟล์ของระบบไม่ต้องการให้แสดงออกมาด้วยคำสั่งปกติ นอกจากนี้ ls ยังมี option อื่นๆ อีกมากมายผู้อ่านสามารถเรียกให้แสดงขึ้นมาได้ด้วยการเติม --help หลังคำสั่ง ซึ่งเกือบทุกคำสั่งจะใช้ option เดียวกันนี้ในการแสดงข้อความช่วยเหลือของคำสั่ง
[natapol@oo-banana ~]$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE use SIZE-byte blocks. See SIZE format below
.
.
.
ในตัวอย่างจะแสดง option ต่างๆ ของคำสั่ง ls ซึ่งผมได้ตัดมาเฉพาะส่วนแรกๆ เท่านั้น ผู้อ่านลองใช้ option อื่นของคำสั่งนี้ดูนะครับ ยังมี option อื่นที่น่าสนใจอีกมาก ถ้าหากต้องการคู่มือใช้งานซึ่งจะให้รายละเอียดที่มากกว่าข้อความช่วยเหลือละก็ ลินุกซ์ก็มีคำสั่งแสดงคู่มือขึ้นมาโดยใช้คำสั่ง man (manual) ตามด้วยคำสั่งที่เราต้องการในที่นี้คือ ls ครับดังในตัวอย่าง
[natapol@oo-banana ~]$ man ls
หลังจากกด
ในฉบับนี้เราก็ได้เริ่มสำรวจบ้านเราเป็นที่เรียบร้อยพร้อมกับคำสั่งสามคำสั่ง ถ้าหากผู้อ่านลองใช้คำสั่งแล้วมีคำถามก็สามารถส่งผ่านทางกองบรรณาธิการได้นะครับ ในฉบับหน้าเราจะขยับขยายไปสำรวจส่วนอื่นๆ กันบ้างนะครับ
No comments:
Post a Comment