.TH jc 1 2026-06-18 1.25.7 "JSON Convert" .SH "نام (NAME)" \fBjc\fP \- تبدیل خروجی بسیاری از ابزارهای خط فرمان، انواع فایل‌ها و رشته‌ها به JSON .SH "خلاصه دستور (SYNOPSIS)" نحو استاندارد: .RS COMMAND | \fBjc\fP [SLICE] [OPTIONS] PARSER cat FILE | \fBjc\fP [SLICE] [OPTIONS] PARSER echo STRING | \fBjc\fP [SLICE] [OPTIONS] PARSER .RE نحو جادویی (Magic): .RS \fBjc\fP [SLICE] [OPTIONS] COMMAND \fBjc\fP [SLICE] [OPTIONS] /proc/ .RE .SH "توضیحات (DESCRIPTION)" \fBjc\fP خروجی بسیاری از ابزارهای خط فرمان، انواع فایل‌ها و رشته‌های متداول را برای تجزیهٔ آسان‌تر در اسکریپت‌ها به فرمت JSON تبدیل می‌کند. \fBjc\fP ورودی هدایت‌شده از طریق پایپ را از \fBSTDIN\fP دریافت کرده و یک نمایش JSON از خروجی دستور قبلی را به \fBSTDOUT\fP می‌فرستد. به عنوان روشی جایگزین، می‌توان با قرار دادن \fBjc\fP در ابتدای دستور مورد نظر برای تبدیل، از «نحو جادویی» استفاده کرد. گزینه‌ها را می‌توان بلافاصله پیش از درج دستور به \fBjc\fP ارسال نمود. (نکته: نحو جادویی از دستورهای داخلی شل یا نام‌های مستعار پشتیبانی نمی‌کند) .SH "گزینه‌ها (OPTIONS)" .B تجزیه‌کننده‌ها (Parsers): .RS .TP .B \fB--acpi\fP تجزیه‌کنندهٔ دستور `acpi` .TP .B \fB--airport\fP تجزیه‌کنندهٔ دستور `airport -I` .TP .B \fB--airport-s\fP تجزیه‌کنندهٔ دستور `airport -s` .TP .B \fB--amixer\fP تجزیه‌کنندهٔ دستور `amixer` .TP .B \fB--apt-cache-show\fP تجزیه‌کنندهٔ دستور `apt-cache show` .TP .B \fB--apt-get-sqq\fP تجزیه‌کنندهٔ دستور `apt-get -sqq` .TP .B \fB--arp\fP تجزیه‌کنندهٔ دستور `arp` .TP .B \fB--asciitable\fP تجزیه‌کنندهٔ جدول‌های ASCII و Unicode .TP .B \fB--asciitable-m\fP تجزیه‌کنندهٔ جدول‌های چندخطی ASCII و Unicode .TP .B \fB--blkid\fP تجزیه‌کنندهٔ دستور `blkid` .TP .B \fB--bluetoothctl\fP تجزیه‌کنندهٔ دستور `bluetoothctl` .TP .B \fB--cbt\fP تجزیه‌کنندهٔ دستور `cbt` (Google Bigtable) .TP .B \fB--cef\fP تجزیه‌کنندهٔ رشتهٔ CEF .TP .B \fB--cef-s\fP تجزیه‌کنندهٔ جریانی (streaming) رشتهٔ CEF .TP .B \fB--certbot\fP تجزیه‌کنندهٔ دستور `certbot` .TP .B \fB--chage\fP تجزیه‌کنندهٔ دستور `chage --list` .TP .B \fB--cksum\fP تجزیه‌کنندهٔ دستورهای `cksum` و `sum` .TP .B \fB--clf\fP تجزیه‌کنندهٔ فایل قالب‌های لاگ Common و Combined Log Format .TP .B \fB--clf-s\fP تجزیه‌کنندهٔ جریانی فایل قالب‌های لاگ Common و Combined Log Format .TP .B \fB--crontab\fP تجزیه‌کنندهٔ دستور و فایل `crontab` .TP .B \fB--crontab-u\fP تجزیه‌کنندهٔ فایل `crontab` با پشتیبانی از کاربر .TP .B \fB--csv\fP تجزیه‌کنندهٔ فایل CSV .TP .B \fB--csv-ih\fP تجزیه‌کنندهٔ فایل CSV با سربرگ ضمنی (implicit header) .TP .B \fB--csv-s\fP تجزیه‌کنندهٔ جریانی فایل CSV .TP .B \fB--csv-ih-s\fP تجزیه‌کنندهٔ جریانی فایل CSV با سربرگ ضمنی .TP .B \fB--curl-head\fP تجزیه‌کنندهٔ دستور `curl --head` .TP .B \fB--date\fP تجزیه‌کنندهٔ دستور `date` .TP .B \fB--datetime-iso\fP تجزیه‌کنندهٔ رشتهٔ تاریخ و زمان ISO 8601 .TP .B \fB--debconf-show\fP تجزیه‌کنندهٔ دستور `debconf-show`.TP .B \fB--df\fP تجزیه‌گر دستور `df` .TP .B \fB--dig\fP تجزیه‌گر دستور `dig` .TP .B \fB--dir\fP تجزیه‌گر دستور `dir` .TP .B \fB--dmidecode\fP تجزیه‌گر دستور `dmidecode` .TP .B \fB--dpkg-l\fP تجزیه‌گر دستور `dpkg -l` .TP .B \fB--du\fP تجزیه‌گر دستور `du` .TP .B \fB--efibootmgr\fP تجزیه‌گر دستور `efibootmgr` .TP .B \fB--email-address\fP تجزیه‌گر رشته نشانی ایمیل .TP .B \fB--env\fP تجزیه‌گر دستور `env` .TP .B \fB--ethtool\fP تجزیه‌گر دستور `ethtool` .TP .B \fB--file\fP تجزیه‌گر دستور `file` .TP .B \fB--find\fP تجزیه‌گر دستور `find` .TP .B \fB--findmnt\fP تجزیه‌گر دستور `findmnt` .TP .B \fB--finger\fP تجزیه‌گر دستور `finger` .TP .B \fB--free\fP تجزیه‌گر دستور `free` .TP .B \fB--fstab\fP تجزیه‌گر فایل `/etc/fstab` .TP .B \fB--git-log\fP تجزیه‌گر دستور `git log` .TP .B \fB--git-log-s\fP تجزیه‌گر جریانی دستور `git log` .TP .B \fB--git-ls-remote\fP تجزیه‌گر دستور `git ls-remote` .TP .B \fB--gpg\fP تجزیه‌گر دستور `gpg --with-colons` .TP .B \fB--group\fP تجزیه‌گر فایل `/etc/group` .TP .B \fB--gshadow\fP تجزیه‌گر فایل `/etc/gshadow` .TP .B \fB--hash\fP تجزیه‌گر دستور `hash` .TP .B \fB--hashsum\fP تجزیه‌گر دستور hashsum (`md5sum`، `shasum` و غیره) .TP .B \fB--hciconfig\fP تجزیه‌گر دستور `hciconfig` .TP .B \fB--history\fP تجزیه‌گر دستور `history` .TP .B \fB--host\fP تجزیه‌گر دستور `host` .TP .B \fB--hosts\fP تجزیه‌گر فایل `/etc/hosts` .TP .B \fB--http-headers\fP تجزیه‌گر سرآیندهای HTTP .TP .B \fB--id\fP تجزیه‌گر دستور `id` .TP .B \fB--ifconfig\fP تجزیه‌گر دستور `ifconfig` .TP .B \fB--ini\fP تجزیه‌گر فایل INI .TP .B \fB--ini-dup\fP تجزیه‌گر فایل INI با کلیدهای تکراری .TP .B \fB--iostat\fP تجزیه‌گر دستور `iostat` .TP .B \fB--iostat-s\fP تجزیه‌گر جریانی دستور `iostat` .TP .B \fB--ip-address\fP تجزیه‌گر رشته نشانی IPv4 و IPv6.TP .B \fB--ipconfig\fP تجزیه‌کننده دستور ویندوز `ipconfig` .TP .B \fB--iptables\fP تجزیه‌کننده دستور `iptables` .TP .B \fB--ip-route\fP تجزیه‌کننده دستور `ip route` .TP .B \fB--iw-scan\fP تجزیه‌کننده دستور `iw dev [device] scan` .TP .B \fB--iwconfig\fP تجزیه‌کننده دستور `iwconfig` .TP .B \fB--jar-manifest\fP تجزیه‌کننده فایل MANIFEST.MF جاوا .TP .B \fB--jobs\fP تجزیه‌کننده دستور `jobs` .TP .B \fB--jwt\fP تجزیه‌کننده رشته JWT .TP .B \fB--kv\fP تجزیه‌کننده فایل و رشته کلید/مقدار .TP .B \fB--kv-dup\fP تجزیه‌کننده فایل و رشته کلید/مقدار با کلیدهای تکراری .TP .B \fB--last\fP تجزیه‌کننده دستورهای `last` و `lastb` .TP .B \fB--ls\fP تجزیه‌کننده دستور `ls` .TP .B \fB--ls-s\fP تجزیه‌کننده جریانی دستور `ls` .TP .B \fB--lsattr\fP تجزیه‌کننده دستور `lsattr` .TP .B \fB--lsb-release\fP تجزیه‌کننده دستور `lsb_release` .TP .B \fB--lsblk\fP تجزیه‌کننده دستور `lsblk` .TP .B \fB--lsmod\fP تجزیه‌کننده دستور `lsmod` .TP .B \fB--lsof\fP تجزیه‌کننده دستور `lsof` .TP .B \fB--lspci\fP تجزیه‌کننده دستور `lspci -mmv` .TP .B \fB--lsusb\fP تجزیه‌کننده دستور `lsusb` .TP .B \fB--m3u\fP تجزیه‌کننده فایل‌های M3U و M3U8 .TP .B \fB--mdadm\fP تجزیه‌کننده دستور `mdadm` .TP .B \fB--mount\fP تجزیه‌کننده دستور `mount` .TP .B \fB--mpstat\fP تجزیه‌کننده دستور `mpstat` .TP .B \fB--mpstat-s\fP تجزیه‌کننده جریانی دستور `mpstat` .TP .B \fB--needrestart\fP تجزیه‌کننده دستور `needrestart -b` .TP .B \fB--netstat\fP تجزیه‌کننده دستور `netstat` .TP .B \fB--net-localgroup\fP تجزیه‌کننده دستور `net localgroup` .TP .B \fB--net-user\fP تجزیه‌کننده دستور `net user` .TP .B \fB--nmcli\fP تجزیه‌کننده دستور `nmcli` .TP .B \fB--nsd-control\fP تجزیه‌کننده دستور `nsd-control` .TP .B \fB--ntpq\fP تجزیه‌کننده دستور `ntpq -p` .TP .B \fB--openvpn\fP تجزیه‌کننده فایل openvpn-status.log .TP .B \fB--os-prober\fP تجزیه‌کننده دستور `os-prober` .TP .B \fB--os-release\fP تجزیه‌کننده فایل `/etc/os-release` .TP .B \fB--pacman\fP تجزیه‌کننده دستور `pacman`.TP .B \fB--passwd\fP تجزیه‌کنندهٔ فایل `/etc/passwd` .TP .B \fB--path\fP تجزیه‌کنندهٔ رشتهٔ مسیر POSIX .TP .B \fB--path-list\fP تجزیه‌کنندهٔ رشتهٔ فهرست مسیرهای POSIX .TP .B \fB--pci-ids\fP تجزیه‌کنندهٔ فایل `pci.ids` .TP .B \fB--pgpass\fP تجزیه‌کنندهٔ فایل گذرواژهٔ PostgreSQL .TP .B \fB--pidstat\fP تجزیه‌کنندهٔ دستور `pidstat -H` .TP .B \fB--pidstat-s\fP تجزیه‌کنندهٔ جریانی دستور `pidstat -H` .TP .B \fB--ping\fP تجزیه‌کنندهٔ دستورهای `ping` و `ping6` .TP .B \fB--ping-s\fP تجزیه‌کنندهٔ جریانی دستورهای `ping` و `ping6` .TP .B \fB--pip-list\fP تجزیه‌کنندهٔ دستور `pip list` .TP .B \fB--pip-show\fP تجزیه‌کنندهٔ دستور `pip show` .TP .B \fB--pkg-index-apk\fP تجزیه‌کنندهٔ فایل نمایهٔ بسته‌های Alpine Linux .TP .B \fB--pkg-index-deb\fP تجزیه‌کنندهٔ فایل نمایهٔ بسته‌های Debian .TP .B \fB--plist\fP تجزیه‌کنندهٔ فایل PLIST .TP .B \fB--postconf\fP تجزیه‌کنندهٔ دستور `postconf -M` .TP .B \fB--proc\fP تجزیه‌کنندهٔ فایل `/proc/` .TP .B \fB--proc-buddyinfo\fP تجزیه‌کنندهٔ فایل `/proc/buddyinfo` .TP .B \fB--proc-cmdline\fP تجزیه‌کنندهٔ فایل `/proc/cmdline` .TP .B \fB--proc-consoles\fP تجزیه‌کنندهٔ فایل `/proc/consoles` .TP .B \fB--proc-cpuinfo\fP تجزیه‌کنندهٔ فایل `/proc/cpuinfo` .TP .B \fB--proc-crypto\fP تجزیه‌کنندهٔ فایل `/proc/crypto` .TP .B \fB--proc-devices\fP تجزیه‌کنندهٔ فایل `/proc/devices` .TP .B \fB--proc-diskstats\fP تجزیه‌کنندهٔ فایل `/proc/diskstats` .TP .B \fB--proc-filesystems\fP تجزیه‌کنندهٔ فایل `/proc/filesystems` .TP .B \fB--proc-interrupts\fP تجزیه‌کنندهٔ فایل `/proc/interrupts` .TP .B \fB--proc-iomem\fP تجزیه‌کنندهٔ فایل `/proc/iomem` .TP .B \fB--proc-ioports\fP تجزیه‌کنندهٔ فایل `/proc/ioports` .TP .B \fB--proc-loadavg\fP تجزیه‌کنندهٔ فایل `/proc/loadavg` .TP .B \fB--proc-locks\fP تجزیه‌کنندهٔ فایل `/proc/locks` .TP .B \fB--proc-meminfo\fP تجزیه‌کنندهٔ فایل `/proc/meminfo` .TP .B \fB--proc-modules\fP تجزیه‌کنندهٔ فایل `/proc/modules` .TP .B \fB--proc-mtrr\fP تجزیه‌کنندهٔ فایل `/proc/mtrr` .TP .B \fB--proc-pagetypeinfo\fP تجزیه‌کنندهٔ فایل `/proc/pagetypeinfo` .TP .B \fB--proc-partitions\fP تجزیه‌کنندهٔ فایل `/proc/partitions` .TP .B \fB--proc-slabinfo\fP تجزیه‌کنندهٔ فایل `/proc/slabinfo` .TP .B \fB--proc-softirqs\fP تجزیه‌کنندهٔ فایل `/proc/softirqs`.TP .B \fB--proc-stat\fP تجزیه‌کننده فایل `/proc/stat` .TP .B \fB--proc-swaps\fP تجزیه‌کننده فایل `/proc/swaps` .TP .B \fB--proc-uptime\fP تجزیه‌کننده فایل `/proc/uptime` .TP .B \fB--proc-version\fP تجزیه‌کننده فایل `/proc/version` .TP .B \fB--proc-vmallocinfo\fP تجزیه‌کننده فایل `/proc/vmallocinfo` .TP .B \fB--proc-vmstat\fP تجزیه‌کننده فایل `/proc/vmstat` .TP .B \fB--proc-zoneinfo\fP تجزیه‌کننده فایل `/proc/zoneinfo` .TP .B \fB--proc-driver-rtc\fP تجزیه‌کننده فایل `/proc/driver/rtc` .TP .B \fB--proc-net-arp\fP تجزیه‌کننده فایل `/proc/net/arp` .TP .B \fB--proc-net-dev\fP تجزیه‌کننده فایل `/proc/net/dev` .TP .B \fB--proc-net-dev-mcast\fP تجزیه‌کننده فایل `/proc/net/dev_mcast` .TP .B \fB--proc-net-if-inet6\fP تجزیه‌کننده فایل `/proc/net/if_inet6` .TP .B \fB--proc-net-igmp\fP تجزیه‌کننده فایل `/proc/net/igmp` .TP .B \fB--proc-net-igmp6\fP تجزیه‌کننده فایل `/proc/net/igmp6` .TP .B \fB--proc-net-ipv6-route\fP تجزیه‌کننده فایل `/proc/net/ipv6_route` .TP .B \fB--proc-net-netlink\fP تجزیه‌کننده فایل `/proc/net/netlink` .TP .B \fB--proc-net-netstat\fP تجزیه‌کننده فایل `/proc/net/netstat` .TP .B \fB--proc-net-packet\fP تجزیه‌کننده فایل `/proc/net/packet` .TP .B \fB--proc-net-protocols\fP تجزیه‌کننده فایل `/proc/net/protocols` .TP .B \fB--proc-net-route\fP تجزیه‌کننده فایل `/proc/net/route` .TP .B \fB--proc-net-tcp\fP تجزیه‌کننده فایل‌های `/proc/net/tcp` و `/proc/net/tcp6` .TP .B \fB--proc-net-unix\fP تجزیه‌کننده فایل `/proc/net/unix` .TP .B \fB--proc-pid-fdinfo\fP تجزیه‌کننده فایل `/proc//fdinfo/` .TP .B \fB--proc-pid-io\fP تجزیه‌کننده فایل `/proc//io` .TP .B \fB--proc-pid-maps\fP تجزیه‌کننده فایل `/proc//maps` .TP .B \fB--proc-pid-mountinfo\fP تجزیه‌کننده فایل `/proc//mountinfo` .TP .B \fB--proc-pid-numa-maps\fP تجزیه‌کننده فایل `/proc//numa_maps` .TP .B \fB--proc-pid-smaps\fP تجزیه‌کننده فایل `/proc//smaps` .TP .B \fB--proc-pid-stat\fP تجزیه‌کننده فایل `/proc//stat` .TP .B \fB--proc-pid-statm\fP تجزیه‌کننده فایل `/proc//statm` .TP .B \fB--proc-pid-status\fP تجزیه‌کننده فایل `/proc//status` .TP .B \fB--ps\fP تجزیه‌کننده دستور `ps` .TP .B \fB--resolve-conf\fP تجزیه‌کننده فایل `/etc/resolve.conf` .TP .B \fB--route\fP تجزیه‌کننده دستور `route` .TP .B \fB--route-print\fP تجزیه‌کننده دستور `route print` .TP .B \fB--rpm-qi\fP تجزیه‌کننده دستور `rpm -qi`.TP .B \fB--rsync\fP تجزیه‌کننده دستور `rsync` .TP .B \fB--rsync-s\fP تجزیه‌کننده جریانی دستور `rsync` .TP .B \fB--semver\fP تجزیه‌کننده رشته Semantic Version .TP .B \fB--sfdisk\fP تجزیه‌کننده دستور `sfdisk` .TP .B \fB--shadow\fP تجزیه‌کننده فایل `/etc/shadow` .TP .B \fB--srt\fP تجزیه‌کننده فایل SRT .TP .B \fB--ss\fP تجزیه‌کننده دستور `ss` .TP .B \fB--ssh-conf\fP تجزیه‌کننده فایل پیکربندی `ssh` و دستور `ssh -G` .TP .B \fB--sshd-conf\fP تجزیه‌کننده فایل پیکربندی `sshd` و دستور `sshd -T` .TP .B \fB--stat\fP تجزیه‌کننده دستور `stat` .TP .B \fB--stat-s\fP تجزیه‌کننده جریانی دستور `stat` .TP .B \fB--swapon\fP تجزیه‌کننده دستور `swapon` .TP .B \fB--sysctl\fP تجزیه‌کننده دستور `sysctl` .TP .B \fB--syslog\fP تجزیه‌کننده رشته Syslog RFC 5424 .TP .B \fB--syslog-s\fP تجزیه‌کننده جریانی رشته Syslog RFC 5424 .TP .B \fB--syslog-bsd\fP تجزیه‌کننده رشته Syslog RFC 3164 .TP .B \fB--syslog-bsd-s\fP تجزیه‌کننده جریانی رشته Syslog RFC 3164 .TP .B \fB--systemctl\fP تجزیه‌کننده دستور `systemctl` .TP .B \fB--systemctl-lj\fP تجزیه‌کننده دستور `systemctl list-jobs` .TP .B \fB--systemctl-ls\fP تجزیه‌کننده دستور `systemctl list-sockets` .TP .B \fB--systemctl-luf\fP تجزیه‌کننده دستور `systemctl list-unit-files` .TP .B \fB--systeminfo\fP تجزیه‌کننده دستور `systeminfo` .TP .B \fB--time\fP تجزیه‌کننده دستور `/usr/bin/time` .TP .B \fB--timedatectl\fP تجزیه‌کننده دستور `timedatectl status` .TP .B \fB--timestamp\fP تجزیه‌کننده رشته برچسب زمان Unix Epoch .TP .B \fB--toml\fP تجزیه‌کننده فایل TOML .TP .B \fB--top\fP تجزیه‌کننده دستور `top -b` .TP .B \fB--top-s\fP تجزیه‌کننده جریانی دستور `top -b` .TP .B \fB--tracepath\fP تجزیه‌کننده دستورهای `tracepath` و `tracepath6` .TP .B \fB--traceroute\fP تجزیه‌کننده دستورهای `traceroute` و `traceroute6` .TP .B \fB--traceroute-s\fP تجزیه‌کننده جریانی دستورهای `traceroute` و `traceroute6` .TP .B \fB--tsv\fP تجزیه‌کننده فایل TSV .TP .B \fB--tsv-ih\fP تجزیه‌کننده فایل TSV با سرآیند ضمنی .TP .B \fB--tsv-s\fP تجزیه‌کننده جریانی فایل TSV .TP .B \fB--tsv-ih-s\fP تجزیه‌کننده جریانی فایل TSV با سرآیند ضمنی .TP .B \fB--tune2fs\fP تجزیه‌کننده دستور `tune2fs -l`.TP .B \fB--typeset\fP تجزیه‌گر دستورهای `typeset` و `declare` .TP .B \fB--udevadm\fP تجزیه‌گر دستور `udevadm info` .TP .B \fB--ufw\fP تجزیه‌گر دستور `ufw status` .TP .B \fB--ufw-appinfo\fP تجزیه‌گر دستور `ufw app info [application]` .TP .B \fB--uname\fP تجزیه‌گر دستور `uname -a` .TP .B \fB--update-alt-gs\fP تجزیه‌گر دستور `update-alternatives --get-selections` .TP .B \fB--update-alt-q\fP تجزیه‌گر دستور `update-alternatives --query` .TP .B \fB--upower\fP تجزیه‌گر دستور `upower` .TP .B \fB--uptime\fP تجزیه‌گر دستور `uptime` .TP .B \fB--url\fP تجزیه‌گر رشته URL .TP .B \fB--ver\fP تجزیه‌گر رشته نسخه .TP .B \fB--veracrypt\fP تجزیه‌گر دستور `veracrypt` .TP .B \fB--vmstat\fP تجزیه‌گر دستور `vmstat` .TP .B \fB--vmstat-s\fP تجزیه‌گر جریانی دستور `vmstat` .TP .B \fB--w\fP تجزیه‌گر دستور `w` .TP .B \fB--wc\fP تجزیه‌گر دستور `wc` .TP .B \fB--wg-show\fP تجزیه‌گر دستور `wg show` .TP .B \fB--who\fP تجزیه‌گر دستور `who` .TP .B \fB--x509-cert\fP تجزیه‌گر فایل‌های گواهی X.509 با قالب PEM و DER .TP .B \fB--x509-crl\fP تجزیه‌گر فایل‌های فهرست ابطال گواهی (CRL) با ساختار X.509 PEM و DER .TP .B \fB--x509-csr\fP تجزیه‌گر فایل‌های درخواست گواهی (CSR) با ساختار X.509 PEM و DER .TP .B \fB--xml\fP تجزیه‌گر فایل‌های XML .TP .B \fB--xrandr\fP تجزیه‌گر دستور `xrandr` .TP .B \fB--yaml\fP تجزیه‌گر فایل‌های YAML .TP .B \fB--zipinfo\fP تجزیه‌گر دستور `zipinfo` .TP .B \fB--zpool-iostat\fP تجزیه‌گر دستور `zpool iostat` .TP .B \fB--zpool-status\fP تجزیه‌گر دستور `zpool status` .RE .PP .B گزینه‌ها: .RS .TP .B \fB-a\fP, \fB--about\fP درباره \fBjc\fP (خروجی JSON یا YAML) .TP .B \fB-C\fP, \fB--force-color\fP اجبار به خروجی رنگی حتی هنگام استفاده از لوله‌ها (بر \fB-m\fP و متغیر محیطی \fBNO_COLOR\fP اولویت دارد) .TP .B \fB-d\fP, \fB--debug\fP اشکال‌زدایی \- نمایش ردگیری اشکال (traceback) (برای ردگیری با جزئیات بیشتر از \fB-dd\fP استفاده کنید) .TP .B \fB-h\fP, \fB--help\fP راهنما (\fB--help --parser_name\fP برای مستندات تجزیه‌گر). برای نمایش تجزیه‌گرهای پنهان دو بار استفاده کنید (مانند \fB-hh\fP). برای نمایش دسته‌بندی‌های تجزیه‌گر سه بار استفاده کنید (مانند \fB-hhh\fP). .TP .B \fB-m\fP, \fB--monochrome\fP خروجی تک‌رنگ .TP .B \fB-M\fP, \fB--meta-out\fP افزودن فراداده به خروجی شامل برچسب زمان، نام تجزیه‌گر، دستور جادویی، کد خروج دستور جادویی و غیره. .TP .B \fB-p\fP, \fB--pretty\fP خروجی با قالب‌بندی زیبا (pretty-print) .TP .B \fB-q\fP, \fB--quiet\fP حالت بی‌صدا. سرکوب پیام‌های هشدار تجزیه‌گر (از \fB-qq\fP برای نادیده گرفتن خطاهای تجزیه‌گر جریانی استفاده کنید) .TP .B \fB-r\fP, \fB--raw\fP خروجی خام. ارائه خروجی تحت‌اللفظی‌تر، معمولاً با مقادیر رشته‌ای و بدون پردازش معنایی اضافی.TP .B \fB-s\fP, \fB--slurp\fP بلعیدن (slurp) چند خط در یک آرایه. (برای یافتن تجزیه‌کننده‌های سازگار از \fB-hhh\fP استفاده کنید) .TP .B \fB-u\fP, \fB--unbuffer\fP غیرفعال کردن بافر خروجی (مفید برای داده‌های جاریِ کُند با تجزیه‌کننده‌های جریانی) .TP .B \fB-v\fP, \fB--version\fP اطلاعات نسخه .TP .B \fB-y\fP, \fB--yaml-out\fP خروجی YAML .TP .B \fB-B\fP, \fB--bash-comp\fP تولید اسکریپت تکمیل خودکار پوسته Bash .TP .B \fB-Z\fP, \fB--zsh-comp\fP تولید اسکریپت تکمیل خودکار پوسته Zsh .RE .PP .B برش (Slice): .RS برش خطوط با استفاده از نحوِ \fBSTART:STOP\fP مشابه با قابلیت برش‌دهی (slicing) در Python پشتیبانی می‌شود. این ویژگی به شما امکان می‌دهد خطوطی را در ابتدا و/یا انتهای ورودی \fBSTDIN\fP که می‌خواهید توسط \fBjc\fP تبدیل شوند، نادیده بگیرید. \fBSTART\fP و \fBSTOP\fP می‌توانند اعداد صحیح مثبت، منفی یا خالی باشند و به شما امکان می‌دهند مشخص کنید چند خط نادیده گرفته شوند و چند خط پردازش شوند. برش‌های مثبت و خالی از نظر مصرف حافظه بهینه‌ترین هستند. هرگونه عدد صحیح منفی در برش، حافظه بیشتری مصرف خواهد کرد. به عنوان مثال، برای نادیده گرفتن خط اول و آخر متن زیر، می‌توانید برش را به چند روش بیان کنید: .RS .nf $ cat table.txt ### We want to skip this header ### col1 col2 foo 1 bar 2 ### We want to skip this footer ### $ cat table.txt | jc 1:-1 --asciitable [{"col1":"foo","col2":"1"},{"col1":"bar","col2":"2"}] $ cat table.txt | jc 1:4 --asciitable [{"col1":"foo","col2":"1"},{"col1":"bar","col2":"2"}] .fi .RE در این مثال، برش‌های خطیِ \fB1:-1\fP و \fB1:4\fP خروجی یکسانی ارائه می‌دهند. هنگام استفاده از اعداد صحیح مثبت، موقعیت اندیسِ \fBSTOP\fP شامل نمی‌شود (non-inclusive). برش‌های مثبت از اولین خط ورودی به سمت انتها شمارش می‌کنند که با \fB0\fP به عنوان اولین خط شروع می‌شود. برش‌های منفی از آخرین خط به سمت ابتدا شمارش می‌کنند که با \fB-1\fP به عنوان آخرین خط شروع می‌شود. این قابلیت دقیقاً مشابه نحوه کارکرد ویژگی برش‌دهی در Python است. در اینجا جزئیات گزینه‌های برش خطی آورده شده است: .TP .B \fBSTART:STOP\fP خطوط \fBSTART\fP تا \fBSTOP - 1\fP .TP .B \fBSTART:\fP خطوط \fBSTART\fP تا انتهای خروجی .TP .B \fB:STOP\fP خطوط از ابتدا تا \fBSTOP - 1\fP .TP .B \fB-START:STOP\fP از \fBSTART\fP خط مانده به انتها تا \fBSTOP - 1\fP .TP .B \fBSTART:-STOP\fP خطوط \fBSTART\fP تا \fBSTOP\fP خط مانده به انتها .TP .B \fB-START:-STOP\fP از \fBSTART\fP خط مانده به انتها تا \fBSTOP\fP خط مانده به انتها .TP .B \fB-START:\fP از \fBSTART\fP خط مانده به انتها تا انتهای خروجی .TP .B \fB:-STOP\fP خطوط از ابتدا تا \fBSTOP\fP خط مانده به انتها .TP .B \fB:\fP تمامی خطوط.SH "یکجاخوانی (SLURP)" برخی تجزیه‌کننده‌ها از ورودی‌های چندگانه پشتیبانی می‌کنند و می‌توانند در یک گذر، آرایه‌ای از نتایج را تولید کنند. یکجاخوانی (Slurping) برای تجزیه‌کننده‌های رشته‌ای که ورودی تک‌خطی می‌پذیرند کار می‌کند (مانند \fBurl\fP و \fBip-address\fP). برای مشاهدهٔ فهرست تجزیه‌کننده‌هایی که از گزینهٔ \fB--slurp\fP پشتیبانی می‌کنند، از \fBjc -hhh\fP استفاده کنید. برای مثال، می‌توانید فایلی شامل چندین نشانی IP (هر کدام در یک خط) را به همراه گزینهٔ \fB--slurp\fP به \fBjc\fP ارسال کنید تا آرایه‌ای از نتایج در خروجی تولید شود: .RS .nf $ cat ip-addresses.txt | jc --slurp --ip-address [] .fi .RE نحو جادویی برای فایل‌های \fB/proc\fP به طور خودکار از یکجاخوانی چندین فایل پشتیبانی می‌کند (نیازی به استفاده از گزینهٔ \fB--slurp\fP نیست). برای مثال، می‌توانید چندین فایل PID را به طور هم‌زمان تبدیل کنید: .RS .nf $ jc /proc/*/status [] .fi .RE هنگامی که از نحو جادویی \fB/proc\fP استفاده می‌شود و چندین فایل انتخاب شده‌اند، یک فیلد اضافی \fB_file\fP در خروجی درج می‌شود تا تشخیص اینکه هر شیء خروجی به کدام فایل اشاره دارد آسان‌تر باشد. در نهایت، می‌توان از گزینهٔ \fB--meta-out\fP در کنار خروجی یکجاخوانده‌شده استفاده کرد. در این حالت، خروجی یکجاخوانده‌شده در شیئی با ساختار زیر قرار می‌گیرد: .RS .nf { "result": [], "_jc_meta": { "parser": "url", "timestamp": 1706235558.654576, "slice_start": null, "slice_end": null, "input_list": [ "http://www.google.com", "https://www.apple.com", "https://www.microsoft.com" ] } } .fi .RE با گزینهٔ \fB--meta-out\fP، فیلد \fBinput_list\fP شامل فهرستی از ورودی‌هاست (رشته‌های ورودی واقعی یا نام فایل‌های \fB/proc\fP)، تا بتوانید مشخص کنید هر شیء خروجی به کدام رشتهٔ ورودی یا نام فایل \fB/proc\fP مربوط می‌شود. .SH "کدهای خروج (EXIT CODES)" هرگونه خطای مهلک در \fBjc\fP کد خروج \fB100\fP را تولید خواهد کرد، در غیر این صورت کد خروج \fB0\fP خواهد بود. هنگام استفاده از نحو «جادویی» (مانند \fBjc ifconfig eth0\fP)، دستور \fBjc\fP کد خروج برنامهٔ در حال تجزیه را ذخیره کرده و آن را به کد خروج \fBjc\fP اضافه می‌کند. به این ترتیب، تشخیص اینکه آیا خطا از برنامهٔ تجزیه‌شده بوده یا از \fBjc\fP آسان‌تر خواهد بود. مثال‌های زیر را با استفاده از \fBifconfig\fP در نظر بگیرید: .RS کد خروج ifconfig = \fB0\fP، کد خروج jc = \fB0\fP، کد خروج ترکیبی = \fB0\fP (بدون خطا) کد خروج ifconfig = \fB1\fP، کد خروج jc = \fB0\fP، کد خروج ترکیبی = \fB1\fP (خطا در ifconfig) کد خروج ifconfig = \fB0\fP، کد خروج jc = \fB100\fP، کد خروج ترکیبی = \fB100\fP (خطا در jc) کد خروج ifconfig = \fB1\fP، کد خروج jc = \fB100\fP، کد خروج ترکیبی = \fB101\fP (خطا در هر دو ifconfig و jc) .RE هنگام استفاده از نحو «جادویی»، می‌توانید با استفاده از گزینهٔ \fB--meta-out\fP یا \fB-M\fP کد خروج برنامهٔ فراخوانی‌شده را نیز بازیابی کنید. این کار یک شیء \fB_jc_meta\fP را به خروجی پیوست می‌کند که شامل اطلاعات دستور جادویی، از جمله کد خروج خواهد بود. در اینجا مثالی با \fBping\fP آورده شده است: .RS .nf $ jc --meta-out -p ping -c2 192.168.1.252 { "destination_ip": "192.168.1.252", "data_bytes": 56, "pattern": null, "destination": "192.168.1.252", "packets_transmitted": 2, "packets_received": 0, "packet_loss_percent": 100.0, "duplicates": 0, "responses": [ { "type": "timeout", "icmp_seq": 0, "duplicate": false } ], "_jc_meta": { "parser": "ping", "timestamp": 1661357115.27949, "magic_command": [ "ping", "-c2", "192.168.1.252" ], "magic_command_exit": 2 } } $ echo $? 2 .fi .RE.SH "محیط (ENVIRONMENT)" \fBرنگ‌های سفارشی\fP می‌توانید رنگ‌های سفارشی را از طریق متغیر محیطی \fBJC_COLORS\fP تعیین کنید. متغیر محیطی \fBJC_COLORS\fP چهار مقدار رشته‌ای جداشده با کاما را در قالب زیر می‌پذیرد: JC_COLORS=,,, که در آن رنگ‌ها عبارتند از: \fBblack\fP، \fBred\fP، \fBgreen\fP، \fByellow\fP، \fBblue\fP، \fBmagenta\fP، \fBcyan\fP، \fBgray\fP، \fBbrightblack\fP، \fBbrightred\fP، \fBbrightgreen\fP، \fBbrightyellow\fP، \fBbrightblue\fP، \fBbrightmagenta\fP، \fBbrightcyan\fP، \fBwhite\fP یا \fBdefault\fP برای نمونه، جهت تنظیم روی رنگ‌های پیش‌فرض: .RS JC_COLORS=blue,brightblack,magenta,green یا JC_COLORS=default,default,default,default .RE \fBغیرفعال‌سازی خروجی رنگی\fP می‌توانید متغیر محیطی \fBNO_COLOR\fP را روی هر مقداری تنظیم کنید تا خروجی رنگی در \fBjc\fP غیرفعال شود. توجه داشته باشید که استفاده از گزینهٔ \fB-C\fP برای اجبار خروجی رنگی، بر هر دو متغیر محیطی \fBNO_COLOR\fP و گزینهٔ \fB-m\fP اولویت خواهد داشت. .SH "تجزیه‌کننده‌های جریانی (STREAMING PARSERS)" بیشتر تجزیه‌کننده‌ها تمام داده‌ها را از \fBSTDIN\fP بارگذاری، آن را تجزیه و سپس کل سند JSON را به صورت متوالی خروجی می‌دهند. برخی تجزیه‌کننده‌های جریانی وجود دارند (مانند \fBls-s\fP، \fBping-s\fP و غیره) که بلافاصله پس از دریافت داده‌ها از \fBSTDIN\fP، پردازش و خروجی دادن خط‌به‌خط داده‌ها را به صورت JSON Lines (معروف به NDJSON) آغاز می‌کنند. این قابلیت می‌تواند میزان حافظهٔ مورد نیاز برای تجزیهٔ حجم بالایی از خروجی دستورها (مانند \fBls -lR /\fP) را به طور چشمگیری کاهش داده و گاهی داده‌ها را سریع‌تر پردازش کند. تجزیه‌کننده‌های جریانی رفتاری کمی متفاوت با تجزیه‌کننده‌های استاندارد دارند که در ادامه شرح داده شده است. .RS نکته: تجزیه‌کننده‌های جریانی را نمی‌توان با نحو «جادویی» (magic syntax) استفاده کرد. .RE \fBنادیده‌گرفتن خطاها\fP شاید بخواهید هنگام استفاده از تجزیه‌کننده‌های جریانی، از خطاهای تجزیه چشم‌پوشی کنید؛ چرا که ممکن است این تجزیه‌کننده‌ها در خط‌لوله‌های پردازشی طولانی‌مدت به کار روند و بروز خطا می‌تواند ارتباط خط‌لوله (pipe) را قطع کند. برای نادیده گرفتن خطاهای تجزیه، از گزینهٔ \fB-qq\fP در خط فرمان استفاده کنید. این کار یک شیء \fB_jc_meta\fP با ویژگی \fBsuccess\fP به خروجی JSON اضافه می‌کند. اگر مقدار \fBsuccess\fP برابر با \fBtrue\fP باشد، خط بدون مشکل تجزیه شده است. اگر \fBsuccess\fP برابر با \fBfalse\fP باشد، مشکلی در تجزیه رخ داده و فیلدهای \fBerror\fP و \fBline\fP به ترتیب برای نمایش توضیح کوتاهی از خطا و محتوای خط غیرقابل‌تجزیه اضافه خواهند شد: .RS خط تجزیه‌شده با موفقیت به همراه گزینهٔ \fB-qq\fP: .RS .nf { "command_data": "data", "_jc_meta": { "success": true } } .fi .RE خط ناموفق در تجزیه به همراه گزینهٔ \fB-qq\fP: .RS .nf { "_jc_meta": { "success": false, "error": "error message", "line": "original line data" } } .fi .RE .RE \fBغیرفعال‌سازی بافر خروجی\fP بیشتر سیستم‌عامل‌ها خروجی‌ای را که از فرآیندی به فرآیند دیگر هدایت (pipe) می‌شود، در بافر قرار می‌دهند. این بافر معمولاً حدود ۴ کیلوبایت است. هنگام مشاهدهٔ خروجی در پایانه (ترمینال)، بافر سیستم‌عامل درگیر نمی‌شود و خروجی بلافاصله روی صفحه نمایش داده می‌شود. با این حال، هنگام هدایت چندین فرآیند به یکدیگر از طریق pipe، اگر سرعت ورودی داده‌ها بسیار پایین باشد (مانند \fBping\fP)، ممکن است به نظر برسد خروجی متوقف شده است: .RS .nf $ ping 1.1.1.1 | jc \fB--ping-s\fP | jq .fi .RE این موضوع به این دلیل است که سیستم‌عامل در این مثال بافر ۴ کیلوبایتی را بین \fBjc\fP و \fBjq\fP فعال می‌کند. برای نمایش بی‌درنگ داده‌ها در پایانه، می‌توانید با استفاده از گزینهٔ \fB-u\fP (نامنباز / unbuffer) در خط فرمان، بافر را غیرفعال کنید: .RS .nf $ ping 1.1.1.1 | jc \fB--ping-s\fP \fB-u\fP | jq {"type":"reply","pattern":null,"timestamp":null,"bytes":"64",...} {"type":"reply","pattern":null,"timestamp":null,"bytes":"64",...} etc... .fi نکته: خروجی بدون بافر ممکن است در جریان‌های داده‌ای بزرگ سرعت کمتری داشته باشد. .RE.SH "افزونه‌های تجزیه‌کننده (PARSER PLUGINS)" افزونه‌های تجزیه‌کننده می‌توانند در پوشهٔ \fBjc/jcparsers\fP در «دایرکتوری داده‌های برنامه» محلی شما قرار گیرند: .RS .nf - Linux/unix: \fB$HOME/.local/share/jc/jcparsers\fP - macOS: \fB$HOME/Library/Application Support/jc/jcparsers\fP - Windows: \fB$LOCALAPPDATA\\jc\\jc\\jcparsers\fP .fi .RE افزونه‌های تجزیه‌کننده فایل‌های ماژول استاندارد python هستند. از تجزیه‌کنندهٔ \fBjc/parsers/foo.py\fP یا \fBjc/parsers/foo_s.py\fP (جریانی) به عنوان الگو استفاده کنید و به سادگی یک فایل \fB.py\fP را در زیرپوشهٔ \fBjcparsers\fP قرار دهید. هرگونه وابستگی را می‌توان در پوشهٔ \fBjc\fP بالاتر از \fBjcparsers\fP قرار داد و در کد تجزیه‌کننده وارد (import) کرد. نام فایل‌های افزونه‌های تجزیه‌کننده باید نام‌های معتبر ماژول python باشند و بنابراین باید با یک حرف شروع شده و تنها شامل حروف و ارقام و خط زیر (_) باشند. افزونه‌های محلی می‌توانند جایگزین تجزیه‌کننده‌های پیش‌فرض شوند. نکته: دایرکتوری داده‌های برنامه از \fBXDG Base Directory Specification\fP پیروی می‌کند. .SH "هشدارها (CAVEATS)" \fBتنظیمات محلی (Locale)\fP برای دریافت بهترین نتیجه، با ویرایش متغیر \fBLC_ALL\fP متغیرهای محیطی locale را روی \fBC\fP یا \fBen_US.UTF-8\fP تنظیم کنید: .RS $ LC_ALL=C date | jc \fB--date\fP .RE همچنین می‌توانید متغیرهای locale را به صورت جداگانه تنظیم کنید: .RS $ export LANG=C $ export LC_NUMERIC=C .RE در برخی از سیستم‌های قدیمی‌تر، اگر locale با مقدار \fBC\fP از کدگذاری UTF-8 پشتیبانی نکند، خروجی UTF-8 با توالی‌های گریز \fB\\u\fP به ASCII تقلیل خواهد یافت. \fBمنطقه‌های زمانی (Timezones)\fP برخی از تجزیه‌کننده‌ها دارای فیلدهای برچسب زمان (timestamp) محاسبه‌شدهٔ epoch هستند که به خروجی اضافه شده‌اند. مگر اینکه نام فیلد برچسب زمان دارای پسوند \fB_utc\fP باشد، در غیر این صورت ناآگاه از منطقهٔ زمانی (naive) در نظر گرفته می‌شود (یعنی بر اساس منطقهٔ زمانی محلی سیستمی است که تجزیه‌کنندهٔ \fBjc\fP روی آن اجرا شده است). اگر یک منطقهٔ زمانی UTC در متن خروجی دستور تشخیص داده شود، برچسب زمان آگاه از منطقهٔ زمانی بوده و پسوند \fB_utc\fP در نام کلید خواهد داشت. (مانند \fBepoch_utc\fP). هیچ منطقهٔ زمانی دیگری برای برچسب‌های زمانی آگاه پشتیبانی نمی‌شود. .SH "مثال‌ها (EXAMPLES)" نحو استاندارد: .RS $ dig www.google.com | jc \fB-p\fP \fB--dig\fP $ cat /proc/meminfo | jc \fB--pretty\fP \fB--proc\fP .RE نحو جادویی (Magic Syntax): .RS $ jc \fB--pretty\fP dig www.google.com $ jc \fB--pretty\fP /proc/meminfo .RE برش خطوط (Line Slicing): .RS $ cat file.csv | jc \fB:101\fP \fB--csv\fP # parse first 100 lines .RE برای مستندات تجزیه‌کننده: .RS $ jc \fB--help\fP \fB--dig\fP .RE راهنمایی بیشتر: .RS $ jc \fB-hh\fP # show hidden parsers $ jc \fB-hhh\fP # list parsers by category tags .RE.SH "نویسنده (AUTHOR)" Kelly Brazil (kellyjonbrazil@gmail.com) https://github.com/kellyjonbrazil/jc .SH "کپی‌رایت و تکثیر (COPYRIGHT)" حق نشر (c) 2019-2026 Kelly Brazil مجوز: مجوز MIT