الأداة واللغة وأجهزة فك التشفير للعمل مع البيانات الثنائية.
TLDR: يهدف إلى أن يكون jq وhexdump وdd وgdb للملفات المدمجة في ملف واحد.
الاستخدام الأساسي هو fq . file
أو fq d file
أو fq 'some query' file ...
.
لمزيد من التفاصيل راجع use.md.
fq مستوحى من أداة ولغة jq ويسمح لك بالعمل مع التنسيقات الثنائية بنفس الطريقة. بالإضافة إلى استخدام تعبيرات jq، يمكنه أيضًا تقديم هياكل الشجرة التي تم فك تشفيرها، وتحويل البيانات الثنائية وتقسيمها وتسلسلها. كما أنه يدعم التنسيقات المتداخلة ويتميز بميزة REPL التفاعلية مع الإكمال التلقائي للوظائف والأسماء.
تم تصميمه في الأصل للاستعلام عن برامج ترميز وحاويات الوسائط وفحصها وتصحيحها مثل MP4 وFLAC وJPEG، ولكن تم توسيعه منذ ذلك الحين لدعم مجموعة متنوعة من التنسيقات مثل الملفات التنفيذية والتقاط الحزم (مع إعادة تجميع TCP) وتنسيقات التسلسل مثل JSON وYAML وXML ، CBOR، بروتوبوف. بالإضافة إلى ذلك، فهو يحتوي أيضًا على وظائف للعمل مع عناوين URL، والتحويل من/إلى الشكل السداسي، وقواعد الأرقام، والبحث عن الأنماط وما إلى ذلك.
aac_frame، adts، adts_frame، aiff، amf0، apev2، apple_bookmark، ar، asn1_ber، av1_ccr، av1_frame، av1_obu، avc_annexb، avc_au، avc_dcr، avc_nalu، avc_pps، avc_sei، avc_sps، avi، avro_ocf، bencode، bitcoin_blkdat، bitcoin_block، bitcoin_script، bitcoin_transaction، bits، bplist، bsd_loopback_frame، bson، bytes، bzip2، caff، cbor، csv، dns، dns_tcp، elf، ether8023_frame، exif، fairplay_spc، fit، flac، flac_frame، flac_metadatablock، flac_metadatablocks، flac_picture، flac_streaminfo، gif، gzip، hevc_annexb، hevc_au، hevc_dcr، hevc_nalu، hevc_pps، hevc_sps، hevc_vps، html، icc_profile، icmp، icmpv6، id3v1، id3v11، id3v2، ipv4_packet، ipv6_packet، jp2c، jpeg، json، jsonl،leveldb_descriptor،leveldb_log،leveldb_table، luajit، macho، macho_fat، تخفيض السعر، matroska، midi، moc3، mp3، mp3_frame، mp3_frame_vbri، mp3_frame_xing، mp4، mpeg_asc، mpeg_es، mpeg_pes، mpeg_pes_packet، mpeg_spu، mpeg_ts، msgpack، negentropy، nes، ogg، ogg_page، opentimestamps، opus_packet، pcap، pcapng، pg_btree، pg_control، pg_heap، png، prores_frame، protobuf، protobuf_widevine، pssh_playready، rtmp، sll2_packet، sll_packet، اضغط، tar، tcp_segment، tiff، tls، toml، tzif، tzx، udp_datagram، vorbis_comment، vorbis_packet، vp8_frame، vp9_cfm، vp9_frame، vpx_ccr، Wasm، wav، webp، xml، yaml، zip
يمكنه أيضًا العمل مع بعض تنسيقات النص الشائعة مثل عناوين URL وhex وbase64 وPEM وما إلى ذلك، وبالنسبة لبعض تنسيقات التسلسل مثل XML وYAML وما إلى ذلك، يمكنه التحويل من وإلى قيم jq.
للحصول على تفاصيل، راجع formats.md وuse.md.
استخدم إحدى الطرق المذكورة أدناه أو قم بتنزيل إصدار مُصمم مسبقًا لنظام التشغيل macOS أو Linux أو Windows. قم بإلغاء أرشفته وانقل الملف القابل للتنفيذ إلى PATH
وما إلى ذلك.
على نظام التشغيل macOS، إذا لم تقم بالتثبيت باستخدام إحدى الطرق الموضحة أدناه، فقد يتعين عليك السماح بتشغيل الملف الثنائي يدويًا. يمكن القيام بذلك عن طريق محاولة تشغيل الملف الثنائي، وتجاهل التحذير ثم الانتقال إلى تفضيلات الأمان والسماح بذلك. يمكن فعل الشيء نفسه باستخدام هذا الأمر:
xattr -d com.apple.quarantine fq && spctl --add fq
brew install wader/tap/fq
على نظام التشغيل macOS، يمكن أيضًا تثبيت fq
عبر MacPorts. مزيد من التفاصيل هنا.
sudo port install fq
يمكن تثبيت fq
عبر السبق الصحفي.
scoop install fq
يمكن تثبيت fq
من المستودع الإضافي باستخدام pacman:
pacman -S fq
يمكنك أيضًا إنشاء حزمة التطوير (VCS) وتثبيتها باستخدام مساعد AUR:
paru -S fq-git
nix-shell -p fq
استخدم منفذ fq.
حاليًا في اختبار الحافة ولكن يجب أن يعمل بشكل جيد في الوضع المستقر أيضًا.
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing fq
تأكد من تثبيت الإصدار 1.22 أو الأحدث.
للتثبيت مباشرة من مستودع git (لا حاجة لاستنساخ git):
# build and install latest release
go install github.com/wader/fq@latest
# build and install latest master
go install github.com/wader/fq@master
# copy binary to $PATH if needed
cp " $( go env GOPATH ) /bin/fq " /usr/local/bin
للبناء والتشغيل والاختبار من المصدر:
# build and run
go run .
# build and run with arguments
go run . -d mp3 . file.mp3
# just build
go build -o fq .
# run all tests and build binary
make test fq
راجع dev.md
لم يكن هذا المشروع ممكنًا لولا تنفيذ gojq الخاص بـ itchyny. أريد أيضًا أن أشكر HexFiend على الإلهام والأفكار وستيدولان لاختراع لغة jq.
tshark -T json
).mediainfo --Output=JSON
و mediainfo --Details=1
).راجع TODO.md
يتم توزيع fq
بموجب شروط ترخيص MIT.
راجع ملف الترخيص للحصول على تفاصيل الترخيص.
تراخيص التبعيات المباشرة: