Wednesday, January 28, 2009

FreeBSD: file

งวดนี้ ใคร่ขอเสนอเรื่องราวของ แฟ้ม หรือ file แต่พอให้ได้ไอเดีย ว่าแฟ้มคืออะไร มีอะไรอยู่ในแฟ้ม ความหมายของคำว่า เจ้าเข้าเจ้าของ หรือ การได้รับอนุญาตให้ใช้งานแฟ้ม พวกนี้เป็นเบื้องต้นก่อน

อะไรคือแฟ้ม
แฟ้ม คือลำดับของ byte หรือ คำ ในภาคภาษาไทย ส่วนที่ว่า คำ ในแฟ้มจะมีความหมายอะไร อย่างไร นั้น ตัวโปรแกรม ที่อ่าน หรือ ใช้ แฟ้มนั้นเองต่างหากจะเป็นผู้ที่รู้ หรือ เข้าใจดีที่สุด

พาย จอมใจ


การที่จะรู้จัก ต้องทดลองเอง เหมือนอย่างกับว่า เขาถามว่า เกลือมันมีรสเค็ม เค็มยังไง ก็ต้องตอบว่า ให้ไปกินเกลือดูเองซี ถึงจะรู้จักรสเค็ม ฉันไดก็ฉันนั้น ท่านต้องทดลอง เล่น กับแฟ้มดูสักระยะ ซึ่งในการนี้ ท่านสมควรหาเครื่องมาไว้เพื่อใช้งานด้วย จะดีกว่าไปขอมี account กับระบบ แต่ถ้าหาเครื่องยากนัก การมี account สัก ๑ ที่ก็ไม่เลวนักหรอก

เอาเป็นว่า ท่านสามารถใช้ FreeBSD ได้ตามใจก็แล้วกัน เน้าะ

สิ่งแรก ที่อยากให้ท่านทดลองก็คือ คำสั่ง file ลองดูน่ะครับ
# file  /bin /bin/ed /bin/pwd
ตามนี้เลยน่ะ แต่ถ้าตัวหนังสือมันไม่เอียง ก็ไม่ต้องตกใจไปหรอก ไม่ต้องเอียงตามหรอกน่า อ้อ ถ้าท่านไม่รู้ว่า file คืออะไรก็ง่ายๆน่ะ เหมือนเดิม file(1)
ที่อยากให้ดูช่วงนี้ คือ ความแตกต่างของผลลัพธ์ที่ได้ ผลลัพธ์จากคำสั่งที่ท่านใช้นั่นแหละครับ บรรทัดแรก บอกว่า directory สองบรรทัดสุดท้าย เป็นแต่ข้อความยาวๆ เข้าใจยาก แต่เรารู้ว่าเป็น โปรแกรม และ แน่นอน เป็นแฟ้ม แฟ้มหนึ่ง ซึ่งจากนี้ เราสรุปว่า
  • โปรแกรม ก็คือแฟ้ม
  • directory ก็คือ แฟ้ม
เอาล่ะครับ ลองดูอีกเที่ยวละกัน
# date  >> ~/junk
จากนั้น อีกหนหนึ่งน่ะ
# file  /bin /bin/ed /bin/pwd ~/junk
ยังต้องให้อธิบายอะไรอีกมั้ยครับ สังเกตุเองน่ะ ว่า ความแตกต่าง ของผลลัพธ์ เป็นอย่างไร
มาดูกันต่ออีกนิดหนึ่งน่ะ ทำตามไปก่อนน่ะ
# echo #\!/bin/sh > junk1
# echo set -x >> junk1
# file  /bin  /bin/ed  /bin/pwd  ~/junk  junk1
สังเกตุเห็นอะไรจากผลลัพธ์เพิ่มเติมไหมครับ
มาต่อกันน่ะ
ไหมพรม ฟ้าลำพูน

จากตัวอย่างที่ผ่านมา ท่านสมควรทราบได้แล้วว่า แฟ้ม พอจะแยกชนิดได้อยู่บ้าง เรามาดูกันต่อไปซิว่า devices หรืออุปกรณ์ประกอบต่างๆนั้น เป็น แฟ้ม ชนิดใด ลองดูน่ะ
# file /dev/ad0s1
หวังว่ายังคงจำ /dev/ad0s1 กันได้อยู่น่ะครับ

ทีนี่ เรามาดูต่อว่า ในเรื่องของแฟ้ม(files) นี่ นอกจาก ชนิด ที่สามารถดูได้จากคำสั่ง file(1) แล้ว ยังมีเรื่องของ สิทธิ หรือ permission ที่สมควรจะรู้ไว้เป็นเบื้องต้นด้วย ซึ่งในเรื่องของ permission นี้ ใคร่ขอให้มองว่า แฟ้มของเรานั้น บางแฟ้ม เราไม่อยากให้ใครอ่านเลย แต่ บางเรื่องที่เก็บในแฟ้ม เราอยากแชร์ให้กับเพื่อนร่วมก๊วนได้ทราบด้วย ก็มี
ซึ่งในการนี้เอง ก็ทำให้เกิดมีการแบ่งแยกผู้ใช้ออกเป็น ๓ พวกใหญ่ๆคือ เราเอง หนึ่งล่ะ กับ กลุ่ม อีกหนึ่งล่ะ และ คนอื่น อีกหนึ่งล่ะ ซึ่งทุกแฟ้ม(files) จะมีรายละเอียดของ permission ของผู้ใช้งาน เรียงตามลำดับดังนี้
user group other
ก็แล permission หรือ สิทธิ ที่ว่านั้นก็มี อ่าน เขียน ทำงาน อย่างนี้
read อ่านได้
write เขียนได้
execute สั่งให้ทำงานได้
โดยที่ในแต่ละประเภทของผู้ใช้ เขาจะเรียง permission ไปเป็น อ่านเขียนสั่ง ในลำดับนี้ไปทุกประเภท ดังนี้

-rwxrwxrwx

เจ้าตัวขีด - ที่อยู่ซ้ายสุดนั้น อย่าคิดว่าเป็นรอยเปื้อนจากการพิมพ์น่ะ เป็นขีด - จริงที่เจตนามีไว้ เพราะมันแทน ชนิด ของแฟ้ม(files) ที่ได้กล่าวมาก่อนหน้านี้ยังไงล่ะ ซึ่งก็มีพวก directory, ordinary file, special file ประดานี้ซึ่งก็จะมีสัญญลักษณ์แทนพอสรุปได้บ้าง ดังนี้
ถ้าเป็น ขีด - ก็แทนแฟ้มธรรมดาๆ
ถ้าเป็นตัวดี d ก็แทน directory
ถ้าเป็นตัว c หรือ อย่างอื่น ก็แทน special file

อนึ่งเจ้าตัว rwx นั้น ถ้าตัวไหนไม่ได้รับ สิทธิ มันก็ว่างไปโดยใช้ขีดเปล่าๆแทน เช่นอย่างกับว่าในกลุ่มเพื่อนเรา กับ คนอื่นด้วยนั้น เราอนุญาตให้เพียงอ่านได้เท่านั้น ดังนี้แล้ว permission ก็จะเป็น

-rwxr--r--

คงพอได้แนวความคิดบ้างน่ะครับ อ้อ มีทิปให้นิดหนึ่ง คือเจ้าตัว r w x เนี่ย เท่าที่บอกไปว่า ถ้าไม่ได้รับสิทธินั้นๆ ให้แทนด้วยขีด ไป ที่นี้ เรามาขยายความต่อไปว่า ถ้า ได้รับสิทธิ ให้แทนด้วย 1 ถ้าไม่ได้รับสิทธิ ให้แทนด้วย 0 แล้วให้มองกลุ่ม rwx เป็นเลขฐานแปด จากตัวอย่างข้างต้น permission ก็จะแปลงร่างอีกโฉมเป็น

-744

คุ้นๆกันบ้างไหมครับ ลองดูอีกนี้ดนึงซี อาจจะกระจ่างขึ้นมาได้บ้าง น่ะ

# ll junk1

คงแยกออกน่ะ ระหว่างเลข 1 กับตัว l

ขอยุติเรื่องราวของแฟ้ม(files)เบื้องต้นไว้แต่เพียงเท่านี้ก่อน หากจะมีคุณงามความดีอันใดบ้าง ก็ขอยกให้กับ กุสุมา ศรีโยธา เมียที่เสียชีวิตไปเมื่อวันที่ ๑ กพ ๒๕๓๗ โน้น พร้อมกับเพื่อนร่วมเดินทางอีก ๖ ท่าน แล หากขาดตกบกพร่อง หรือ ขัดเคืองประการใด มะไฟ ขอน้อมรับไว้แต่โดยดี โดยผู้เดียว

3 comments:

dekdar said...

NAME
file -- determine file type

ต้องเรียนอีกเยอะเลยเรา อิอิ(ขอบคุณมากนะลุง)

dekdar said...

วันนี้เป็นวันที่บัชคิดถึง ...(แม่) มากที่สุด
วันนี้เมือ ยี่สิบกว่าปีที่แล้ว แม่ได้คลอดลูกคนแรก
วันนั้นจนถึงวันนี้แม่มีลูก เจ็ค คน
วันนี้ เราทำอะไรเพื่อแม่บ้างแล้วหรือยัง???

อยากบอกว่า "บัชรักแม่นะ"

มะขาม said...

อ้อ วานนี้, ๑ กพ, ไปทำบุญที่ภาควิชาเคมี จุฬา ก็ขออารธนาคุณพระรัตนรตรัย จงดลให้ บัช มีความสุข ปราถนาสิ่งใดขอให้ได้สิ่งนั้นน่ะครับ

แล้วจะต่อให้ในส่วนที่ขาด สำหรับเรื่องนี้


View My Stats