อ่าน 3 นาที
ประเภทไฟล์ Unix
ประเภทไฟล์มาตรฐานของ Unix ทั้งเจ็ด ประเภท ได้แก่ ไฟล์ ปกติ , ไฟล์ไดเร็กทอรี , ลิงก์สัญลักษณ์ , ไฟล์พิเศษ FIFO , ไฟล์พิเศษบล็อก , ไฟล์พิเศษอักขระและไฟล์ซ็อกเก็ตตามที่กำหนดโดยPOSIX..
ประเภทไฟล์ Unix
ประเภทไฟล์มาตรฐานของ Unix ทั้งเจ็ด ประเภท ได้แก่ ไฟล์ ปกติ , ไฟล์ไดเร็กทอรี , ลิงก์สัญลักษณ์ , ไฟล์พิเศษ FIFO , ไฟล์พิเศษบล็อก , ไฟล์พิเศษอักขระและไฟล์ซ็อกเก็ตตามที่กำหนดโดยPOSIX [ 1 ]ประเภทเหล่านี้ใช้ในระบบไฟล์ของ ระบบปฏิบัติการ Unixหรือระบบปฏิบัติการที่คล้าย Unix (OS) การใช้งานเฉพาะระบบปฏิบัติการที่แตกต่างกันอนุญาตให้มีประเภทมากกว่าที่ POSIX กำหนด (เช่นdoorsในSolaris ) สามารถระบุประเภทของไฟล์ได้ด้วยคำสั่ง ซึ่งจะแสดงประเภทในอักขระตัวแรกของฟิลด์ สิทธิ์ของระบบไฟล์ls -l
สำหรับไฟล์ทั่วไป Unix ไม่ได้กำหนดหรือจัดเตรียมโครงสร้างไฟล์ภายในใดๆ (ซึ่งอาจเรียกว่ารูปแบบไฟล์ ) [ 2 ]ดังนั้นโครงสร้างและการตีความจึงขึ้นอยู่กับซอฟต์แวร์ที่ใช้ไฟล์นั้นๆ โดยสิ้นเชิง[ 3 ]อย่างไรก็ตาม โดยfileทั่วไปแล้วสามารถใช้คำสั่งเพื่อกำหนดประเภทของข้อมูล ที่ไฟล์ นั้นๆ บรรจุอยู่ได้[ 4 ]
ตัวแทน
ตัวเลข
ชนิดของไฟล์ถูกระบุโดยโหมดของไฟล์ ซึ่งประกอบด้วยชนิดไฟล์และสิทธิ์การเข้าถึงการเรียกใช้ระบบ stat () จะส่งคืนข้อมูลเกี่ยวกับไฟล์ในโครงสร้างที่รวมโหมดของไฟล์ไว้ในฟิลด์ชื่อ `<mode>` โดยทั่วไปแล้ว ชนิดไฟล์และสิทธิ์การเข้าถึงจะถูกกำหนดเป็นมาโครที่ขยายเป็นค่าคงที่จำนวนเต็มฐานแปด และฟิลด์ `<mode>` ของโครงสร้างมักจะถูกกำหนดเป็นตัวแปรจำนวนเต็มที่ไม่มีเครื่องหมาย ซึ่งโดยปกติจะมีขนาด 32 บิต แม้ว่ามาตรฐานภาษา C จะอนุญาตให้ขึ้นอยู่กับการใช้งานเฉพาะก็ได้ อย่างไรก็ตาม โดยทั่วไปใน ระบบ ที่คล้าย Unix จะใช้ เพียง 16 บิต (6 หลักฐานแปด) ของฟิลด์สำหรับค่าจำนวนเต็มฐานแปดที่แสดงถึงประเภทไฟล์และสิทธิ์การเข้าถึงที่แตกต่างกัน โดย 4 บิตที่สำคัญที่สุด (2 หลักฐานแปด) จะใช้สำหรับประเภทไฟล์ และ 12 บิตที่เหลือใช้สำหรับสิทธิ์การเข้าถึง ซึ่งประกอบด้วย 3 บิตลำดับสูงกว่า (1 หลักฐานแปด) ที่ใช้สำหรับแอตทริบิวต์ setuid, setgid และ sticky ซึ่งโดยทั่วไปเรียกว่าสิทธิ์พิเศษ ตามด้วย 9 บิต (3 หลักฐานแปด) ที่ใช้สำหรับสิทธิ์ปกติ POSIX กำหนดให้ 12 บิตที่สำคัญน้อยที่สุดของโหมดไฟล์เป็นสิทธิ์การเข้าถึง และปล่อยให้บิตประเภทไฟล์เป็นรายละเอียดการใช้งาน[ 1 ]statst_modest_modestatst_mode
เมื่อเขียนเป็นเลขฐานแปดค่าโหมดจะแสดงประเภทไฟล์ Unix แยกต่างหาก โดยใช้ตัวเลขสองหลักแรก ตัวอย่างเช่น โหมดเลขฐานแปด 100644 บ่งชี้ว่าเป็นไฟล์ปกติ เนื่องจากบิตฟิลด์ประเภทไฟล์ Unix คือเลขฐานแปด 10 รูปแบบนี้ใช้ในgit , tar , arและบริบทอื่นๆ[ 5 ]
โปรแกรมสามารถทดสอบค่าโหมดเพื่อกำหนดประเภทไฟล์ Unix ผ่านมาโครที่ให้ไว้ใน ส่วนหัว C มาตรฐาน ตัวอย่างเช่น โปรแกรมสามารถมาสก์ค่าโหมดด้วยS_IFMT(เลขฐานแปด 170000 สำหรับรูปแบบ 4 บิตแรก) เพื่อรับประเภทไฟล์ Unix จากนั้นทดสอบค่าดังกล่าวS_IFDIRเพื่อพิจารณาว่าไฟล์นั้นเป็นไดเร็กทอรีหรือไม่ หรืออีกทางหนึ่ง โปรแกรมสามารถใช้S_ISDIRมาโครได้S_IFMTซึ่งไม่ใช่แนวคิดหลักของ POSIX แต่เป็นส่วนขยายของ X/Open System Interfaces (XSI) ระบบที่สอดคล้องกับ POSIX เท่านั้นอาจใช้วิธีการอื่น[ 1 ]
สัญลักษณ์
POSIX ระบุรูปแบบยาวของlsคำสั่งเพื่อแสดงประเภทไฟล์ Unix เป็นตัวอักษรตัวแรกของรายการ[ 6 ]
| พิมพ์ | เครื่องหมาย |
|---|---|
| ปกติ | - |
| ไดเร็กทอรี | ง |
| ลิงก์สัญลักษณ์ | ล |
| พิเศษ FIFO | พี |
| บล็อกพิเศษ | ข |
| ตัวละครพิเศษ | ค |
| ซ็อกเก็ต | ส |
เวอร์ชันGNU coreutilslsเรียกใช้ฟังก์ชันgnulib filemode()[ 7 ]เพื่อจัดรูปแบบสตริงโหมด FreeBSD ใช้แนวทางที่ง่ายกว่าแต่ยอมให้มีประเภทไฟล์จำนวนน้อยกว่า[ 8 ]
ตัวอย่าง
คำสั่งนี้ls -lจะแสดงสตริงโหมดไฟล์เป็นคอลัมน์แรกของเอาต์พุตสำหรับแต่ละไฟล์ สตริงนี้เริ่มต้นด้วยตัวบ่งชี้ประเภทไฟล์ของ Unix เอาต์พุตต่อไปนี้เป็นของไดเร็กทอรีรากจากคำสั่งls -l /ซึ่งเริ่มต้นด้วยdเพื่อระบุว่าเป็นไดเร็กทอรี ส่วนที่เหลือของคอลัมน์แรก ( rwxr-xr-x) ระบุสิทธิ์การเข้าถึง
d rwxr-xr-x 26 รูท 4096 22 ก.ย. 09:29 /
ผลลัพธ์จากคำสั่งstat /ประกอบด้วยชื่อประเภทไฟล์ Unix แบบเต็ม:
ไฟล์: "/" ขนาด: 4096 บล็อก: 8 บล็อก IO: 4096 ไดเร็กทอรี อุปกรณ์: 802h/2050d Inode: 128 ลิงก์: 26 การเข้าถึง: (0755/ d rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) ...
เอาต์พุตสำหรับไฟล์ลิงก์สัญลักษณ์เริ่มต้นด้วยตัวอักษรเริ่มต้นl(ตัวพิมพ์เล็ก 'L') และระบุเส้นทางไฟล์ที่อ้างอิงดังตัวอย่างls -lเอาต์พุตนี้: [ 6 ]
l rwxrwxrwx ... termcap -> /usr/share/misc/termcap l rwxrwxrwx ... S03xinetd -> ../init.d/xinetd
ท่อชื่อ (named pipe) เป็นไฟล์พิเศษที่สามารถสร้างได้ผ่านคำสั่งท่อชื่อจะถูกระบุเป็นดังตัวอย่างเอาต์พุตนี้: [ 6 ]mkfifonamepls -l
พีอาร์ดับเบิลยู-อาร์ดับเบิลยู---- ... มายไพพ์
เส้นทางไฟล์ซ็อกเก็ตเป็น ซ็อกเก็ตโดเมน Unixประเภทหนึ่งซึ่งเป็นไฟล์พิเศษสำหรับการสื่อสารระหว่างกระบวนการที่แตกต่างจาก named pipes ตรงที่อนุญาตให้มี การสื่อสาร แบบสองทิศทาง เต็มรูป แบบ ซ็อกเก็ตจะถูกทำเครื่องหมายด้วยsดังตัวอย่างls -lเอาต์พุตนี้: [ 6 ]
s rwxrwxrwx /tmp/.X11-unix/X0
ไฟล์บล็อกและไฟล์อักขระแสดงถึงอุปกรณ์ฮาร์ดแวร์ ไฟล์อุปกรณ์สามารถใช้เพื่อควบคุมการเข้าถึงอุปกรณ์และอนุญาตให้ดำเนินการแบบไฟล์บนอุปกรณ์ที่เชื่อมต่อ อุปกรณ์อักขระ (การเข้าถึงแบบอนุกรม) จะถูกทำเครื่องหมายด้วยcและอุปกรณ์บล็อก (การเข้าถึงแบบสุ่ม) จะถูกทำเครื่องหมายด้วยbดังตัวอย่างเอาต์พุตนี้ls -l: [ 6 ]
c rw-rw-rw- ... /dev/null b rw-rw---- ... /dev/sda
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ประเภทไฟล์ Unix
ประเภทไฟล์มาตรฐานของ Unix ทั้งเจ็ด ประเภท ได้แก่ ไฟล์ ปกติ , ไฟล์ไดเร็กทอรี , ลิงก์สัญลักษณ์ , ไฟล์พิเศษ FIFO , ไฟล์พิเศษบล็อก , ไฟล์พิเศษอักขระและไฟล์ซ็อกเก็ตตามที่กำหนดโดยPOSIX..
ตัวเลข
ชนิดของไฟล์ถูกระบุโดยโหมดของไฟล์ ซึ่งประกอบด้วยชนิดไฟล์และ สิทธิ์การเข้าถึง การเรียกใช้ระบบ stat () จะส่งคืนข้อมูลเกี่ยวกับไฟล์ในโครงสร้างที่รวมโหมดของไฟล์ไว้ในฟิลด์ชื่อ ` ` โดยทั่วไปแล้ว...
สัญลักษณ์
POSIX ระบุรูปแบบยาวของ ls คำสั่งเพื่อแสดงประเภทไฟล์ Unix เป็นตัวอักษรตัวแรกของรายการ [ 6 ]
ตัวอย่าง
คำสั่งนี้ ls -l จะแสดง สตริงโหมดไฟล์ เป็นคอลัมน์แรกของเอาต์พุตสำหรับแต่ละไฟล์ สตริงนี้เริ่มต้นด้วยตัวบ่งชี้ประเภทไฟล์ของ Unix เอาต์พุตต่อไปนี้เป็นของ ไดเร็กทอรีราก จากคำสั่ง ls -l / ซึ่งเริ่มต้นด้วย d เพื่อระบุว่าเป็นไดเร็กทอรี ส่วนที่เหลือของคอลัมน์แรก (...