• 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 และมีแผนรองรับรูปแบบเพิ่มเติม
  • ดูวิธีใช้งานอย่างละเอียดได้ที่ ffs manpage

ขั้นตอนการเมานต์และแก้ไข

  • การรันพื้นฐานคือ ffs [file] โดยจะเมานต์ file.blah ไว้ที่จุดเมานต์ file และพิมพ์เวอร์ชันอัปเดตสุดท้ายไปยัง stdout
  • สามารถระบุ จุดเมานต์ อย่างชัดเจนด้วย ffs -m MOUNT file และระบุไฟล์เอาต์พุตด้วย -o OUTPUT ได้
  • ffs -i file จะแก้ไขไฟล์แบบ in-place และเมื่อยกเลิกการเมานต์วอลุ่ม ผลลัพธ์จะถูกเขียนกลับไปที่ file
  • กฎการแปลงที่เห็นในตัวอย่าง

    • echo Mikey Indiana >object/name จะเปลี่ยนค่า name ใน JSON
    • echo 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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น