概述
jc
是一个强大的命令行工具,它能够将各种命令的输出转换为 JSON 格式。这个工具对于需要处理命令行输出的开发者和系统管理员来说非常有用,因为它使得命令行输出可以被程序化地解析和处理。
安装
1 | apt -y install jc |
基本用法
jc
的基本语法非常简单:
1 | command | jc [parser] |
其中 parser
是可选的,用于指定要使用的解析器。如果不指定,jc
会尝试自动检测最适合的解析器。
常用解析器
jc
支持多种命令的解析,以下是一些常用的解析器:
airport
- 无线网络信息arp
- ARP 缓存表blkid
- 块设备信息cksum
- 文件校验和crontab
- 定时任务date
- 日期和时间df
- 磁盘使用情况dig
- DNS 查询dmidecode
- 硬件信息dpkg-query
- Debian 包信息du
- 目录使用情况env
- 环境变量file
- 文件类型find
- 文件查找free
- 内存使用情况fstab
- 文件系统挂载表history
- 命令历史hostname
- 主机名id
- 用户和组信息ifconfig
- 网络接口信息ini
- INI 文件iptables
- 防火墙规则iwconfig
- 无线网络配置jobs
- 后台任务last
- 登录历史ls
- 文件列表lsblk
- 块设备列表lsmod
- 内核模块lsof
- 打开的文件mount
- 挂载点netstat
- 网络统计信息nmcli
- 网络管理器ntpq
- NTP 查询passwd
- 用户密码文件ping
- 网络连通性测试pip-list
- Python 包列表pip-show
- Python 包信息ps
- 进程信息route
- 路由表rpm-qi
- RPM 包信息rsync
- 文件同步sfdisk
- 分区表ss
- 套接字统计stat
- 文件状态systemctl
- 系统服务systeminfo
- 系统信息timedatectl
- 时间和日期设置tracepath
- 网络路径追踪traceroute
- 网络路由追踪uname
- 系统信息uptime
- 系统运行时间w
- 登录用户wc
- 字数统计who
- 登录用户xml
- XML 文件yaml
- YAML 文件zipinfo
- ZIP 文件信息
其他可用解析器
除了上述常用解析器外,jc
还支持以下解析器:
acpi
- ACPI 信息airport-s
- 无线网络扫描apk
- Alpine 包信息apt-cache
- APT 缓存信息apt-get
- APT 包管理as
- 汇编器输出bluetoothctl
- 蓝牙控制cbt
- 网络连接信息certbot
- SSL 证书信息chage
- 密码过期信息cksum
- 文件校验和clf
- 通用日志格式crontab-u
- 用户定时任务csv
- CSV 文件curl
- HTTP 请求cut
- 文本切割date-iso
- ISO 格式日期date-rfc
- RFC 格式日期debconf-show
- Debian 配置dir
- 目录列表dmesg
- 内核消息docker
- Docker 信息docker-compose
- Docker Composedpkg-l
- Debian 包列表edid-decode
- 显示器信息efibootmgr
- EFI 启动管理器env-export
- 环境变量导出ethtool
- 网络接口信息file-magic
- 文件类型(魔法数字)finger
- 用户信息flatpak
- Flatpak 包信息foremost
- 文件恢复fuser
- 文件使用进程gpg
- GPG 加密group
- 用户组信息gshadow
- 组密码hash
- 命令哈希hashsum
- 哈希值hciconfig
- 蓝牙配置head
- 文件头部hexdump
- 十六进制转储host
- DNS 查询hostid
- 主机 IDidm
- IDM 下载ifcfg
- 网络配置inxi
- 系统信息iostat
- I/O 统计ip-address
- IP 地址ip-route
- IP 路由ip6tables
- IPv6 防火墙iptables-save
- 防火墙规则保存iw
- 无线网络jar-manifest
- JAR 清单jobs-l
- 长格式作业jwt
- JWT 令牌kv
- 键值对lastlog
- 最后登录ldap
- LDAP 查询logrotate
- 日志轮转lsattr
- 文件属性lsb-release
- LSB 发布信息lsusb
- USB 设备lxc
- LXC 容器lxc-ls
- LXC 容器列表md5
- MD5 哈希mdadm
- RAID 管理mount-l
- 长格式挂载mpstat
- 处理器统计netplan
- 网络配置nmcli-device
- 网络设备nmcli-connection
- 网络连接nmap
- 网络扫描nsd-control
- NSD 控制ntpstat
- NTP 状态opkg
- OpenWrt 包管理os-prober
- 操作系统探测pandoc
- 文档转换parted
- 分区工具passwd-s
- 影子密码pci
- PCI 设备pgrep
- 进程查找pidstat
- 进程统计pkg
- FreeBSD 包管理pkg-info
- 包信息pkg-query
- 包查询plist
- 属性列表postconf
- Postfix 配置proc
- 进程信息proc-version
- 内核版本proc-cpuinfo
- CPU 信息proc-meminfo
- 内存信息proc-loadavg
- 系统负载proc-stat
- 系统统计proc-uptime
- 运行时间proc-version
- 版本信息proc-vmstat
- 虚拟内存统计proc-zoneinfo
- 内存区域信息pstree
- 进程树pwd
- 当前目录pwdx
- 进程工作目录quota
- 磁盘配额resolvectl
- 解析控制route-n
- 数字路由rpm-ql
- RPM 包文件列表rsync-s
- 同步统计samba-tool
- Samba 工具sar
- 系统活动报告sestatus
- SELinux 状态shadow
- 影子密码showmount
- NFS 挂载smbstatus
- Samba 状态snap
- Snap 包sockstat
- 套接字统计sshd
- SSH 守护进程stat-s
- 文件状态sysctl
- 内核参数systemctl-l
- 长格式服务systemctl-s
- 服务状态systemd-analyze
- 系统分析systemd-cgtop
- 控制组统计systemd-inhibit
- 系统抑制systemd-journal
- 系统日志systemd-path
- 系统路径systemd-resolve
- 系统解析systemd-run
- 系统运行systemd-socket
- 系统套接字systemd-tmpfiles
- 临时文件tail
- 文件尾部tc
- 流量控制timedatectl-s
- 时间状态top
- 进程监控top-b
- 批处理模式tune2fs
- 文件系统调整udevadm
- Udev 管理ufw
- 防火墙uname-a
- 完整系统信息update-alternatives
- 替代方案update-grub
- GRUB 更新update-rc.d
- 启动脚本upower
- 电源管理uptime-s
- 简短运行时间users
- 登录用户vmstat
- 虚拟内存统计w-s
- 简短用户信息w-w
- 完整用户信息wc-l
- 行数统计whoami
- 当前用户xrandr
- 显示设置yum
- YUM 包管理zpool
- ZFS 池zpool-iostat
- ZFS I/O 统计zpool-status
- ZFS 状态
示例
1. 解析 ifconfig 输出
1 | ifconfig | jc --ifconfig |
输出示例:
1 | [ |
2. 解析 ps 输出
1 | ps aux | jc --ps |
3. 解析 df 输出
1 | df -h | jc --df |
高级用法
1. 使用管道和 jq 处理输出
1 | ifconfig | jc --ifconfig | jq '.[].ipv4_addr' |
2. 保存输出到文件
1 | ifconfig | jc --ifconfig > network_info.json |
3. 使用多个解析器
1 | (ps aux; df -h) | jc --ps --df |
优势
- 结构化数据:将非结构化的命令行输出转换为结构化的 JSON 格式
- 易于处理:可以使用
jq
等工具进一步处理 JSON 数据 - 自动化友好:便于在脚本和自动化工具中使用
- 跨平台:支持多种操作系统
- 丰富的解析器:支持大量常用命令的解析
注意事项
- 某些命令的输出格式可能会因操作系统或版本不同而有所变化
- 建议在使用前测试解析器是否适用于您的特定环境
- 对于复杂的命令输出,可能需要使用特定的解析器选项
总结
jc
是一个强大的工具,它通过将命令行输出转换为 JSON 格式,大大简化了命令行输出的处理和分析工作。无论是用于系统监控、日志分析还是自动化脚本,jc
都能提供极大的便利。