#json #data #shell #yaml #fuse

应用 ffs

ffs---文件文件系统---允许您将半结构化数据(如 JSON)挂载为文件系统,让您使用熟悉的 shell 工具处理现代格式

3 个版本

0.1.2 2021 年 9 月 26 日
0.1.1 2021 年 7 月 15 日
0.1.0 2021 年 6 月 26 日

1564文件系统

GPL-3.0 许可证

1MB
3.5K SLoC

Rust 3K SLoC // 0.0% comments Shell 258 SLoC // 0.1% comments BASH 103 SLoC Zsh 57 SLoC R 23 SLoC

ffs:文件文件系统

Main workflow Crates.io

ffs,文件文件系统,让您将半结构化数据挂载为文件系统——这是一个您已经知道如何操作的树状结构!

使用命令行工具处理半结构化数据很困难。像 jq 这样的工具非常有帮助,但为了进行简单的操作而学习一种新语言是一个很大的要求。通过将难以解析的树映射到文件系统,您可以继续使用您已知的工具。

示例

运行 ffs [file.blah]file.blah 挂载到挂载点 file。文件的最终、更新版本将输出到 stdout。

$ cat object.json 
{ "name": "Michael Greenberg", "eyes": 2, "fingernails": 10, "human": true }
$ ffs -o object_edited.json object.json &
[1] 60182
$ tree object
object
├── eyes
├── fingernails
├── human
└── name

0 directories, 4 files
$ echo Mikey Indiana >object/name
$ echo 1 >object/nose
$ mkdir object/pockets
$ cd object/pockets/
$ echo keys >pants
$ echo pen >shirt
$ cd ..
$ cd ..
$ umount object
$ 
[1]+  Done                    ffs -o object_edited.json object.json
$ cat object_edited.json 
{"eyes":2,"fingernails":10,"human":true,"name":"Mikey Indiana","nose":1,"pockets":{"pants":"keys","shirt":"pen"}}

您可以通过运行 ffs -m MOUNT file 指定显式的挂载点;您可以使用 -o OUTPUT 指定输出文件。您可以通过运行 ffs -i file 在原地编辑文件——当卷卸载时,结果输出将写回 file

外部依赖

您需要一个合适的 FUSEmacFUSE,以及 pkg-config

有关外部依赖安装的示例,请参阅 GitHub 构建工作流程

依赖项

~6–13MB
~141K SLoC