เปิดตัวระบบไฟล์ ‘File Filesystem’ (2021)
(mgree.github.io)- ffs(file filesystem) คือเครื่องมือที่เมานต์ข้อมูลกึ่งมีโครงสร้าง เช่น JSON, YAML, TOML เป็นระบบไฟล์ เพื่อให้สำรวจและแก้ไขได้ด้วยเครื่องมือ Unix shell
- Unix shell มีเครื่องมือประมวลผลสตริงมากมาย แต่โครงสร้างข้อมูลพื้นฐานคือ ระบบไฟล์ จึงไม่ค่อยเหมาะกับการแก้ไขข้อมูลแบบต้นไม้
ffs [file]จะเชื่อมไฟล์เข้ากับจุดเมานต์ และเมื่อยกเลิกการเมานต์จะส่งออกผลลัพธ์ที่อัปเดตแล้วไปยัง stdout หรือไฟล์เอาต์พุตที่ระบุ- การเขียนไฟล์และการสร้างไดเรกทอรีจะถูกแปลงเป็นคีย์และอ็อบเจ็กต์ของ JSON โดย
1,true,falseและไฟล์ว่างจะถูกสะท้อนเป็นตัวเลข, บูลีน และค่า null ตามลำดับ - Linux ต้องใช้ FUSE, macOS ต้องใช้ macFUSE และอาจไม่เหมาะกับ Windows, สภาพแวดล้อมที่ใช้ FUSE ไม่ได้, งานที่ต้องการค้นหาอย่างเดียว หรือไฟล์ขนาดใหญ่มาก
จัดการข้อมูลกึ่งมีโครงสร้างเหมือนไดเรกทอรี
- ffs ย่อมาจาก file filesystem เป็นเครื่องมือที่เมานต์ข้อมูลกึ่งมีโครงสร้างให้เหมือนระบบไฟล์ เพื่อให้ทำงานด้วยเครื่องมือ shell ที่คุ้นเคยได้
- รูปแบบที่รองรับในปัจจุบันคือ JSON, YAML, TOML และมีแผนรองรับรูปแบบเพิ่มเติม
- ดูวิธีใช้งานอย่างละเอียดได้ที่
ffsmanpage
ขั้นตอนการเมานต์และแก้ไข
- การรันพื้นฐานคือ
ffs [file]โดยจะเมานต์file.blahไว้ที่จุดเมานต์fileและพิมพ์เวอร์ชันอัปเดตสุดท้ายไปยัง stdout - สามารถระบุ จุดเมานต์ อย่างชัดเจนด้วย
ffs -m MOUNT fileและระบุไฟล์เอาต์พุตด้วย-o OUTPUTได้ ffs -i fileจะแก้ไขไฟล์แบบ in-place และเมื่อยกเลิกการเมานต์วอลุ่ม ผลลัพธ์จะถูกเขียนกลับไปที่file-
กฎการแปลงที่เห็นในตัวอย่าง
echo Mikey Indiana >object/nameจะเปลี่ยนค่าnameใน JSONecho 1 >object/noseจะถูกสะท้อนเป็นตัวเลข1ไม่ใช่สตริงmkdir object/pocketsและไฟล์ภายในจะถูกแปลงเป็นอ็อบเจ็กต์ JSON- ไฟล์ว่าง
mistakesจะถูกบันทึกเป็นnullใน JSON
เงื่อนไขการติดตั้งและการเผยแพร่
- บน Linux ต้องใช้ FUSE
- บน macOS ต้องใช้ macFUSE
- บิลด์พัฒนาล่าสุดมีให้เป็นไฟล์ปฏิบัติการเดี่ยวสำหรับ Linux, macOS
- สามารถดูรีลีสเฉพาะได้ที่ release page และเวอร์ชันปัจจุบันคือ 0.1.2
- สามารถบิลด์จาก source ได้เช่นกัน
แหล่งข้อมูลที่เกี่ยวข้องและจุดเปรียบเทียบ
- มีบทความ PLOS 2021 “Files-as-Filesystems for POSIX Shell Data Processing”
- jq และ gron เป็นเครื่องมือสำหรับจัดการ JSON บน command line
- จุดแตกต่างของ ffs คือรองรับหลายรูปแบบ แก้ไขได้ด้วยเครื่องมือ shell ที่คุ้นเคย และไม่จำเป็นต้องเรียนภาษาใหม่
- การใช้งานบน Windows, การใช้ FUSE ไม่ได้, งานที่ต้องการค้นหาเท่านั้น หรือไฟล์ขนาดใหญ่มาก อาจไม่เหมาะกับ ffs
- ไลเซนส์คือ GPLv3
ยังไม่มีความคิดเห็น