Copy disabled (too large)
Download .txt
Showing preview only (102,507K chars total). Download the full file to get everything.
Repository: kellyjonbrazil/jc
Branch: master
Commit: 9fd13e698709
Files: 2877
Total size: 97.3 MB
Directory structure:
gitextract_6okyl16d/
├── .gitignore
├── CHANGELOG
├── CONTRIBUTING.md
├── EXAMPLES.md
├── LICENSE.md
├── MANIFEST.in
├── README-snap.md
├── README.md
├── build-completions.py
├── build-package.sh
├── completions/
│ ├── jc_bash_completion.sh
│ └── jc_zsh_completion.sh
├── doc2md.py
├── docgen.sh
├── docs/
│ ├── lib.md
│ ├── parsers/
│ │ ├── acpi.md
│ │ ├── airport.md
│ │ ├── airport_s.md
│ │ ├── amixer.md
│ │ ├── apt_cache_show.md
│ │ ├── apt_get_sqq.md
│ │ ├── arp.md
│ │ ├── asciitable.md
│ │ ├── asciitable_m.md
│ │ ├── blkid.md
│ │ ├── bluetoothctl.md
│ │ ├── cbt.md
│ │ ├── cef.md
│ │ ├── cef_s.md
│ │ ├── certbot.md
│ │ ├── chage.md
│ │ ├── cksum.md
│ │ ├── clf.md
│ │ ├── clf_s.md
│ │ ├── crontab.md
│ │ ├── crontab_u.md
│ │ ├── csv.md
│ │ ├── csv_s.md
│ │ ├── curl_head.md
│ │ ├── date.md
│ │ ├── datetime_iso.md
│ │ ├── debconf_show.md
│ │ ├── df.md
│ │ ├── dig.md
│ │ ├── dir.md
│ │ ├── dmidecode.md
│ │ ├── dpkg_l.md
│ │ ├── du.md
│ │ ├── efibootmgr.md
│ │ ├── email_address.md
│ │ ├── env.md
│ │ ├── ethtool.md
│ │ ├── file.md
│ │ ├── find.md
│ │ ├── findmnt.md
│ │ ├── finger.md
│ │ ├── free.md
│ │ ├── fstab.md
│ │ ├── git_log.md
│ │ ├── git_log_s.md
│ │ ├── git_ls_remote.md
│ │ ├── gpg.md
│ │ ├── group.md
│ │ ├── gshadow.md
│ │ ├── hash.md
│ │ ├── hashsum.md
│ │ ├── hciconfig.md
│ │ ├── history.md
│ │ ├── host.md
│ │ ├── hosts.md
│ │ ├── http_headers.md
│ │ ├── id.md
│ │ ├── ifconfig.md
│ │ ├── ini.md
│ │ ├── ini_dup.md
│ │ ├── iostat.md
│ │ ├── iostat_s.md
│ │ ├── ip_address.md
│ │ ├── ip_route.md
│ │ ├── ipconfig.md
│ │ ├── iptables.md
│ │ ├── iw_scan.md
│ │ ├── iwconfig.md
│ │ ├── jar_manifest.md
│ │ ├── jobs.md
│ │ ├── jwt.md
│ │ ├── kv.md
│ │ ├── kv_dup.md
│ │ ├── last.md
│ │ ├── ls.md
│ │ ├── ls_s.md
│ │ ├── lsattr.md
│ │ ├── lsb_release.md
│ │ ├── lsblk.md
│ │ ├── lsmod.md
│ │ ├── lsof.md
│ │ ├── lspci.md
│ │ ├── lsusb.md
│ │ ├── m3u.md
│ │ ├── mdadm.md
│ │ ├── mount.md
│ │ ├── mpstat.md
│ │ ├── mpstat_s.md
│ │ ├── needrestart.md
│ │ ├── net_localgroup.md
│ │ ├── net_user.md
│ │ ├── netstat.md
│ │ ├── nmcli.md
│ │ ├── nsd_control.md
│ │ ├── ntpq.md
│ │ ├── openvpn.md
│ │ ├── os_prober.md
│ │ ├── os_release.md
│ │ ├── pacman.md
│ │ ├── passwd.md
│ │ ├── path.md
│ │ ├── path_list.md
│ │ ├── pci_ids.md
│ │ ├── pgpass.md
│ │ ├── pidstat.md
│ │ ├── pidstat_s.md
│ │ ├── ping.md
│ │ ├── ping_s.md
│ │ ├── pip_list.md
│ │ ├── pip_show.md
│ │ ├── pkg_index_apk.md
│ │ ├── pkg_index_deb.md
│ │ ├── plist.md
│ │ ├── postconf.md
│ │ ├── proc.md
│ │ ├── proc_buddyinfo.md
│ │ ├── proc_cmdline.md
│ │ ├── proc_consoles.md
│ │ ├── proc_cpuinfo.md
│ │ ├── proc_crypto.md
│ │ ├── proc_devices.md
│ │ ├── proc_diskstats.md
│ │ ├── proc_driver_rtc.md
│ │ ├── proc_filesystems.md
│ │ ├── proc_interrupts.md
│ │ ├── proc_iomem.md
│ │ ├── proc_ioports.md
│ │ ├── proc_loadavg.md
│ │ ├── proc_locks.md
│ │ ├── proc_meminfo.md
│ │ ├── proc_modules.md
│ │ ├── proc_mtrr.md
│ │ ├── proc_net_arp.md
│ │ ├── proc_net_dev.md
│ │ ├── proc_net_dev_mcast.md
│ │ ├── proc_net_if_inet6.md
│ │ ├── proc_net_igmp.md
│ │ ├── proc_net_igmp6.md
│ │ ├── proc_net_ipv6_route.md
│ │ ├── proc_net_netlink.md
│ │ ├── proc_net_netstat.md
│ │ ├── proc_net_packet.md
│ │ ├── proc_net_protocols.md
│ │ ├── proc_net_route.md
│ │ ├── proc_net_tcp.md
│ │ ├── proc_net_unix.md
│ │ ├── proc_pagetypeinfo.md
│ │ ├── proc_partitions.md
│ │ ├── proc_pid_fdinfo.md
│ │ ├── proc_pid_io.md
│ │ ├── proc_pid_maps.md
│ │ ├── proc_pid_mountinfo.md
│ │ ├── proc_pid_numa_maps.md
│ │ ├── proc_pid_smaps.md
│ │ ├── proc_pid_stat.md
│ │ ├── proc_pid_statm.md
│ │ ├── proc_pid_status.md
│ │ ├── proc_slabinfo.md
│ │ ├── proc_softirqs.md
│ │ ├── proc_stat.md
│ │ ├── proc_swaps.md
│ │ ├── proc_uptime.md
│ │ ├── proc_version.md
│ │ ├── proc_vmallocinfo.md
│ │ ├── proc_vmstat.md
│ │ ├── proc_zoneinfo.md
│ │ ├── ps.md
│ │ ├── resolve_conf.md
│ │ ├── route.md
│ │ ├── route_print.md
│ │ ├── rpm_qi.md
│ │ ├── rsync.md
│ │ ├── rsync_s.md
│ │ ├── semver.md
│ │ ├── sfdisk.md
│ │ ├── shadow.md
│ │ ├── srt.md
│ │ ├── ss.md
│ │ ├── ssh_conf.md
│ │ ├── sshd_conf.md
│ │ ├── stat.md
│ │ ├── stat_s.md
│ │ ├── swapon.md
│ │ ├── sysctl.md
│ │ ├── syslog.md
│ │ ├── syslog_bsd.md
│ │ ├── syslog_bsd_s.md
│ │ ├── syslog_s.md
│ │ ├── systemctl.md
│ │ ├── systemctl_lj.md
│ │ ├── systemctl_ls.md
│ │ ├── systemctl_luf.md
│ │ ├── systeminfo.md
│ │ ├── time.md
│ │ ├── timedatectl.md
│ │ ├── timestamp.md
│ │ ├── toml.md
│ │ ├── top.md
│ │ ├── top_s.md
│ │ ├── tracepath.md
│ │ ├── traceroute.md
│ │ ├── traceroute_s.md
│ │ ├── tune2fs.md
│ │ ├── udevadm.md
│ │ ├── ufw.md
│ │ ├── ufw_appinfo.md
│ │ ├── uname.md
│ │ ├── universal.md
│ │ ├── update_alt_gs.md
│ │ ├── update_alt_q.md
│ │ ├── upower.md
│ │ ├── uptime.md
│ │ ├── url.md
│ │ ├── ver.md
│ │ ├── veracrypt.md
│ │ ├── vmstat.md
│ │ ├── vmstat_s.md
│ │ ├── w.md
│ │ ├── wc.md
│ │ ├── wg_show.md
│ │ ├── who.md
│ │ ├── x509_cert.md
│ │ ├── x509_crl.md
│ │ ├── x509_csr.md
│ │ ├── xml.md
│ │ ├── xrandr.md
│ │ ├── yaml.md
│ │ ├── zipinfo.md
│ │ ├── zpool_iostat.md
│ │ └── zpool_status.md
│ ├── readme.md
│ ├── streaming.md
│ └── utils.md
├── install.sh
├── jc/
│ ├── __init__.py
│ ├── __main__.py
│ ├── appdirs.py
│ ├── cli.py
│ ├── cli_data.py
│ ├── exceptions.py
│ ├── jc_types.py
│ ├── lib.py
│ ├── parsers/
│ │ ├── __init__.py
│ │ ├── acpi.py
│ │ ├── airport.py
│ │ ├── airport_s.py
│ │ ├── amixer.py
│ │ ├── apt_cache_show.py
│ │ ├── apt_get_sqq.py
│ │ ├── arp.py
│ │ ├── asciitable.py
│ │ ├── asciitable_m.py
│ │ ├── asn1crypto/
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ ├── _errors.py
│ │ │ ├── _inet.py
│ │ │ ├── _int.py
│ │ │ ├── _iri.py
│ │ │ ├── _ordereddict.py
│ │ │ ├── _teletex_codec.py
│ │ │ ├── _types.py
│ │ │ ├── algos.py
│ │ │ ├── cms.py
│ │ │ ├── core.py
│ │ │ ├── crl.py
│ │ │ ├── csr.py
│ │ │ ├── jc_global.py
│ │ │ ├── keys.py
│ │ │ ├── ocsp.py
│ │ │ ├── parser.py
│ │ │ ├── pdf.py
│ │ │ ├── pem.py
│ │ │ ├── pkcs12.py
│ │ │ ├── tsp.py
│ │ │ ├── util.py
│ │ │ ├── version.py
│ │ │ └── x509.py
│ │ ├── blkid.py
│ │ ├── bluetoothctl.py
│ │ ├── broken_parser.py
│ │ ├── cbt.py
│ │ ├── cef.py
│ │ ├── cef_s.py
│ │ ├── certbot.py
│ │ ├── chage.py
│ │ ├── cksum.py
│ │ ├── clf.py
│ │ ├── clf_s.py
│ │ ├── crontab.py
│ │ ├── crontab_u.py
│ │ ├── csv.py
│ │ ├── csv_s.py
│ │ ├── curl_head.py
│ │ ├── date.py
│ │ ├── datetime_iso.py
│ │ ├── debconf_show.py
│ │ ├── df.py
│ │ ├── dig.py
│ │ ├── dir.py
│ │ ├── disabled_parser.py
│ │ ├── dmidecode.py
│ │ ├── dpkg_l.py
│ │ ├── du.py
│ │ ├── efibootmgr.py
│ │ ├── email_address.py
│ │ ├── env.py
│ │ ├── ethtool.py
│ │ ├── file.py
│ │ ├── find.py
│ │ ├── findmnt.py
│ │ ├── finger.py
│ │ ├── foo.py
│ │ ├── foo_s.py
│ │ ├── free.py
│ │ ├── fstab.py
│ │ ├── git_log.py
│ │ ├── git_log_s.py
│ │ ├── git_ls_remote.py
│ │ ├── gpg.py
│ │ ├── group.py
│ │ ├── gshadow.py
│ │ ├── hash.py
│ │ ├── hashsum.py
│ │ ├── hciconfig.py
│ │ ├── history.py
│ │ ├── host.py
│ │ ├── hosts.py
│ │ ├── http_headers.py
│ │ ├── id.py
│ │ ├── ifconfig.py
│ │ ├── iftop.py
│ │ ├── ini.py
│ │ ├── ini_dup.py
│ │ ├── iostat.py
│ │ ├── iostat_s.py
│ │ ├── ip_address.py
│ │ ├── ip_route.py
│ │ ├── ipconfig.py
│ │ ├── iptables.py
│ │ ├── iw_scan.py
│ │ ├── iwconfig.py
│ │ ├── jar_manifest.py
│ │ ├── jobs.py
│ │ ├── jwt.py
│ │ ├── kv.py
│ │ ├── kv_dup.py
│ │ ├── last.py
│ │ ├── ls.py
│ │ ├── ls_s.py
│ │ ├── lsattr.py
│ │ ├── lsb_release.py
│ │ ├── lsblk.py
│ │ ├── lsmod.py
│ │ ├── lsof.py
│ │ ├── lspci.py
│ │ ├── lsusb.py
│ │ ├── m3u.py
│ │ ├── mdadm.py
│ │ ├── mount.py
│ │ ├── mpstat.py
│ │ ├── mpstat_s.py
│ │ ├── needrestart.py
│ │ ├── net_localgroup.py
│ │ ├── net_user.py
│ │ ├── netstat.py
│ │ ├── netstat_freebsd_osx.py
│ │ ├── netstat_linux.py
│ │ ├── netstat_windows.py
│ │ ├── nmcli.py
│ │ ├── nsd_control.py
│ │ ├── ntpq.py
│ │ ├── openvpn.py
│ │ ├── os_prober.py
│ │ ├── os_release.py
│ │ ├── pacman.py
│ │ ├── passwd.py
│ │ ├── path.py
│ │ ├── path_list.py
│ │ ├── pbPlist/
│ │ │ ├── StrParse.py
│ │ │ ├── Switch.py
│ │ │ ├── __init__.py
│ │ │ ├── pbItem.py
│ │ │ ├── pbParser.py
│ │ │ ├── pbPlist.py
│ │ │ ├── pbRoot.py
│ │ │ └── pbSerializer.py
│ │ ├── pci_ids.py
│ │ ├── pgpass.py
│ │ ├── pidstat.py
│ │ ├── pidstat_s.py
│ │ ├── ping.py
│ │ ├── ping_s.py
│ │ ├── pip_list.py
│ │ ├── pip_show.py
│ │ ├── pkg_index_apk.py
│ │ ├── pkg_index_deb.py
│ │ ├── plist.py
│ │ ├── postconf.py
│ │ ├── proc.py
│ │ ├── proc_buddyinfo.py
│ │ ├── proc_cmdline.py
│ │ ├── proc_consoles.py
│ │ ├── proc_cpuinfo.py
│ │ ├── proc_crypto.py
│ │ ├── proc_devices.py
│ │ ├── proc_diskstats.py
│ │ ├── proc_driver_rtc.py
│ │ ├── proc_filesystems.py
│ │ ├── proc_interrupts.py
│ │ ├── proc_iomem.py
│ │ ├── proc_ioports.py
│ │ ├── proc_loadavg.py
│ │ ├── proc_locks.py
│ │ ├── proc_meminfo.py
│ │ ├── proc_modules.py
│ │ ├── proc_mtrr.py
│ │ ├── proc_net_arp.py
│ │ ├── proc_net_dev.py
│ │ ├── proc_net_dev_mcast.py
│ │ ├── proc_net_if_inet6.py
│ │ ├── proc_net_igmp.py
│ │ ├── proc_net_igmp6.py
│ │ ├── proc_net_ipv6_route.py
│ │ ├── proc_net_netlink.py
│ │ ├── proc_net_netstat.py
│ │ ├── proc_net_packet.py
│ │ ├── proc_net_protocols.py
│ │ ├── proc_net_route.py
│ │ ├── proc_net_tcp.py
│ │ ├── proc_net_unix.py
│ │ ├── proc_pagetypeinfo.py
│ │ ├── proc_partitions.py
│ │ ├── proc_pid_fdinfo.py
│ │ ├── proc_pid_io.py
│ │ ├── proc_pid_maps.py
│ │ ├── proc_pid_mountinfo.py
│ │ ├── proc_pid_numa_maps.py
│ │ ├── proc_pid_smaps.py
│ │ ├── proc_pid_stat.py
│ │ ├── proc_pid_statm.py
│ │ ├── proc_pid_status.py
│ │ ├── proc_slabinfo.py
│ │ ├── proc_softirqs.py
│ │ ├── proc_stat.py
│ │ ├── proc_swaps.py
│ │ ├── proc_uptime.py
│ │ ├── proc_version.py
│ │ ├── proc_vmallocinfo.py
│ │ ├── proc_vmstat.py
│ │ ├── proc_zoneinfo.py
│ │ ├── ps.py
│ │ ├── pyedid/
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ ├── edid.py
│ │ │ ├── helpers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── edid_helper.py
│ │ │ │ └── registry.py
│ │ │ └── main.py
│ │ ├── resolve_conf.py
│ │ ├── route.py
│ │ ├── route_print.py
│ │ ├── route_windows.py
│ │ ├── rpm_qi.py
│ │ ├── rsync.py
│ │ ├── rsync_s.py
│ │ ├── semver.py
│ │ ├── sfdisk.py
│ │ ├── shadow.py
│ │ ├── srt.py
│ │ ├── ss.py
│ │ ├── ssh_conf.py
│ │ ├── sshd_conf.py
│ │ ├── stat.py
│ │ ├── stat_s.py
│ │ ├── swapon.py
│ │ ├── sysctl.py
│ │ ├── syslog.py
│ │ ├── syslog_bsd.py
│ │ ├── syslog_bsd_s.py
│ │ ├── syslog_s.py
│ │ ├── systemctl.py
│ │ ├── systemctl_lj.py
│ │ ├── systemctl_ls.py
│ │ ├── systemctl_luf.py
│ │ ├── systeminfo.py
│ │ ├── time.py
│ │ ├── timedatectl.py
│ │ ├── timestamp.py
│ │ ├── toml.py
│ │ ├── tomli/
│ │ │ ├── LICENSE
│ │ │ ├── __init__.py
│ │ │ ├── _parser.py
│ │ │ ├── _re.py
│ │ │ ├── _types.py
│ │ │ └── py.typed
│ │ ├── top.py
│ │ ├── top_s.py
│ │ ├── tracepath.py
│ │ ├── traceroute.py
│ │ ├── traceroute_s.py
│ │ ├── tune2fs.py
│ │ ├── udevadm.py
│ │ ├── ufw.py
│ │ ├── ufw_appinfo.py
│ │ ├── uname.py
│ │ ├── universal.py
│ │ ├── update_alt_gs.py
│ │ ├── update_alt_q.py
│ │ ├── upower.py
│ │ ├── uptime.py
│ │ ├── url.py
│ │ ├── ver.py
│ │ ├── veracrypt.py
│ │ ├── vmstat.py
│ │ ├── vmstat_s.py
│ │ ├── w.py
│ │ ├── wc.py
│ │ ├── wg_show.py
│ │ ├── who.py
│ │ ├── x509_cert.py
│ │ ├── x509_crl.py
│ │ ├── x509_csr.py
│ │ ├── xml.py
│ │ ├── xrandr.py
│ │ ├── yaml.py
│ │ ├── zipinfo.py
│ │ ├── zpool_iostat.py
│ │ └── zpool_status.py
│ ├── py.typed
│ ├── shell_completions.py
│ ├── streaming.py
│ ├── tracebackplus.py
│ └── utils.py
├── man/
│ └── jc.1
├── mangen.py
├── pypi-upload.sh
├── readmegen.py
├── requirements.txt
├── runtests-missing-libs.sh
├── runtests.sh
├── setup.cfg
├── setup.py
├── snap/
│ ├── local/
│ │ └── jc-launcher.sh
│ └── snapcraft.yaml
├── templates/
│ ├── manpage_template
│ └── readme_template
├── tests/
│ ├── __init__.py
│ ├── _vendor/
│ │ ├── __init__.py
│ │ ├── packaging/
│ │ │ ├── LICENSE.APACHE
│ │ │ ├── LICENSE.BSD
│ │ │ ├── __init__.py
│ │ │ ├── _structures.py
│ │ │ └── version.py
│ │ └── vendored.txt
│ ├── fixtures/
│ │ ├── aix-7.1/
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── mount.json
│ │ │ └── mount.out
│ │ ├── alpine-linux-3.13/
│ │ │ ├── ping-hostname.json
│ │ │ ├── ping-hostname.out
│ │ │ ├── ping-ip.json
│ │ │ └── ping-ip.out
│ │ ├── centos-7.7/
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── arp-v.json
│ │ │ ├── arp-v.out
│ │ │ ├── arp.json
│ │ │ ├── arp.out
│ │ │ ├── blkid-ip-multi.json
│ │ │ ├── blkid-ip-multi.out
│ │ │ ├── blkid-ip-udev-multi.json
│ │ │ ├── blkid-ip-udev-multi.out
│ │ │ ├── blkid-ip-udev.json
│ │ │ ├── blkid-ip-udev.out
│ │ │ ├── blkid-sda2.json
│ │ │ ├── blkid-sda2.out
│ │ │ ├── blkid.json
│ │ │ ├── blkid.out
│ │ │ ├── chage.json
│ │ │ ├── chage.out
│ │ │ ├── cksum.json
│ │ │ ├── cksum.out
│ │ │ ├── crontab-u.json
│ │ │ ├── crontab-u.out
│ │ │ ├── crontab.json
│ │ │ ├── crontab.out
│ │ │ ├── df-h.json
│ │ │ ├── df-h.out
│ │ │ ├── df.json
│ │ │ ├── df.out
│ │ │ ├── dig-aaaa.json
│ │ │ ├── dig-aaaa.out
│ │ │ ├── dig-axfr.json
│ │ │ ├── dig-axfr.out
│ │ │ ├── dig-x.json
│ │ │ ├── dig-x.out
│ │ │ ├── dig.json
│ │ │ ├── dig.out
│ │ │ ├── dmidecode.json
│ │ │ ├── dmidecode.out
│ │ │ ├── du.json
│ │ │ ├── du.out
│ │ │ ├── env.json
│ │ │ ├── env.out
│ │ │ ├── file.json
│ │ │ ├── file.out
│ │ │ ├── find.json
│ │ │ ├── find.out
│ │ │ ├── findmnt-a.json
│ │ │ ├── findmnt-a.out
│ │ │ ├── findmnt-l.json
│ │ │ ├── findmnt-l.out
│ │ │ ├── findmnt.json
│ │ │ ├── findmnt.out
│ │ │ ├── finger.json
│ │ │ ├── finger.out
│ │ │ ├── free-h.json
│ │ │ ├── free-h.out
│ │ │ ├── free-w.json
│ │ │ ├── free-w.out
│ │ │ ├── free.json
│ │ │ ├── free.out
│ │ │ ├── fstab.json
│ │ │ ├── fstab.out
│ │ │ ├── group.json
│ │ │ ├── group.out
│ │ │ ├── gshadow.json
│ │ │ ├── gshadow.out
│ │ │ ├── hash.json
│ │ │ ├── hash.out
│ │ │ ├── hciconfig-a.json
│ │ │ ├── hciconfig-a.out
│ │ │ ├── hciconfig.json
│ │ │ ├── hciconfig.out
│ │ │ ├── history.json
│ │ │ ├── history.out
│ │ │ ├── hosts.json
│ │ │ ├── hosts.out
│ │ │ ├── id.json
│ │ │ ├── id.out
│ │ │ ├── ifconfig.json
│ │ │ ├── ifconfig.out
│ │ │ ├── iostat-1-streaming.json
│ │ │ ├── iostat-1.json
│ │ │ ├── iostat-1.out
│ │ │ ├── iostat-m-streaming.json
│ │ │ ├── iostat-m.json
│ │ │ ├── iostat-m.out
│ │ │ ├── iostat-mx-streaming.json
│ │ │ ├── iostat-mx.json
│ │ │ ├── iostat-mx.out
│ │ │ ├── iostat-streaming.json
│ │ │ ├── iostat-x-streaming.json
│ │ │ ├── iostat-x.json
│ │ │ ├── iostat-x.out
│ │ │ ├── iostat.json
│ │ │ ├── iostat.out
│ │ │ ├── ip_route.json
│ │ │ ├── ip_route.out
│ │ │ ├── iptables-filter-line-numbers.json
│ │ │ ├── iptables-filter-line-numbers.out
│ │ │ ├── iptables-filter-nv.json
│ │ │ ├── iptables-filter-nv.out
│ │ │ ├── iptables-filter.json
│ │ │ ├── iptables-filter.out
│ │ │ ├── iptables-mangle.json
│ │ │ ├── iptables-mangle.out
│ │ │ ├── iptables-nat.json
│ │ │ ├── iptables-nat.out
│ │ │ ├── iptables-raw.json
│ │ │ ├── iptables-raw.out
│ │ │ ├── iw-scan0.json
│ │ │ ├── iw-scan0.out
│ │ │ ├── iw-scan1.json
│ │ │ ├── iw-scan1.out
│ │ │ ├── iw-scan2.json
│ │ │ ├── iw-scan2.out
│ │ │ ├── jobs.json
│ │ │ ├── jobs.out
│ │ │ ├── last-crash.json
│ │ │ ├── last-crash.out
│ │ │ ├── last-w.json
│ │ │ ├── last-w.out
│ │ │ ├── last-wF.json
│ │ │ ├── last-wF.out
│ │ │ ├── last-wixF.json
│ │ │ ├── last-wixF.out
│ │ │ ├── last.json
│ │ │ ├── last.out
│ │ │ ├── lastb.json
│ │ │ ├── lastb.out
│ │ │ ├── ls-R-newlines.json
│ │ │ ├── ls-R-newlines.out
│ │ │ ├── ls-R.json
│ │ │ ├── ls-R.out
│ │ │ ├── ls-al-streaming.json
│ │ │ ├── ls-al.json
│ │ │ ├── ls-al.out
│ │ │ ├── ls-alR-streaming.json
│ │ │ ├── ls-alR.json
│ │ │ ├── ls-alR.out
│ │ │ ├── ls-alh-streaming.json
│ │ │ ├── ls-alh.json
│ │ │ ├── ls-alh.out
│ │ │ ├── ls-glob.json
│ │ │ ├── ls-glob.out
│ │ │ ├── ls-l-newlines.json
│ │ │ ├── ls-l-newlines.out
│ │ │ ├── ls-lR-newlines.json
│ │ │ ├── ls-lR-newlines.out
│ │ │ ├── ls-newlines.json
│ │ │ ├── ls-newlines.out
│ │ │ ├── ls.json
│ │ │ ├── ls.out
│ │ │ ├── lsblk-allcols.json
│ │ │ ├── lsblk-allcols.out
│ │ │ ├── lsblk.json
│ │ │ ├── lsblk.out
│ │ │ ├── lsmod.json
│ │ │ ├── lsmod.out
│ │ │ ├── lsof-sudo.json
│ │ │ ├── lsof-sudo.out
│ │ │ ├── lsof.json
│ │ │ ├── lsof.out
│ │ │ ├── lsusb-v-single.json
│ │ │ ├── lsusb-v-single.out
│ │ │ ├── lsusb-v.json
│ │ │ ├── lsusb-v.out
│ │ │ ├── lsusb.json
│ │ │ ├── lsusb.out
│ │ │ ├── md5sum.json
│ │ │ ├── md5sum.out
│ │ │ ├── mount.json
│ │ │ ├── mount.out
│ │ │ ├── mpstat-A-2-5-streaming.json
│ │ │ ├── mpstat-A-2-5.json
│ │ │ ├── mpstat-A-2-5.out
│ │ │ ├── mpstat-A-streaming.json
│ │ │ ├── mpstat-A.json
│ │ │ ├── mpstat-A.out
│ │ │ ├── mpstat-streaming.json
│ │ │ ├── mpstat.json
│ │ │ ├── mpstat.out
│ │ │ ├── netstat-i.json
│ │ │ ├── netstat-i.out
│ │ │ ├── netstat-l.json
│ │ │ ├── netstat-l.out
│ │ │ ├── netstat-p.json
│ │ │ ├── netstat-p.out
│ │ │ ├── netstat-r.json
│ │ │ ├── netstat-r.out
│ │ │ ├── netstat-rne.json
│ │ │ ├── netstat-rne.out
│ │ │ ├── netstat-rnee.json
│ │ │ ├── netstat-rnee.out
│ │ │ ├── netstat-sudo-aeep.json
│ │ │ ├── netstat-sudo-aeep.out
│ │ │ ├── netstat-sudo-lnp.json
│ │ │ ├── netstat-sudo-lnp.out
│ │ │ ├── netstat.json
│ │ │ ├── netstat.out
│ │ │ ├── nmcli-connection-all.json
│ │ │ ├── nmcli-connection-all.out
│ │ │ ├── nmcli-connection-show-ens33.json
│ │ │ ├── nmcli-connection-show-ens33.out
│ │ │ ├── nmcli-connection.json
│ │ │ ├── nmcli-connection.out
│ │ │ ├── nmcli-device-all.json
│ │ │ ├── nmcli-device-all.out
│ │ │ ├── nmcli-device-show-ens33.json
│ │ │ ├── nmcli-device-show-ens33.out
│ │ │ ├── nmcli-device-show-lo.json
│ │ │ ├── nmcli-device-show-lo.out
│ │ │ ├── nmcli-device-show.json
│ │ │ ├── nmcli-device-show.out
│ │ │ ├── nmcli-device.json
│ │ │ ├── nmcli-device.out
│ │ │ ├── nmcli-general-all.json
│ │ │ ├── nmcli-general-all.out
│ │ │ ├── nmcli-general-permissions.json
│ │ │ ├── nmcli-general-permissions.out
│ │ │ ├── nmcli.out
│ │ │ ├── ntpq-p.json
│ │ │ ├── ntpq-p.out
│ │ │ ├── ntpq-pn.json
│ │ │ ├── ntpq-pn.out
│ │ │ ├── passwd.json
│ │ │ ├── passwd.out
│ │ │ ├── pidstat-hdlrsuw-2-5-streaming.json
│ │ │ ├── pidstat-hdlrsuw-2-5.json
│ │ │ ├── pidstat-hdlrsuw-2-5.out
│ │ │ ├── pidstat-hdlrsuw-streaming.json
│ │ │ ├── pidstat-hdlrsuw.json
│ │ │ ├── pidstat-hdlrsuw.out
│ │ │ ├── pidstat-hl-streaming.json
│ │ │ ├── pidstat-hl.json
│ │ │ ├── pidstat-hl.out
│ │ │ ├── pidstat.out
│ │ │ ├── ping-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping-hostname-O-D-p-s.json
│ │ │ ├── ping-hostname-O-D-p-s.out
│ │ │ ├── ping-hostname-O-p-streaming.json
│ │ │ ├── ping-hostname-O-p.json
│ │ │ ├── ping-hostname-O-p.out
│ │ │ ├── ping-hostname-O-streaming.json
│ │ │ ├── ping-hostname-O.json
│ │ │ ├── ping-hostname-O.out
│ │ │ ├── ping-ip-O-D-streaming.json
│ │ │ ├── ping-ip-O-D.json
│ │ │ ├── ping-ip-O-D.out
│ │ │ ├── ping-ip-O-streaming-ignore-exceptions.json
│ │ │ ├── ping-ip-O-streaming.json
│ │ │ ├── ping-ip-O-unparsedlines.json
│ │ │ ├── ping-ip-O-unparsedlines.out
│ │ │ ├── ping-ip-O.json
│ │ │ ├── ping-ip-O.out
│ │ │ ├── ping-ip-dup-streaming.json
│ │ │ ├── ping-ip-dup.json
│ │ │ ├── ping-ip-dup.out
│ │ │ ├── ping-missing-hostname-streaming.json
│ │ │ ├── ping-missing-hostname.json
│ │ │ ├── ping-missing-hostname.out
│ │ │ ├── ping6-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping6-hostname-O-D-p-s.json
│ │ │ ├── ping6-hostname-O-D-p-s.out
│ │ │ ├── ping6-hostname-O-p-streaming.json
│ │ │ ├── ping6-hostname-O-p.json
│ │ │ ├── ping6-hostname-O-p.out
│ │ │ ├── ping6-ip-O-D-p-streaming.json
│ │ │ ├── ping6-ip-O-D-p.json
│ │ │ ├── ping6-ip-O-D-p.out
│ │ │ ├── ping6-ip-O-p-streaming.json
│ │ │ ├── ping6-ip-O-p-unparsable.json
│ │ │ ├── ping6-ip-O-p-unparsable.out
│ │ │ ├── ping6-ip-O-p.json
│ │ │ ├── ping6-ip-O-p.out
│ │ │ ├── ping6-ip-dup-streaming.json
│ │ │ ├── ping6-ip-dup.json
│ │ │ ├── ping6-ip-dup.out
│ │ │ ├── pip-list.json
│ │ │ ├── pip-list.out
│ │ │ ├── pip-show.json
│ │ │ ├── pip-show.out
│ │ │ ├── ps-axu.json
│ │ │ ├── ps-axu.out
│ │ │ ├── ps-ef.json
│ │ │ ├── ps-ef.out
│ │ │ ├── route-6-n.json
│ │ │ ├── route-6-n.out
│ │ │ ├── route-6.json
│ │ │ ├── route-6.out
│ │ │ ├── route-vn.json
│ │ │ ├── route-vn.out
│ │ │ ├── route.json
│ │ │ ├── route.out
│ │ │ ├── rpm-qai.json
│ │ │ ├── rpm-qai.out
│ │ │ ├── rpm-qi-package.json
│ │ │ ├── rpm-qi-package.out
│ │ │ ├── rsync-i-logfile-streaming.json
│ │ │ ├── rsync-i-logfile.json
│ │ │ ├── rsync-i-logfile.out
│ │ │ ├── rsync-i-streaming.json
│ │ │ ├── rsync-i-v-logfile-streaming.json
│ │ │ ├── rsync-i-v-logfile.json
│ │ │ ├── rsync-i-v-logfile.out
│ │ │ ├── rsync-i-vv-logfile-streaming.json
│ │ │ ├── rsync-i-vv-logfile.json
│ │ │ ├── rsync-i-vv-logfile.out
│ │ │ ├── rsync-i-vvv-logfile-nochange-streaming.json
│ │ │ ├── rsync-i-vvv-logfile-nochange.json
│ │ │ ├── rsync-i-vvv-logfile-nochange.out
│ │ │ ├── rsync-i-vvv-logfile-streaming.json
│ │ │ ├── rsync-i-vvv-logfile.json
│ │ │ ├── rsync-i-vvv-logfile.out
│ │ │ ├── rsync-i.json
│ │ │ ├── rsync-i.out
│ │ │ ├── rsync-ivvv-nochange-streaming.json
│ │ │ ├── rsync-ivvv-nochange.json
│ │ │ ├── rsync-ivvv-nochange.out
│ │ │ ├── rsync-ivvv-streaming.json
│ │ │ ├── rsync-ivvv.json
│ │ │ ├── rsync-ivvv.out
│ │ │ ├── sfdisk-d-multi.json
│ │ │ ├── sfdisk-d-multi.out
│ │ │ ├── sfdisk-d.json
│ │ │ ├── sfdisk-d.out
│ │ │ ├── sfdisk-l-multi.json
│ │ │ ├── sfdisk-l-multi.out
│ │ │ ├── sfdisk-l.json
│ │ │ ├── sfdisk-l.out
│ │ │ ├── sfdisk-luB.json
│ │ │ ├── sfdisk-luB.out
│ │ │ ├── sfdisk-luM.json
│ │ │ ├── sfdisk-luM.out
│ │ │ ├── sfdisk-luS.json
│ │ │ ├── sfdisk-luS.out
│ │ │ ├── sha256sum.json
│ │ │ ├── sha256sum.out
│ │ │ ├── sha384sum.json
│ │ │ ├── sha384sum.out
│ │ │ ├── shadow.json
│ │ │ ├── shadow.out
│ │ │ ├── ss-sudo-a.json
│ │ │ ├── ss-sudo-a.out
│ │ │ ├── stat-streaming.json
│ │ │ ├── stat.json
│ │ │ ├── stat.out
│ │ │ ├── sum.json
│ │ │ ├── sum.out
│ │ │ ├── sysctl-a.json
│ │ │ ├── sysctl-a.out
│ │ │ ├── systemctl-ls.json
│ │ │ ├── systemctl-ls.out
│ │ │ ├── systemctl-luf.json
│ │ │ ├── systemctl-luf.out
│ │ │ ├── systemctl.json
│ │ │ ├── systemctl.out
│ │ │ ├── timedatectl.json
│ │ │ ├── timedatectl.out
│ │ │ ├── top-b-n1-gib-allfields-w-streaming.json
│ │ │ ├── top-b-n1-gib-allfields-w.json
│ │ │ ├── top-b-n1-gib-allfields-w.out
│ │ │ ├── top-b-n1-gib-streaming.json
│ │ │ ├── top-b-n1-gib.json
│ │ │ ├── top-b-n1-gib.out
│ │ │ ├── top-b-n3-streaming.json
│ │ │ ├── top-b-n3.json
│ │ │ ├── top-b-n3.out
│ │ │ ├── tracepath.json
│ │ │ ├── tracepath.out
│ │ │ ├── tracepath6.json
│ │ │ ├── tracepath6.out
│ │ │ ├── traceroute-streaming.json
│ │ │ ├── traceroute.json
│ │ │ ├── traceroute.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── uname.out
│ │ │ ├── uptime.json
│ │ │ ├── uptime.out
│ │ │ ├── vmstat-a-streaming.json
│ │ │ ├── vmstat-a.json
│ │ │ ├── vmstat-a.out
│ │ │ ├── vmstat-at-5-10-streaming.json
│ │ │ ├── vmstat-at-5-10.json
│ │ │ ├── vmstat-at-5-10.out
│ │ │ ├── vmstat-awt-streaming.json
│ │ │ ├── vmstat-awt.json
│ │ │ ├── vmstat-awt.out
│ │ │ ├── vmstat-d-streaming.json
│ │ │ ├── vmstat-d.json
│ │ │ ├── vmstat-d.out
│ │ │ ├── vmstat-dt-streaming.json
│ │ │ ├── vmstat-dt.json
│ │ │ ├── vmstat-dt.out
│ │ │ ├── vmstat-streaming.json
│ │ │ ├── vmstat-w-streaming.json
│ │ │ ├── vmstat-w.json
│ │ │ ├── vmstat-w.out
│ │ │ ├── vmstat.json
│ │ │ ├── vmstat.out
│ │ │ ├── w.json
│ │ │ ├── w.out
│ │ │ ├── wc.json
│ │ │ ├── wc.out
│ │ │ ├── who-a.json
│ │ │ ├── who-a.out
│ │ │ ├── who.json
│ │ │ └── who.out
│ │ ├── centos-8/
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── sfdisk-F.json
│ │ │ ├── sfdisk-F.out
│ │ │ ├── sfdisk-l.json
│ │ │ └── sfdisk-l.out
│ │ ├── create_fixtures.sh
│ │ ├── debian10/
│ │ │ ├── crontab-u.json
│ │ │ ├── crontab-u.out
│ │ │ ├── sfdisk-F.json
│ │ │ ├── sfdisk-F.out
│ │ │ ├── sfdisk-F2.json
│ │ │ ├── sfdisk-F2.out
│ │ │ ├── sfdisk-l.json
│ │ │ ├── sfdisk-l.out
│ │ │ ├── sfdisk-l2.json
│ │ │ ├── sfdisk-l2.out
│ │ │ ├── sfdisk-l3.json
│ │ │ ├── sfdisk-l3.out
│ │ │ ├── uname-a.json
│ │ │ └── uname-a.out
│ │ ├── debian13/
│ │ │ ├── who.json
│ │ │ └── who.out
│ │ ├── fedora32/
│ │ │ ├── dmidecode.json
│ │ │ ├── dmidecode.out
│ │ │ ├── last.json
│ │ │ ├── last.out
│ │ │ ├── netstat.json
│ │ │ ├── netstat.out
│ │ │ ├── nmcli-connection-show-ens33.json
│ │ │ ├── nmcli-connection-show-ens33.out
│ │ │ ├── nmcli-device-show-ens33.json
│ │ │ ├── nmcli-device-show-ens33.out
│ │ │ ├── nmcli-device-show.json
│ │ │ ├── nmcli-device-show.out
│ │ │ ├── ping-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping-hostname-O-D-p-s.json
│ │ │ ├── ping-hostname-O-D-p-s.out
│ │ │ ├── ping-hostname-O-p-streaming.json
│ │ │ ├── ping-hostname-O-p.json
│ │ │ ├── ping-hostname-O-p.out
│ │ │ ├── ping-hostname-O-streaming.json
│ │ │ ├── ping-hostname-O.json
│ │ │ ├── ping-hostname-O.out
│ │ │ ├── ping-ip-O-D-streaming.json
│ │ │ ├── ping-ip-O-D.json
│ │ │ ├── ping-ip-O-D.out
│ │ │ ├── ping-ip-O-streaming.json
│ │ │ ├── ping-ip-O.json
│ │ │ ├── ping-ip-O.out
│ │ │ ├── ping6-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping6-hostname-O-D-p-s.json
│ │ │ ├── ping6-hostname-O-D-p-s.out
│ │ │ ├── ping6-hostname-O-D-p.json
│ │ │ ├── ping6-hostname-O-D-p.out
│ │ │ ├── ping6-hostname-O-p-streaming.json
│ │ │ ├── ping6-hostname-O-p.json
│ │ │ ├── ping6-hostname-O-p.out
│ │ │ ├── ping6-ip-O-D-p-streaming.json
│ │ │ ├── ping6-ip-O-D-p.json
│ │ │ ├── ping6-ip-O-D-p.out
│ │ │ ├── ping6-ip-O-p-streaming.json
│ │ │ ├── ping6-ip-O-p.json
│ │ │ └── ping6-ip-O-p.out
│ │ ├── freebsd12/
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── ifconfig-extra-fields.json
│ │ │ ├── ifconfig-extra-fields.out
│ │ │ ├── ifconfig-extra-fields2.json
│ │ │ ├── ifconfig-extra-fields2.out
│ │ │ ├── ifconfig-extra-fields3.json
│ │ │ ├── ifconfig-extra-fields3.out
│ │ │ ├── ifconfig-extra-fields4.json
│ │ │ ├── ifconfig-extra-fields4.out
│ │ │ ├── last.json
│ │ │ ├── last.out
│ │ │ ├── netstat-Aa.json
│ │ │ ├── netstat-Aa.out
│ │ │ ├── netstat-AaT.json
│ │ │ ├── netstat-AaT.out
│ │ │ ├── netstat-AanP.json
│ │ │ ├── netstat-AanP.out
│ │ │ ├── netstat-Aax.json
│ │ │ ├── netstat-Aax.out
│ │ │ ├── netstat-aT.json
│ │ │ ├── netstat-aT.out
│ │ │ ├── netstat-an.json
│ │ │ ├── netstat-an.out
│ │ │ ├── netstat-i.json
│ │ │ ├── netstat-i.out
│ │ │ ├── netstat-ib.json
│ │ │ ├── netstat-ib.out
│ │ │ ├── netstat-r.json
│ │ │ ├── netstat-r.out
│ │ │ ├── ntpq-p.json
│ │ │ ├── ntpq-p.out
│ │ │ ├── ping-hostname-p-streaming.json
│ │ │ ├── ping-hostname-p.json
│ │ │ ├── ping-hostname-p.out
│ │ │ ├── ping-hostname-s-streaming.json
│ │ │ ├── ping-hostname-s.json
│ │ │ ├── ping-hostname-s.out
│ │ │ ├── ping-hostname-streaming.json
│ │ │ ├── ping-hostname.json
│ │ │ ├── ping-hostname.out
│ │ │ ├── ping-ip-p-streaming.json
│ │ │ ├── ping-ip-p.json
│ │ │ ├── ping-ip-p.out
│ │ │ ├── ping-ip-s-streaming.json
│ │ │ ├── ping-ip-s.json
│ │ │ ├── ping-ip-s.out
│ │ │ ├── ping-ip-streaming.json
│ │ │ ├── ping-ip.json
│ │ │ ├── ping-ip.out
│ │ │ ├── ping6-hostname-p-streaming.json
│ │ │ ├── ping6-hostname-p.json
│ │ │ ├── ping6-hostname-p.out
│ │ │ ├── ping6-hostname-s-streaming.json
│ │ │ ├── ping6-hostname-s.json
│ │ │ ├── ping6-hostname-s.out
│ │ │ ├── ping6-hostname-streaming.json
│ │ │ ├── ping6-hostname.json
│ │ │ ├── ping6-hostname.out
│ │ │ ├── ping6-ip-p-streaming.json
│ │ │ ├── ping6-ip-p.json
│ │ │ ├── ping6-ip-p.out
│ │ │ ├── ping6-ip-s-streaming.json
│ │ │ ├── ping6-ip-s.json
│ │ │ ├── ping6-ip-s.out
│ │ │ ├── ping6-ip-streaming.json
│ │ │ ├── ping6-ip.json
│ │ │ ├── ping6-ip.out
│ │ │ ├── stat-streaming.json
│ │ │ ├── stat.json
│ │ │ ├── stat.out
│ │ │ ├── sysctl-a.json
│ │ │ ├── sysctl-a.out
│ │ │ ├── traceroute-streaming.json
│ │ │ ├── traceroute.json
│ │ │ ├── traceroute.out
│ │ │ ├── traceroute6-streaming.json
│ │ │ ├── traceroute6.json
│ │ │ ├── traceroute6.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── uname-a2.json
│ │ │ └── uname-a2.out
│ │ ├── generic/
│ │ │ ├── acpi-V-never-fully-discharge.json
│ │ │ ├── acpi-V-never-fully-discharge.out
│ │ │ ├── acpi-V.json
│ │ │ ├── acpi-V.out
│ │ │ ├── acpi-V2.json
│ │ │ ├── acpi-V2.out
│ │ │ ├── acpi-V3.json
│ │ │ ├── acpi-V3.out
│ │ │ ├── acpi-V4.json
│ │ │ ├── acpi-V4.out
│ │ │ ├── acpi-not-charging.json
│ │ │ ├── acpi-not-charging.out
│ │ │ ├── apt_cache_show--standard.json
│ │ │ ├── apt_cache_show--standard.out
│ │ │ ├── apt_get_sqq--sample.json
│ │ │ ├── apt_get_sqq--sample.out
│ │ │ ├── bluetoothctl_controller.out
│ │ │ ├── bluetoothctl_controller_2.out
│ │ │ ├── bluetoothctl_controller_with_manufacturer.out
│ │ │ ├── bluetoothctl_device.out
│ │ │ ├── bluetoothctl_device_random.out
│ │ │ ├── bluetoothctl_device_with_battery.out
│ │ │ ├── cbt-multiple-columns.json
│ │ │ ├── cbt-multiple-columns.out
│ │ │ ├── cbt-multiple-rows-raw.json
│ │ │ ├── cbt-multiple-rows.json
│ │ │ ├── cbt-multiple-rows.out
│ │ │ ├── cbt-single.json
│ │ │ ├── cbt-single.out
│ │ │ ├── cef-streaming.json
│ │ │ ├── cef.json
│ │ │ ├── cef.out
│ │ │ ├── certbot-account.json
│ │ │ ├── certbot-account.out
│ │ │ ├── certbot-certs.json
│ │ │ ├── certbot-certs.out
│ │ │ ├── common-log-format-streaming.json
│ │ │ ├── common-log-format.json
│ │ │ ├── common-log-format.log
│ │ │ ├── crontab-no-normal-entries.json
│ │ │ ├── crontab-no-normal-entries.out
│ │ │ ├── crontab-u-no-normal-entries.json
│ │ │ ├── crontab-u-no-normal-entries.out
│ │ │ ├── crontab-u-var-fix.json
│ │ │ ├── crontab-u-var-fix.out
│ │ │ ├── crontab-var-fix.json
│ │ │ ├── crontab-var-fix.out
│ │ │ ├── csv-10k-sales-records-streaming.json
│ │ │ ├── csv-10k-sales-records.csv
│ │ │ ├── csv-biostats-streaming.json
│ │ │ ├── csv-biostats.csv
│ │ │ ├── csv-biostats.json
│ │ │ ├── csv-cities-streaming.json
│ │ │ ├── csv-cities.csv
│ │ │ ├── csv-cities.json
│ │ │ ├── csv-deniro-streaming.json
│ │ │ ├── csv-deniro.csv
│ │ │ ├── csv-deniro.json
│ │ │ ├── csv-doublequoted-streaming.json
│ │ │ ├── csv-doublequoted.csv
│ │ │ ├── csv-doublequoted.json
│ │ │ ├── csv-example-streaming.json
│ │ │ ├── csv-example.csv
│ │ │ ├── csv-example.json
│ │ │ ├── csv-flyrna-streaming.json
│ │ │ ├── csv-flyrna.json
│ │ │ ├── csv-flyrna.tsv
│ │ │ ├── csv-flyrna2-streaming.json
│ │ │ ├── csv-flyrna2.json
│ │ │ ├── csv-flyrna2.tsv
│ │ │ ├── csv-homes-pipe-streaming.json
│ │ │ ├── csv-homes-pipe.csv
│ │ │ ├── csv-homes-pipe.json
│ │ │ ├── csv-homes-streaming.json
│ │ │ ├── csv-homes.csv
│ │ │ ├── csv-homes.json
│ │ │ ├── csv-insurance.csv
│ │ │ ├── csv-insurance.json
│ │ │ ├── csv-utf-8-bom-streaming.json
│ │ │ ├── csv-utf-8-bom.csv
│ │ │ ├── csv-utf-8-bom.json
│ │ │ ├── curl_head--ILvs-cnn-com.json
│ │ │ ├── curl_head--ILvs-cnn-com.out
│ │ │ ├── curl_head--ILvs-example-com.json
│ │ │ ├── curl_head--ILvs-example-com.out
│ │ │ ├── curl_head--ILvs-facebook-com.json
│ │ │ ├── curl_head--ILvs-facebook-com.out
│ │ │ ├── curl_head--ILvs-google-com.json
│ │ │ ├── curl_head--ILvs-google-com.out
│ │ │ ├── curl_head--ILvs-microsoft-com.json
│ │ │ ├── curl_head--ILvs-microsoft-com.out
│ │ │ ├── curl_head--ILvs-yahoo-com.json
│ │ │ ├── curl_head--ILvs-yahoo-com.out
│ │ │ ├── date-after-midnight.json
│ │ │ ├── date-after-midnight.out
│ │ │ ├── date-before-midnight.json
│ │ │ ├── date-before-midnight.out
│ │ │ ├── date.json
│ │ │ ├── date.out
│ │ │ ├── debconf-show.json
│ │ │ ├── debconf-show.out
│ │ │ ├── df-long-filesystem.json
│ │ │ ├── df-long-filesystem.out
│ │ │ ├── dig-additional.json
│ │ │ ├── dig-additional.out
│ │ │ ├── dig-additional2.json
│ │ │ ├── dig-additional2.out
│ │ │ ├── dig-additional3.json
│ │ │ ├── dig-additional3.out
│ │ │ ├── dig-answer-spaces.json
│ │ │ ├── dig-answer-spaces.out
│ │ │ ├── dig-edns.json
│ │ │ ├── dig-edns.out
│ │ │ ├── dig-edns2.json
│ │ │ ├── dig-edns2.out
│ │ │ ├── dig-edns3.json
│ │ │ ├── dig-edns3.out
│ │ │ ├── dig-nsid.json
│ │ │ ├── dig-nsid.out
│ │ │ ├── env-multiline-raw.json
│ │ │ ├── env-multiline.json
│ │ │ ├── env-multiline.out
│ │ │ ├── ethtool--default1.json
│ │ │ ├── ethtool--default1.out
│ │ │ ├── ethtool--default2.json
│ │ │ ├── ethtool--default2.out
│ │ │ ├── ethtool--link-partner-advertised-link-modes.json
│ │ │ ├── ethtool--link-partner-advertised-link-modes.out
│ │ │ ├── ethtool--module-info-convert-units.json
│ │ │ ├── ethtool--module-info-convert-units.out
│ │ │ ├── ethtool--module-info.json
│ │ │ ├── ethtool--module-info.out
│ │ │ ├── git-log-blank-author-fix-streaming.json
│ │ │ ├── git-log-blank-author-fix.json
│ │ │ ├── git-log-blank-author-fix.out
│ │ │ ├── git-log-full-shortstat-streaming.json
│ │ │ ├── git-log-full-shortstat.json
│ │ │ ├── git-log-full-shortstat.out
│ │ │ ├── git-log-full-stat-streaming.json
│ │ │ ├── git-log-full-stat.json
│ │ │ ├── git-log-full-stat.out
│ │ │ ├── git-log-full-streaming.json
│ │ │ ├── git-log-full.json
│ │ │ ├── git-log-full.out
│ │ │ ├── git-log-fuller-shortstat-streaming.json
│ │ │ ├── git-log-fuller-shortstat.json
│ │ │ ├── git-log-fuller-shortstat.out
│ │ │ ├── git-log-fuller-stat-streaming.json
│ │ │ ├── git-log-fuller-stat.json
│ │ │ ├── git-log-fuller-stat.out
│ │ │ ├── git-log-fuller-streaming.json
│ │ │ ├── git-log-fuller.json
│ │ │ ├── git-log-fuller.out
│ │ │ ├── git-log-hash-in-message-fix-streaming.json
│ │ │ ├── git-log-hash-in-message-fix.json
│ │ │ ├── git-log-hash-in-message-fix.out
│ │ │ ├── git-log-is-hash-regex-fix-streaming.json
│ │ │ ├── git-log-is-hash-regex-fix.json
│ │ │ ├── git-log-is-hash-regex-fix.out
│ │ │ ├── git-log-medium-shortstat-streaming.json
│ │ │ ├── git-log-medium-shortstat.json
│ │ │ ├── git-log-medium-shortstat.out
│ │ │ ├── git-log-medium-stat-streaming.json
│ │ │ ├── git-log-medium-stat.json
│ │ │ ├── git-log-medium-stat.out
│ │ │ ├── git-log-medium-streaming.json
│ │ │ ├── git-log-medium.json
│ │ │ ├── git-log-medium.out
│ │ │ ├── git-log-oneline-shortstat-streaming.json
│ │ │ ├── git-log-oneline-shortstat.json
│ │ │ ├── git-log-oneline-shortstat.out
│ │ │ ├── git-log-oneline-stat-streaming.json
│ │ │ ├── git-log-oneline-stat.json
│ │ │ ├── git-log-oneline-stat.out
│ │ │ ├── git-log-oneline-streaming.json
│ │ │ ├── git-log-oneline.json
│ │ │ ├── git-log-oneline.out
│ │ │ ├── git-log-short-shortstat-streaming.json
│ │ │ ├── git-log-short-shortstat.json
│ │ │ ├── git-log-short-shortstat.out
│ │ │ ├── git-log-short-stat-streaming.json
│ │ │ ├── git-log-short-stat.json
│ │ │ ├── git-log-short-stat.out
│ │ │ ├── git-log-short-streaming.json
│ │ │ ├── git-log-short.json
│ │ │ ├── git-log-short.out
│ │ │ ├── git-log-streaming-ignore-exceptions.json
│ │ │ ├── git-log-streaming.json
│ │ │ ├── git-log.json
│ │ │ ├── git-log.out
│ │ │ ├── git-ls-remote-raw.json
│ │ │ ├── git-ls-remote.json
│ │ │ ├── git-ls-remote.out
│ │ │ ├── gpg.json
│ │ │ ├── gpg.out
│ │ │ ├── host-google.json
│ │ │ ├── host-google.out
│ │ │ ├── host-sunet.json
│ │ │ ├── host-sunet.out
│ │ │ ├── http_headers--example-com.json
│ │ │ ├── http_headers--example-com.out
│ │ │ ├── http_headers--google-com.json
│ │ │ ├── http_headers--google-com.out
│ │ │ ├── ini-double-quote.ini
│ │ │ ├── ini-double-quote.json
│ │ │ ├── ini-dup-double-quote.json
│ │ │ ├── ini-dup-iptelserver.json
│ │ │ ├── ini-dup-mariadb.json
│ │ │ ├── ini-dup-single-quote.json
│ │ │ ├── ini-dup-test.json
│ │ │ ├── ini-iptelserver.ini
│ │ │ ├── ini-iptelserver.json
│ │ │ ├── ini-mariadb.ini
│ │ │ ├── ini-mariadb.json
│ │ │ ├── ini-single-quote.ini
│ │ │ ├── ini-single-quote.json
│ │ │ ├── ini-test.ini
│ │ │ ├── ini-test.json
│ │ │ ├── iptables-no-jump.json
│ │ │ ├── iptables-no-jump.out
│ │ │ ├── iwconfig-many.json
│ │ │ ├── iwconfig-many.out
│ │ │ ├── iwconfig-raw.json
│ │ │ ├── iwconfig-space-dash-ssid.json
│ │ │ ├── iwconfig-space-dash-ssid.out
│ │ │ ├── iwconfig.json
│ │ │ ├── iwconfig.out
│ │ │ ├── keyvalue-ifcfg.json
│ │ │ ├── keyvalue-ifcfg.txt
│ │ │ ├── keyvalue.json
│ │ │ ├── keyvalue.txt
│ │ │ ├── lsb_release-a.json
│ │ │ ├── lsb_release-a.out
│ │ │ ├── lsusb-binary-object-store.json
│ │ │ ├── lsusb-binary-object-store.out
│ │ │ ├── lsusb-cdc-mbim.json
│ │ │ ├── lsusb-cdc-mbim.out
│ │ │ ├── lsusb-device-qualifier.json
│ │ │ ├── lsusb-device-qualifier.out
│ │ │ ├── lsusb-extra-hub-port-status-info.json
│ │ │ ├── lsusb-extra-hub-port-status-info.out
│ │ │ ├── lsusb-t.out
│ │ │ ├── lsusb-test-attributes.json
│ │ │ ├── lsusb-test-attributes.out
│ │ │ ├── lsusb-test-attributes2.json
│ │ │ ├── lsusb-test-attributes2.out
│ │ │ ├── m3u-dirty.json
│ │ │ ├── m3u-dirty.m3u
│ │ │ ├── m3u-example.json
│ │ │ ├── m3u-example.m3u
│ │ │ ├── mdadm-examine-container1.json
│ │ │ ├── mdadm-examine-container1.out
│ │ │ ├── mdadm-examine-container2-dev1.json
│ │ │ ├── mdadm-examine-container2-dev1.out
│ │ │ ├── mdadm-examine-container2-dev2.json
│ │ │ ├── mdadm-examine-container2-dev2.out
│ │ │ ├── mdadm-examine-raid0-offline.json
│ │ │ ├── mdadm-examine-raid0-offline.out
│ │ │ ├── mdadm-examine-raid0-ok.json
│ │ │ ├── mdadm-examine-raid0-ok.out
│ │ │ ├── mdadm-examine-raid1-0-90-ok.json
│ │ │ ├── mdadm-examine-raid1-0-90-ok.out
│ │ │ ├── mdadm-examine-raid1-checking.json
│ │ │ ├── mdadm-examine-raid1-checking.out
│ │ │ ├── mdadm-examine-raid1-failfast.json
│ │ │ ├── mdadm-examine-raid1-failfast.out
│ │ │ ├── mdadm-examine-raid1-faulty1.json
│ │ │ ├── mdadm-examine-raid1-faulty1.out
│ │ │ ├── mdadm-examine-raid1-faulty2.json
│ │ │ ├── mdadm-examine-raid1-faulty2.out
│ │ │ ├── mdadm-examine-raid1-moreflags.json
│ │ │ ├── mdadm-examine-raid1-moreflags.out
│ │ │ ├── mdadm-examine-raid1-ok.json
│ │ │ ├── mdadm-examine-raid1-ok.out
│ │ │ ├── mdadm-examine-raid1-replacing.json
│ │ │ ├── mdadm-examine-raid1-replacing.out
│ │ │ ├── mdadm-examine-raid1-resync.json
│ │ │ ├── mdadm-examine-raid1-resync.out
│ │ │ ├── mdadm-examine-raid1-spare.json
│ │ │ ├── mdadm-examine-raid1-spare.out
│ │ │ ├── mdadm-examine-raid1-syncing.json
│ │ │ ├── mdadm-examine-raid1-syncing.out
│ │ │ ├── mdadm-examine-raid5-homehost.json
│ │ │ ├── mdadm-examine-raid5-homehost.out
│ │ │ ├── mdadm-examine-raid5-meta09.json
│ │ │ ├── mdadm-examine-raid5-meta09.out
│ │ │ ├── mdadm-examine-raid5-ok.json
│ │ │ ├── mdadm-examine-raid5-ok.out
│ │ │ ├── mdadm-examine.json
│ │ │ ├── mdadm-examine.out
│ │ │ ├── mdadm-query-container1-member.json
│ │ │ ├── mdadm-query-container1-member.out
│ │ │ ├── mdadm-query-container1-root.json
│ │ │ ├── mdadm-query-container1-root.out
│ │ │ ├── mdadm-query-container2-member.json
│ │ │ ├── mdadm-query-container2-member.out
│ │ │ ├── mdadm-query-container2-root.json
│ │ │ ├── mdadm-query-container2-root.out
│ │ │ ├── mdadm-query-detail.json
│ │ │ ├── mdadm-query-detail.out
│ │ │ ├── mdadm-query-raid0-ok.json
│ │ │ ├── mdadm-query-raid0-ok.out
│ │ │ ├── mdadm-query-raid1-failed-and-flags.json
│ │ │ ├── mdadm-query-raid1-failed-and-flags.out
│ │ │ ├── mdadm-query-raid1-faulty-and-removed.json
│ │ │ ├── mdadm-query-raid1-faulty-and-removed.out
│ │ │ ├── mdadm-query-raid1-faulty-with-spare.json
│ │ │ ├── mdadm-query-raid1-faulty-with-spare.out
│ │ │ ├── mdadm-query-raid1-faulty.json
│ │ │ ├── mdadm-query-raid1-faulty.out
│ │ │ ├── mdadm-query-raid1-ok-0-9.json
│ │ │ ├── mdadm-query-raid1-ok-0-9.out
│ │ │ ├── mdadm-query-raid1-ok-failfast.json
│ │ │ ├── mdadm-query-raid1-ok-failfast.out
│ │ │ ├── mdadm-query-raid1-ok-spare.json
│ │ │ ├── mdadm-query-raid1-ok-spare.out
│ │ │ ├── mdadm-query-raid1-ok.json
│ │ │ ├── mdadm-query-raid1-ok.out
│ │ │ ├── mdadm-query-raid1-rebuild-failfast.json
│ │ │ ├── mdadm-query-raid1-rebuild-failfast.out
│ │ │ ├── mdadm-query-raid1-spare-writem-rebuild.json
│ │ │ ├── mdadm-query-raid1-spare-writem-rebuild.out
│ │ │ ├── mdadm-query-raid1-syncing.json
│ │ │ ├── mdadm-query-raid1-syncing.out
│ │ │ ├── mdadm-query-raid5-homehost.json
│ │ │ ├── mdadm-query-raid5-homehost.out
│ │ │ ├── mdadm-query-raid5-meta09.json
│ │ │ ├── mdadm-query-raid5-meta09.out
│ │ │ ├── mdadm-query-raid5-ok.json
│ │ │ ├── mdadm-query-raid5-ok.out
│ │ │ ├── mount-parens-in-filesystem.json
│ │ │ ├── mount-parens-in-filesystem.out
│ │ │ ├── mount-spaces-in-filename.json
│ │ │ ├── mount-spaces-in-filename.out
│ │ │ ├── mount-spaces-in-mountpoint.json
│ │ │ ├── mount-spaces-in-mountpoint.out
│ │ │ ├── needrestart--extralines.json
│ │ │ ├── needrestart--extralines.out
│ │ │ ├── needrestart--pid.json
│ │ │ ├── needrestart--pid.out
│ │ │ ├── needrestart--standard.json
│ │ │ ├── needrestart--standard.out
│ │ │ ├── netstat-no-state.json
│ │ │ ├── netstat-no-state.out
│ │ │ ├── netstat-old.json
│ │ │ ├── netstat-old.out
│ │ │ ├── nmcli-team-and-team-port-config.json
│ │ │ ├── nmcli-team-and-team-port-config.out
│ │ │ ├── nmcli-team-config-blank.json
│ │ │ ├── nmcli-team-config-blank.out
│ │ │ ├── nmcli-team-config.json
│ │ │ ├── nmcli-team-config.out
│ │ │ ├── nmcli-team-port-config-blank.json
│ │ │ ├── nmcli-team-port-config-blank.out
│ │ │ ├── nmcli-team-port-config.json
│ │ │ ├── nmcli-team-port-config.out
│ │ │ ├── nsd_control-cookie_secrets.json
│ │ │ ├── nsd_control-cookie_secrets.out
│ │ │ ├── nsd_control-stats.json
│ │ │ ├── nsd_control-stats.out
│ │ │ ├── nsd_control-status.json
│ │ │ ├── nsd_control-status.out
│ │ │ ├── nsd_control-tsig.json
│ │ │ ├── nsd_control-tsig.out
│ │ │ ├── nsd_control-zonestatus.json
│ │ │ ├── nsd_control-zonestatus.out
│ │ │ ├── nsd_control.json
│ │ │ ├── nsd_control.out
│ │ │ ├── openvpn-status.json
│ │ │ ├── openvpn-status.log
│ │ │ ├── os-release-centos
│ │ │ ├── os-release-centos.json
│ │ │ ├── os-release-ubuntu
│ │ │ ├── os-release-ubuntu.json
│ │ │ ├── pacman--packages.json
│ │ │ ├── pacman--packages.out
│ │ │ ├── pacman--qii-zstd.json
│ │ │ ├── pacman--qii-zstd.out
│ │ │ ├── pacman--si-graphicsmagick.json
│ │ │ ├── pacman--si-graphicsmagick.out
│ │ │ ├── path--long.json
│ │ │ ├── path--long.out
│ │ │ ├── path--one.json
│ │ │ ├── path--one.out
│ │ │ ├── path--windows.json
│ │ │ ├── path--windows.out
│ │ │ ├── path--with-spaces.json
│ │ │ ├── path--with-spaces.out
│ │ │ ├── path_list--long.json
│ │ │ ├── path_list--long.out
│ │ │ ├── path_list--one.json
│ │ │ ├── path_list--one.out
│ │ │ ├── path_list--two.json
│ │ │ ├── path_list--two.out
│ │ │ ├── path_list--windows-environment.json
│ │ │ ├── path_list--windows-environment.out
│ │ │ ├── path_list--windows-long.json
│ │ │ ├── path_list--windows-long.out
│ │ │ ├── path_list--windows.json
│ │ │ ├── path_list--windows.out
│ │ │ ├── path_list--with-spaces.json
│ │ │ ├── path_list--with-spaces.out
│ │ │ ├── pci.ids
│ │ │ ├── pci.ids.json
│ │ │ ├── pgpass.json
│ │ │ ├── pgpass.txt
│ │ │ ├── pidstat-ht-streaming.json
│ │ │ ├── pidstat-ht.json
│ │ │ ├── pidstat-ht.out
│ │ │ ├── pip-show-multiline-license-first-blank.json
│ │ │ ├── pip-show-multiline-license-first-blank.out
│ │ │ ├── pip-show-multiline-license.json
│ │ │ ├── pip-show-multiline-license.out
│ │ │ ├── pkg-index-apk-raw.json
│ │ │ ├── pkg-index-apk.json
│ │ │ ├── pkg-index-apk.out
│ │ │ ├── pkg-index-deb.json
│ │ │ ├── pkg-index-deb.out
│ │ │ ├── plist-alltypes-bin.json
│ │ │ ├── plist-alltypes-bin.plist
│ │ │ ├── plist-alltypes.json
│ │ │ ├── plist-alltypes.plist
│ │ │ ├── plist-garageband-info.json
│ │ │ ├── plist-garageband-info.plist
│ │ │ ├── plist-nextstep.json
│ │ │ ├── plist-nextstep.plist
│ │ │ ├── plist-nextstep2.json
│ │ │ ├── plist-nextstep2.plist
│ │ │ ├── plist-safari-info.json
│ │ │ ├── plist-safari-info.plist
│ │ │ ├── postconf-M.json
│ │ │ ├── postconf-M.out
│ │ │ ├── resolve.conf-1
│ │ │ ├── resolve.conf-1.json
│ │ │ ├── resolve.conf-2
│ │ │ ├── resolve.conf-2.json
│ │ │ ├── resolve.conf-3
│ │ │ ├── resolve.conf-3.json
│ │ │ ├── resolve.conf-4
│ │ │ ├── resolve.conf-4.json
│ │ │ ├── rsync-i-streaming.json
│ │ │ ├── rsync-i.json
│ │ │ ├── rsync-i.out
│ │ │ ├── srt-attack_of_the_clones.json
│ │ │ ├── srt-attack_of_the_clones.srt
│ │ │ ├── srt-attack_of_the_clones_raw.json
│ │ │ ├── srt-complex.json
│ │ │ ├── srt-complex.srt
│ │ │ ├── ss-wide.json
│ │ │ ├── ss-wide.out
│ │ │ ├── ssh_config1
│ │ │ ├── ssh_config1.json
│ │ │ ├── ssh_config2
│ │ │ ├── ssh_config2.json
│ │ │ ├── ssh_config3
│ │ │ ├── ssh_config3.json
│ │ │ ├── ssh_config4
│ │ │ ├── ssh_config4.json
│ │ │ ├── ssh_config5
│ │ │ ├── ssh_config5.json
│ │ │ ├── sshd-T-2.json
│ │ │ ├── sshd-T-2.out
│ │ │ ├── sshd-T.json
│ │ │ ├── sshd-T.out
│ │ │ ├── sshd_config
│ │ │ ├── sshd_config.json
│ │ │ ├── swapon-all-v1.json
│ │ │ ├── swapon-all-v1.out
│ │ │ ├── swapon-all-v2.json
│ │ │ ├── swapon-all-v2.out
│ │ │ ├── syslog-3164-streaming.json
│ │ │ ├── syslog-3164.json
│ │ │ ├── syslog-3164.out
│ │ │ ├── syslog-5424-streaming.json
│ │ │ ├── syslog-5424.json
│ │ │ ├── syslog-5424.out
│ │ │ ├── timedatectl-rtc-local.json
│ │ │ ├── timedatectl-rtc-local.out
│ │ │ ├── timedatectl-timesync-status.json
│ │ │ ├── timedatectl-timesync-status.out
│ │ │ ├── toml-example.json
│ │ │ ├── toml-example.toml
│ │ │ ├── toml-example2.json
│ │ │ ├── toml-example2.toml
│ │ │ ├── traceroute-long-ipv6-streaming.json
│ │ │ ├── traceroute-long-ipv6.json
│ │ │ ├── traceroute-long-ipv6.out
│ │ │ ├── traceroute-n-ipv4-streaming.json
│ │ │ ├── traceroute-n-ipv4.json
│ │ │ ├── traceroute-n-ipv4.out
│ │ │ ├── traceroute-n-ipv6-streaming.json
│ │ │ ├── traceroute-n-ipv6.json
│ │ │ ├── traceroute-n-ipv6.out
│ │ │ ├── traceroute-n-q1-ipv4-streaming.json
│ │ │ ├── traceroute-n-q1-ipv4.json
│ │ │ ├── traceroute-n-q1-ipv4.out
│ │ │ ├── traceroute1-streaming.json
│ │ │ ├── traceroute1.json
│ │ │ ├── traceroute1.out
│ │ │ ├── traceroute2-streaming.json
│ │ │ ├── traceroute2.json
│ │ │ ├── traceroute2.out
│ │ │ ├── traceroute3-streaming.json
│ │ │ ├── traceroute3.json
│ │ │ ├── traceroute3.out
│ │ │ ├── traceroute4-streaming.json
│ │ │ ├── traceroute4.json
│ │ │ ├── traceroute4.out
│ │ │ ├── traceroute5-streaming.json
│ │ │ ├── traceroute5.json
│ │ │ ├── traceroute5.out
│ │ │ ├── traceroute6-streaming.json
│ │ │ ├── traceroute6.json
│ │ │ ├── traceroute6.out
│ │ │ ├── traceroute7-streaming.json
│ │ │ ├── traceroute7.json
│ │ │ ├── traceroute7.out
│ │ │ ├── traceroute8-streaming.json
│ │ │ ├── traceroute8.json
│ │ │ ├── traceroute8.out
│ │ │ ├── tune2fs-l.json
│ │ │ ├── tune2fs-l.out
│ │ │ ├── udevadm.json
│ │ │ ├── udevadm.out
│ │ │ ├── ufw-appinfo-msn.json
│ │ │ ├── ufw-appinfo-msn.out
│ │ │ ├── ufw-appinfo-multiline-description.json
│ │ │ ├── ufw-appinfo-multiline-description.out
│ │ │ ├── ufw-appinfo-test.json
│ │ │ ├── ufw-appinfo-test.out
│ │ │ ├── ufw-appinfo-test2.json
│ │ │ ├── ufw-appinfo-test2.out
│ │ │ ├── ufw-appinfo-test3.json
│ │ │ ├── ufw-appinfo-test3.out
│ │ │ ├── ufw-inactive.json
│ │ │ ├── ufw-inactive.out
│ │ │ ├── ufw-numbered.json
│ │ │ ├── ufw-numbered.out
│ │ │ ├── ufw-numbered2.json
│ │ │ ├── ufw-numbered2.out
│ │ │ ├── ufw.json
│ │ │ ├── ufw.out
│ │ │ ├── uname-a-different-proc.json
│ │ │ ├── uname-a-different-proc.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── update-alternatives-get-selections.json
│ │ │ ├── update-alternatives-get-selections.out
│ │ │ ├── update-alternatives-query.json
│ │ │ ├── update-alternatives-query.out
│ │ │ ├── update-alternatives-query2.json
│ │ │ ├── update-alternatives-query2.out
│ │ │ ├── upower-i-c-locale.json
│ │ │ ├── upower-i-c-locale.out
│ │ │ ├── upower-i-non-utc.json
│ │ │ ├── upower-i-non-utc.out
│ │ │ ├── upower-i-utc.json
│ │ │ ├── upower-i-utc.out
│ │ │ ├── veracrypt_verbose_list_volumes.out
│ │ │ ├── veracrypt_verbose_list_volumes_unknown_fields.out
│ │ │ ├── vmstat-extra-wide-streaming.json
│ │ │ ├── vmstat-extra-wide.json
│ │ │ ├── vmstat-extra-wide.out
│ │ │ ├── who-login-screen.json
│ │ │ ├── who-login-screen.out
│ │ │ ├── x509-ca-cert.der
│ │ │ ├── x509-ca-cert.json
│ │ │ ├── x509-cert-and-key.json
│ │ │ ├── x509-cert-and-key.pem
│ │ │ ├── x509-cert-bad-email.json
│ │ │ ├── x509-cert-bad-email.pem
│ │ │ ├── x509-cert-bad-email2.der
│ │ │ ├── x509-cert-bad-email2.json
│ │ │ ├── x509-cert-superfluous-bits.json
│ │ │ ├── x509-cert-superfluous-bits.pem
│ │ │ ├── x509-crl-der.json
│ │ │ ├── x509-crl.der
│ │ │ ├── x509-crl.json
│ │ │ ├── x509-crl.pem
│ │ │ ├── x509-csr-der.json
│ │ │ ├── x509-csr-windows.json
│ │ │ ├── x509-csr-windows.pem
│ │ │ ├── x509-csr.der
│ │ │ ├── x509-csr.json
│ │ │ ├── x509-csr.pem
│ │ │ ├── x509-letsencrypt.json
│ │ │ ├── x509-letsencrypt.pem
│ │ │ ├── x509-multi-cert.json
│ │ │ ├── x509-multi-cert.pem
│ │ │ ├── x509-negative-serial.json
│ │ │ ├── x509-negative-serial.pem
│ │ │ ├── x509-string-serialnumber.der
│ │ │ ├── x509-string-serialnumber.json
│ │ │ ├── xml-cd_catalog.json
│ │ │ ├── xml-cd_catalog.xml
│ │ │ ├── xml-foodmenu.json
│ │ │ ├── xml-foodmenu.xml
│ │ │ ├── xml-nmap-nocomment.json
│ │ │ ├── xml-nmap-raw-nocomment.json
│ │ │ ├── xml-nmap-raw.json
│ │ │ ├── xml-nmap.json
│ │ │ ├── xml-nmap.xml
│ │ │ ├── xrandr.json
│ │ │ ├── xrandr.out
│ │ │ ├── xrandr_2.json
│ │ │ ├── xrandr_2.out
│ │ │ ├── xrandr_3.json
│ │ │ ├── xrandr_3.out
│ │ │ ├── xrandr_device.out
│ │ │ ├── xrandr_extra_hv_lines.json
│ │ │ ├── xrandr_extra_hv_lines.out
│ │ │ ├── xrandr_issue_525.out
│ │ │ ├── xrandr_properties.out
│ │ │ ├── xrandr_properties_1.json
│ │ │ ├── xrandr_properties_1.out
│ │ │ ├── xrandr_simple.json
│ │ │ ├── xrandr_simple.out
│ │ │ ├── yaml-istio-sc.json
│ │ │ ├── yaml-istio-sc.yaml
│ │ │ ├── yaml-istio-sidecar.json
│ │ │ ├── yaml-istio-sidecar.yaml
│ │ │ ├── zpool-iostat-v.json
│ │ │ ├── zpool-iostat-v.out
│ │ │ ├── zpool-iostat.json
│ │ │ ├── zpool-iostat.out
│ │ │ ├── zpool-status-spares.json
│ │ │ ├── zpool-status-spares.out
│ │ │ ├── zpool-status-v.json
│ │ │ ├── zpool-status-v.out
│ │ │ ├── zpool-status-v2.json
│ │ │ ├── zpool-status-v2.out
│ │ │ ├── zpool-status-v3.json
│ │ │ ├── zpool-status-v3.out
│ │ │ ├── zpool-status-v4.json
│ │ │ └── zpool-status-v4.out
│ │ ├── linux-proc/
│ │ │ ├── buddyinfo
│ │ │ ├── buddyinfo.json
│ │ │ ├── consoles
│ │ │ ├── consoles.json
│ │ │ ├── consoles2
│ │ │ ├── consoles2.json
│ │ │ ├── cpuinfo
│ │ │ ├── cpuinfo.json
│ │ │ ├── cpuinfo2
│ │ │ ├── cpuinfo2.json
│ │ │ ├── crypto
│ │ │ ├── crypto.json
│ │ │ ├── devices
│ │ │ ├── devices.json
│ │ │ ├── diskstats
│ │ │ ├── diskstats.json
│ │ │ ├── driver_rtc
│ │ │ ├── driver_rtc.json
│ │ │ ├── filesystems
│ │ │ ├── filesystems.json
│ │ │ ├── interrupts
│ │ │ ├── interrupts.json
│ │ │ ├── iomem
│ │ │ ├── iomem.json
│ │ │ ├── ioports
│ │ │ ├── ioports.json
│ │ │ ├── loadavg
│ │ │ ├── loadavg.json
│ │ │ ├── locks
│ │ │ ├── locks.json
│ │ │ ├── meminfo
│ │ │ ├── meminfo.json
│ │ │ ├── modules
│ │ │ ├── modules.json
│ │ │ ├── mtrr
│ │ │ ├── mtrr.json
│ │ │ ├── net_arp
│ │ │ ├── net_arp.json
│ │ │ ├── net_dev
│ │ │ ├── net_dev.json
│ │ │ ├── net_dev_mcast
│ │ │ ├── net_dev_mcast.json
│ │ │ ├── net_if_inet6
│ │ │ ├── net_if_inet6.json
│ │ │ ├── net_igmp
│ │ │ ├── net_igmp.json
│ │ │ ├── net_igmp6
│ │ │ ├── net_igmp6.json
│ │ │ ├── net_igmp_more
│ │ │ ├── net_igmp_more.json
│ │ │ ├── net_ipv6_route
│ │ │ ├── net_ipv6_route.json
│ │ │ ├── net_netlink
│ │ │ ├── net_netlink.json
│ │ │ ├── net_netstat
│ │ │ ├── net_netstat.json
│ │ │ ├── net_packet
│ │ │ ├── net_packet.json
│ │ │ ├── net_protocols
│ │ │ ├── net_protocols.json
│ │ │ ├── net_route
│ │ │ ├── net_route.json
│ │ │ ├── net_tcp
│ │ │ ├── net_tcp.json
│ │ │ ├── net_tcp6
│ │ │ ├── net_tcp6.json
│ │ │ ├── net_unix
│ │ │ ├── net_unix.json
│ │ │ ├── pagetypeinfo
│ │ │ ├── pagetypeinfo.json
│ │ │ ├── partitions
│ │ │ ├── partitions.json
│ │ │ ├── pid_fdinfo
│ │ │ ├── pid_fdinfo.json
│ │ │ ├── pid_fdinfo_dma
│ │ │ ├── pid_fdinfo_dma.json
│ │ │ ├── pid_fdinfo_epoll
│ │ │ ├── pid_fdinfo_epoll.json
│ │ │ ├── pid_fdinfo_fanotify
│ │ │ ├── pid_fdinfo_fanotify.json
│ │ │ ├── pid_fdinfo_inotify
│ │ │ ├── pid_fdinfo_inotify.json
│ │ │ ├── pid_fdinfo_timerfd
│ │ │ ├── pid_fdinfo_timerfd.json
│ │ │ ├── pid_io
│ │ │ ├── pid_io.json
│ │ │ ├── pid_maps
│ │ │ ├── pid_maps.json
│ │ │ ├── pid_mountinfo
│ │ │ ├── pid_mountinfo.json
│ │ │ ├── pid_numa_maps
│ │ │ ├── pid_numa_maps.json
│ │ │ ├── pid_smaps
│ │ │ ├── pid_smaps.json
│ │ │ ├── pid_stat
│ │ │ ├── pid_stat.json
│ │ │ ├── pid_stat_hack
│ │ │ ├── pid_stat_hack.json
│ │ │ ├── pid_stat_w_space_and_nl_in_comm
│ │ │ ├── pid_stat_w_space_and_nl_in_comm.json
│ │ │ ├── pid_statm
│ │ │ ├── pid_statm.json
│ │ │ ├── pid_status
│ │ │ ├── pid_status.json
│ │ │ ├── scsi_device_info
│ │ │ ├── scsi_scsi
│ │ │ ├── slabinfo
│ │ │ ├── slabinfo.json
│ │ │ ├── softirqs
│ │ │ ├── softirqs.json
│ │ │ ├── stat
│ │ │ ├── stat.json
│ │ │ ├── stat2
│ │ │ ├── stat2.json
│ │ │ ├── swaps
│ │ │ ├── swaps.json
│ │ │ ├── uptime
│ │ │ ├── uptime.json
│ │ │ ├── version
│ │ │ ├── version.json
│ │ │ ├── version2
│ │ │ ├── version2.json
│ │ │ ├── version3
│ │ │ ├── version3.json
│ │ │ ├── vmallocinfo
│ │ │ ├── vmallocinfo.json
│ │ │ ├── vmstat
│ │ │ ├── vmstat.json
│ │ │ ├── zoneinfo
│ │ │ ├── zoneinfo.json
│ │ │ ├── zoneinfo2
│ │ │ └── zoneinfo2.json
│ │ ├── nixos/
│ │ │ ├── route-ee.json
│ │ │ ├── route-ee.out
│ │ │ ├── w.json
│ │ │ └── w.out
│ │ ├── opensuse-leap-15.5/
│ │ │ ├── efibootmgr-v.json
│ │ │ ├── efibootmgr-v.out
│ │ │ ├── efibootmgr.json
│ │ │ └── efibootmgr.out
│ │ ├── osx-10.11.6/
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── df-h.json
│ │ │ ├── df-h.out
│ │ │ ├── df.json
│ │ │ ├── df.out
│ │ │ ├── dig-aaaa.json
│ │ │ ├── dig-aaaa.out
│ │ │ ├── dig-x.json
│ │ │ ├── dig-x.out
│ │ │ ├── dig.json
│ │ │ ├── dig.out
│ │ │ ├── du.json
│ │ │ ├── du.out
│ │ │ ├── ifconfig.json
│ │ │ ├── ifconfig.out
│ │ │ ├── ifconfig2.json
│ │ │ ├── ifconfig2.out
│ │ │ ├── ls-al.json
│ │ │ ├── ls-al.out
│ │ │ ├── ls-alh.json
│ │ │ ├── ls-alh.out
│ │ │ ├── ls.json
│ │ │ ├── ls.out
│ │ │ ├── pip-list.json
│ │ │ ├── pip-list.out
│ │ │ ├── pip-show.json
│ │ │ ├── pip-show.out
│ │ │ ├── ps-axu.json
│ │ │ ├── ps-axu.out
│ │ │ ├── ps-ef.json
│ │ │ ├── ps-ef.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── uptime.json
│ │ │ ├── uptime.out
│ │ │ ├── w.json
│ │ │ └── w.out
│ │ ├── osx-10.14.6/
│ │ │ ├── airport-I.json
│ │ │ ├── airport-I.out
│ │ │ ├── airport-s.json
│ │ │ ├── airport-s.out
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── arp-a2.json
│ │ │ ├── arp-a2.out
│ │ │ ├── cksum.json
│ │ │ ├── cksum.out
│ │ │ ├── df-h.json
│ │ │ ├── df-h.out
│ │ │ ├── df-hh.json
│ │ │ ├── df-hh.out
│ │ │ ├── df.json
│ │ │ ├── df.out
│ │ │ ├── dig-aaaa.json
│ │ │ ├── dig-aaaa.out
│ │ │ ├── dig-axfr.json
│ │ │ ├── dig-axfr.out
│ │ │ ├── dig-noall-answer.json
│ │ │ ├── dig-noall-answer.out
│ │ │ ├── dig-x.json
│ │ │ ├── dig-x.out
│ │ │ ├── dig.json
│ │ │ ├── dig.out
│ │ │ ├── du.json
│ │ │ ├── du.out
│ │ │ ├── file.json
│ │ │ ├── file.out
│ │ │ ├── file2.json
│ │ │ ├── file2.out
│ │ │ ├── file3.json
│ │ │ ├── file3.out
│ │ │ ├── finger.json
│ │ │ ├── finger.out
│ │ │ ├── group.json
│ │ │ ├── group.out
│ │ │ ├── id.json
│ │ │ ├── id.out
│ │ │ ├── ifconfig.json
│ │ │ ├── ifconfig.out
│ │ │ ├── ifconfig2.json
│ │ │ ├── ifconfig2.out
│ │ │ ├── last.json
│ │ │ ├── last.out
│ │ │ ├── ls-R-newlines.json
│ │ │ ├── ls-R-newlines.out
│ │ │ ├── ls-R.json
│ │ │ ├── ls-R.out
│ │ │ ├── ls-al-streaming.json
│ │ │ ├── ls-al.json
│ │ │ ├── ls-al.out
│ │ │ ├── ls-alR-streaming.json
│ │ │ ├── ls-alR.json
│ │ │ ├── ls-alR.out
│ │ │ ├── ls-alh-streaming.json
│ │ │ ├── ls-alh.json
│ │ │ ├── ls-alh.out
│ │ │ ├── ls-glob.json
│ │ │ ├── ls-glob.out
│ │ │ ├── ls-l-newlines.json
│ │ │ ├── ls-l-newlines.out
│ │ │ ├── ls-lR-empty-folder-streaming.json
│ │ │ ├── ls-lR-empty-folder.json
│ │ │ ├── ls-lR-empty-folder.out
│ │ │ ├── ls-lR-newlines.json
│ │ │ ├── ls-lR-newlines.out
│ │ │ ├── ls-newlines.json
│ │ │ ├── ls-newlines.out
│ │ │ ├── ls.json
│ │ │ ├── ls.out
│ │ │ ├── md5.json
│ │ │ ├── md5.out
│ │ │ ├── mount.json
│ │ │ ├── mount.out
│ │ │ ├── mount2.json
│ │ │ ├── mount2.out
│ │ │ ├── netstat-Abn.json
│ │ │ ├── netstat-Abn.out
│ │ │ ├── netstat-An.json
│ │ │ ├── netstat-An.out
│ │ │ ├── netstat-i.json
│ │ │ ├── netstat-i.out
│ │ │ ├── netstat-r.json
│ │ │ ├── netstat-r.out
│ │ │ ├── netstat-rnl.json
│ │ │ ├── netstat-rnl.out
│ │ │ ├── netstat.json
│ │ │ ├── netstat.out
│ │ │ ├── passwd.json
│ │ │ ├── passwd.out
│ │ │ ├── ping-hostname-p-streaming.json
│ │ │ ├── ping-hostname-p.json
│ │ │ ├── ping-hostname-p.out
│ │ │ ├── ping-hostname-s-streaming.json
│ │ │ ├── ping-hostname-s.json
│ │ │ ├── ping-hostname-s.out
│ │ │ ├── ping-hostname-streaming.json
│ │ │ ├── ping-hostname.json
│ │ │ ├── ping-hostname.out
│ │ │ ├── ping-ip-dup-streaming.json
│ │ │ ├── ping-ip-dup.json
│ │ │ ├── ping-ip-dup.out
│ │ │ ├── ping-ip-p-streaming.json
│ │ │ ├── ping-ip-p.json
│ │ │ ├── ping-ip-p.out
│ │ │ ├── ping-ip-s-streaming.json
│ │ │ ├── ping-ip-s.json
│ │ │ ├── ping-ip-s.out
│ │ │ ├── ping-ip-streaming.json
│ │ │ ├── ping-ip-unknown-errors.json
│ │ │ ├── ping-ip-unknown-errors.out
│ │ │ ├── ping-ip-unreachable-streaming.json
│ │ │ ├── ping-ip-unreachable.json
│ │ │ ├── ping-ip-unreachable.out
│ │ │ ├── ping-ip.json
│ │ │ ├── ping-ip.out
│ │ │ ├── ping6-hostname-p-streaming.json
│ │ │ ├── ping6-hostname-p.json
│ │ │ ├── ping6-hostname-p.out
│ │ │ ├── ping6-hostname-s-streaming.json
│ │ │ ├── ping6-hostname-s.json
│ │ │ ├── ping6-hostname-s.out
│ │ │ ├── ping6-hostname-streaming.json
│ │ │ ├── ping6-hostname.json
│ │ │ ├── ping6-hostname.out
│ │ │ ├── ping6-ip-dup-streaming.json
│ │ │ ├── ping6-ip-dup.json
│ │ │ ├── ping6-ip-dup.out
│ │ │ ├── ping6-ip-p-streaming.json
│ │ │ ├── ping6-ip-p.json
│ │ │ ├── ping6-ip-p.out
│ │ │ ├── ping6-ip-s-streaming.json
│ │ │ ├── ping6-ip-s.json
│ │ │ ├── ping6-ip-s.out
│ │ │ ├── ping6-ip-streaming.json
│ │ │ ├── ping6-ip-unparsable.json
│ │ │ ├── ping6-ip-unparsable.out
│ │ │ ├── ping6-ip.json
│ │ │ ├── ping6-ip.out
│ │ │ ├── pip-list.json
│ │ │ ├── pip-list.out
│ │ │ ├── pip-show.json
│ │ │ ├── pip-show.out
│ │ │ ├── ps-axu.json
│ │ │ ├── ps-axu.out
│ │ │ ├── ps-ef.json
│ │ │ ├── ps-ef.out
│ │ │ ├── rsync-i-vvv-logfile-nochange-streaming.json
│ │ │ ├── rsync-i-vvv-logfile-nochange.json
│ │ │ ├── rsync-i-vvv-logfile-nochange.out
│ │ │ ├── rsync-i-vvv-nochange-streaming.json
│ │ │ ├── rsync-i-vvv-nochange.json
│ │ │ ├── rsync-i-vvv-nochange.out
│ │ │ ├── rsync-i-vvv-streaming.json
│ │ │ ├── rsync-i-vvv.json
│ │ │ ├── rsync-i-vvv.out
│ │ │ ├── shasum.json
│ │ │ ├── shasum.out
│ │ │ ├── stat-filename-with-spaces-streaming.json
│ │ │ ├── stat-filename-with-spaces.json
│ │ │ ├── stat-filename-with-spaces.out
│ │ │ ├── stat-streaming.json
│ │ │ ├── stat.json
│ │ │ ├── stat.out
│ │ │ ├── sum.json
│ │ │ ├── sum.out
│ │ │ ├── sysctl-a.json
│ │ │ ├── sysctl-a.out
│ │ │ ├── time-l.json
│ │ │ ├── time-l.out
│ │ │ ├── time-lp.json
│ │ │ ├── time-lp.out
│ │ │ ├── time-p.json
│ │ │ ├── time-p.out
│ │ │ ├── time.json
│ │ │ ├── time.out
│ │ │ ├── traceroute-asn-streaming.json
│ │ │ ├── traceroute-asn.json
│ │ │ ├── traceroute-asn.out
│ │ │ ├── traceroute-mult-addresses-streaming.json
│ │ │ ├── traceroute-mult-addresses.json
│ │ │ ├── traceroute-mult-addresses.out
│ │ │ ├── traceroute-no-header-streaming.json
│ │ │ ├── traceroute-no-header.json
│ │ │ ├── traceroute-no-header.out
│ │ │ ├── traceroute-q-streaming.json
│ │ │ ├── traceroute-q.json
│ │ │ ├── traceroute-q.out
│ │ │ ├── traceroute-streaming.json
│ │ │ ├── traceroute.json
│ │ │ ├── traceroute.out
│ │ │ ├── traceroute6-mult-addresses-streaming.json
│ │ │ ├── traceroute6-mult-addresses.json
│ │ │ ├── traceroute6-mult-addresses.out
│ │ │ ├── traceroute6-streaming.json
│ │ │ ├── traceroute6.json
│ │ │ ├── traceroute6.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── uname.out
│ │ │ ├── uptime.json
│ │ │ ├── uptime.out
│ │ │ ├── w.json
│ │ │ ├── w.out
│ │ │ ├── wc-stdin.json
│ │ │ ├── wc-stdin.out
│ │ │ ├── wc.json
│ │ │ ├── wc.out
│ │ │ ├── who-a.json
│ │ │ ├── who-a.out
│ │ │ ├── who.json
│ │ │ ├── who.out
│ │ │ ├── zipinfo-multi.json
│ │ │ └── zipinfo-multi.out
│ │ ├── pi/
│ │ │ ├── ping-ip-O-D-streaming.json
│ │ │ ├── ping-ip-O-D.json
│ │ │ ├── ping-ip-O-D.out
│ │ │ ├── ping-ip-O-streaming.json
│ │ │ ├── ping-ip-O.json
│ │ │ └── ping-ip-O.out
│ │ ├── rhel-8/
│ │ │ ├── MANIFEST.MF.MULTI.json
│ │ │ ├── MANIFEST.MF.MULTI.out
│ │ │ ├── MANIFEST.MF.json
│ │ │ ├── MANIFEST.MF.out
│ │ │ ├── zipinfo-space-in-name.json
│ │ │ ├── zipinfo-space-in-name.out
│ │ │ ├── zipinfo.json
│ │ │ └── zipinfo.out
│ │ ├── ubuntu-16.04/
│ │ │ ├── ifconfig.json
│ │ │ └── ifconfig.out
│ │ ├── ubuntu-18.04/
│ │ │ ├── acpi-V.json
│ │ │ ├── acpi-V.out
│ │ │ ├── arp-a.json
│ │ │ ├── arp-a.out
│ │ │ ├── arp-v.json
│ │ │ ├── arp-v.out
│ │ │ ├── arp.json
│ │ │ ├── arp.out
│ │ │ ├── blkid-ip-multi.json
│ │ │ ├── blkid-ip-multi.out
│ │ │ ├── blkid-ip-udev-multi.json
│ │ │ ├── blkid-ip-udev-multi.out
│ │ │ ├── blkid-ip-udev.json
│ │ │ ├── blkid-ip-udev.out
│ │ │ ├── blkid-sda2.json
│ │ │ ├── blkid-sda2.out
│ │ │ ├── blkid.json
│ │ │ ├── blkid.out
│ │ │ ├── crontab-u.json
│ │ │ ├── crontab-u.out
│ │ │ ├── df-h.json
│ │ │ ├── df-h.out
│ │ │ ├── df.json
│ │ │ ├── df.out
│ │ │ ├── dig-aaaa.json
│ │ │ ├── dig-aaaa.out
│ │ │ ├── dig-axfr.json
│ │ │ ├── dig-axfr.out
│ │ │ ├── dig-x.json
│ │ │ ├── dig-x.out
│ │ │ ├── dig.json
│ │ │ ├── dig.out
│ │ │ ├── dmidecode.json
│ │ │ ├── dmidecode.out
│ │ │ ├── dpkg-l-codes.json
│ │ │ ├── dpkg-l-codes.out
│ │ │ ├── dpkg-l-columns500.json
│ │ │ ├── dpkg-l-columns500.out
│ │ │ ├── dpkg-l.json
│ │ │ ├── dpkg-l.out
│ │ │ ├── du.json
│ │ │ ├── du.out
│ │ │ ├── env.json
│ │ │ ├── env.out
│ │ │ ├── file.json
│ │ │ ├── file.out
│ │ │ ├── find.json
│ │ │ ├── find.out
│ │ │ ├── finger.json
│ │ │ ├── finger.out
│ │ │ ├── free-h.json
│ │ │ ├── free-h.out
│ │ │ ├── free-w.json
│ │ │ ├── free-w.out
│ │ │ ├── free.json
│ │ │ ├── free.out
│ │ │ ├── fstab.json
│ │ │ ├── fstab.out
│ │ │ ├── group.json
│ │ │ ├── group.out
│ │ │ ├── gshadow.json
│ │ │ ├── gshadow.out
│ │ │ ├── history.json
│ │ │ ├── history.out
│ │ │ ├── hosts.json
│ │ │ ├── hosts.out
│ │ │ ├── ifconfig.json
│ │ │ ├── ifconfig.out
│ │ │ ├── iostat-1-streaming.json
│ │ │ ├── iostat-1.json
│ │ │ ├── iostat-1.out
│ │ │ ├── iostat-m-streaming.json
│ │ │ ├── iostat-m.json
│ │ │ ├── iostat-m.out
│ │ │ ├── iostat-mx-streaming.json
│ │ │ ├── iostat-mx.json
│ │ │ ├── iostat-mx.out
│ │ │ ├── iostat-streaming.json
│ │ │ ├── iostat-x-streaming.json
│ │ │ ├── iostat-x.json
│ │ │ ├── iostat-x.out
│ │ │ ├── iostat.json
│ │ │ ├── iostat.out
│ │ │ ├── ip_route.json
│ │ │ ├── ip_route.out
│ │ │ ├── iptables-filter-line-numbers.json
│ │ │ ├── iptables-filter-line-numbers.out
│ │ │ ├── iptables-filter-nv.json
│ │ │ ├── iptables-filter-nv.out
│ │ │ ├── iptables-filter.json
│ │ │ ├── iptables-filter.out
│ │ │ ├── iptables-mangle.json
│ │ │ ├── iptables-mangle.out
│ │ │ ├── iptables-nat.json
│ │ │ ├── iptables-nat.out
│ │ │ ├── iptables-raw.json
│ │ │ ├── iptables-raw.out
│ │ │ ├── jobs.json
│ │ │ ├── jobs.out
│ │ │ ├── last-w.json
│ │ │ ├── last-w.out
│ │ │ ├── last.json
│ │ │ ├── last.out
│ │ │ ├── lastb.json
│ │ │ ├── lastb.out
│ │ │ ├── ls-R-newlines.json
│ │ │ ├── ls-R-newlines.out
│ │ │ ├── ls-R.json
│ │ │ ├── ls-R.out
│ │ │ ├── ls-al-streaming.json
│ │ │ ├── ls-al.json
│ │ │ ├── ls-al.out
│ │ │ ├── ls-alR-streaming.json
│ │ │ ├── ls-alR.json
│ │ │ ├── ls-alR.out
│ │ │ ├── ls-alh-streaming.json
│ │ │ ├── ls-alh.json
│ │ │ ├── ls-alh.out
│ │ │ ├── ls-glob.json
│ │ │ ├── ls-glob.out
│ │ │ ├── ls-l-iso-streaming.json
│ │ │ ├── ls-l-iso.json
│ │ │ ├── ls-l-iso.out
│ │ │ ├── ls-l-newlines.json
│ │ │ ├── ls-l-newlines.out
│ │ │ ├── ls-lR-newlines.json
│ │ │ ├── ls-lR-newlines.out
│ │ │ ├── ls-newlines.json
│ │ │ ├── ls-newlines.out
│ │ │ ├── ls.json
│ │ │ ├── ls.out
│ │ │ ├── lsblk-allcols.json
│ │ │ ├── lsblk-allcols.out
│ │ │ ├── lsblk.json
│ │ │ ├── lsblk.out
│ │ │ ├── lsmod.json
│ │ │ ├── lsmod.out
│ │ │ ├── lsof-sudo.json
│ │ │ ├── lsof-sudo.out
│ │ │ ├── lsof.json
│ │ │ ├── lsof.out
│ │ │ ├── mount.json
│ │ │ ├── mount.out
│ │ │ ├── mpstat-A-streaming.json
│ │ │ ├── mpstat-A.json
│ │ │ ├── mpstat-A.out
│ │ │ ├── netstat-i.json
│ │ │ ├── netstat-i.out
│ │ │ ├── netstat-l.json
│ │ │ ├── netstat-l.out
│ │ │ ├── netstat-p.json
│ │ │ ├── netstat-p.out
│ │ │ ├── netstat-r.json
│ │ │ ├── netstat-r.out
│ │ │ ├── netstat-rne.json
│ │ │ ├── netstat-rne.out
│ │ │ ├── netstat-rnee.json
│ │ │ ├── netstat-rnee.out
│ │ │ ├── netstat-sudo-aeep.json
│ │ │ ├── netstat-sudo-aeep.out
│ │ │ ├── netstat-sudo-lnp-space.json
│ │ │ ├── netstat-sudo-lnp-space.out
│ │ │ ├── netstat-sudo-lnp.json
│ │ │ ├── netstat-sudo-lnp.out
│ │ │ ├── netstat.json
│ │ │ ├── netstat.out
│ │ │ ├── ntpq-p.json
│ │ │ ├── ntpq-p.out
│ │ │ ├── ntpq-p2.json
│ │ │ ├── ntpq-p2.out
│ │ │ ├── ntpq-pn.json
│ │ │ ├── ntpq-pn.out
│ │ │ ├── ntqp-p.out
│ │ │ ├── passwd.json
│ │ │ ├── passwd.out
│ │ │ ├── ping-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping-hostname-O-D-p-s.json
│ │ │ ├── ping-hostname-O-D-p-s.out
│ │ │ ├── ping-hostname-O-p-streaming.json
│ │ │ ├── ping-hostname-O-p.json
│ │ │ ├── ping-hostname-O-p.out
│ │ │ ├── ping-hostname-O-streaming.json
│ │ │ ├── ping-hostname-O.json
│ │ │ ├── ping-hostname-O.out
│ │ │ ├── ping-ip-O-D-streaming.json
│ │ │ ├── ping-ip-O-D.json
│ │ │ ├── ping-ip-O-D.out
│ │ │ ├── ping-ip-O-streaming.json
│ │ │ ├── ping-ip-O.json
│ │ │ ├── ping-ip-O.out
│ │ │ ├── ping6-hostname-O-D-p-s-streaming.json
│ │ │ ├── ping6-hostname-O-D-p-s.json
│ │ │ ├── ping6-hostname-O-D-p-s.out
│ │ │ ├── ping6-hostname-O-D-p.json
│ │ │ ├── ping6-hostname-O-D-p.out
│ │ │ ├── ping6-hostname-O-p-streaming.json
│ │ │ ├── ping6-hostname-O-p.json
│ │ │ ├── ping6-hostname-O-p.out
│ │ │ ├── ping6-ip-O-D-p-streaming.json
│ │ │ ├── ping6-ip-O-D-p.json
│ │ │ ├── ping6-ip-O-D-p.out
│ │ │ ├── ping6-ip-O-p-streaming.json
│ │ │ ├── ping6-ip-O-p.json
│ │ │ ├── ping6-ip-O-p.out
│ │ │ ├── pip-list-legacy.json
│ │ │ ├── pip-list-legacy.out
│ │ │ ├── pip-list.json
│ │ │ ├── pip-list.out
│ │ │ ├── pip-show.json
│ │ │ ├── pip-show.out
│ │ │ ├── ps-axu.json
│ │ │ ├── ps-axu.out
│ │ │ ├── ps-ef.json
│ │ │ ├── ps-ef.out
│ │ │ ├── route-vn.json
│ │ │ ├── route-vn.out
│ │ │ ├── route.json
│ │ │ ├── route.out
│ │ │ ├── shadow.json
│ │ │ ├── shadow.out
│ │ │ ├── ss-sudo-a.json
│ │ │ ├── ss-sudo-a.out
│ │ │ ├── ss-sudo-tulpen.json
│ │ │ ├── ss-sudo-tulpen.out
│ │ │ ├── stat-streaming.json
│ │ │ ├── stat.json
│ │ │ ├── stat.out
│ │ │ ├── sysctl-a.json
│ │ │ ├── sysctl-a.out
│ │ │ ├── systemctl-lj.json
│ │ │ ├── systemctl-lj.out
│ │ │ ├── systemctl-ls.json
│ │ │ ├── systemctl-ls.out
│ │ │ ├── systemctl-luf.json
│ │ │ ├── systemctl-luf.out
│ │ │ ├── systemctl.json
│ │ │ ├── systemctl.out
│ │ │ ├── time-p.json
│ │ │ ├── time-p.out
│ │ │ ├── time-verbose.json
│ │ │ ├── time-verbose.out
│ │ │ ├── time.json
│ │ │ ├── time.out
│ │ │ ├── time2.json
│ │ │ ├── time2.out
│ │ │ ├── timedatectl.json
│ │ │ ├── timedatectl.out
│ │ │ ├── ufw-appinfo-all.json
│ │ │ ├── ufw-appinfo-all.out
│ │ │ ├── ufw-numbered.json
│ │ │ ├── ufw-numbered.out
│ │ │ ├── ufw-verbose.json
│ │ │ ├── ufw-verbose.out
│ │ │ ├── uname-a.json
│ │ │ ├── uname-a.out
│ │ │ ├── upower-d-clocale.json
│ │ │ ├── upower-d-clocale.out
│ │ │ ├── upower-d.json
│ │ │ ├── upower-d.out
│ │ │ ├── upower-i.json
│ │ │ ├── upower-i.out
│ │ │ ├── uptime.json
│ │ │ ├── uptime.out
│ │ │ ├── vmstat-1-long-streaming.json
│ │ │ ├── vmstat-1-long.json
│ │ │ ├── vmstat-1-long.out
│ │ │ ├── w.json
│ │ │ ├── w.out
│ │ │ ├── who-a.json
│ │ │ ├── who-a.out
│ │ │ ├── who.json
│ │ │ └── who.out
│ │ ├── ubuntu-20.04/
│ │ │ ├── date.json
│ │ │ ├── date.out
│ │ │ ├── date2.json
│ │ │ ├── date2.out
│ │ │ ├── hciconfig-a.json
│ │ │ ├── hciconfig-a.out
│ │ │ ├── hciconfig.json
│ │ │ ├── hciconfig.out
│ │ │ ├── last-F.json
│ │ │ ├── last-F.out
│ │ │ ├── lsattr-R.json
│ │ │ ├── lsattr-R.out
│ │ │ ├── lsattr-error.json
│ │ │ ├── lsattr-error.out
│ │ │ ├── lsattr.json
│ │ │ ├── lsattr.out
│ │ │ ├── stat-missing-data.json
│ │ │ └── stat-missing-data.out
│ │ ├── ubuntu-20.10/
│ │ │ ├── iftop-b-n1-noport.json
│ │ │ ├── iftop-b-n1-noport.out
│ │ │ ├── iftop-b-n1.json
│ │ │ ├── iftop-b-n1.out
│ │ │ ├── iftop-b-n3.json
│ │ │ ├── iftop-b-n3.out
│ │ │ ├── iostat-m-streaming.json
│ │ │ ├── iostat-m.json
│ │ │ ├── iostat-m.out
│ │ │ ├── iostat-mx-streaming.json
│ │ │ ├── iostat-mx.json
│ │ │ ├── iostat-mx.out
│ │ │ ├── iostat-streaming.json
│ │ │ ├── iostat-x-streaming.json
│ │ │ ├── iostat-x.json
│ │ │ ├── iostat-x.out
│ │ │ ├── iostat.json
│ │ │ ├── iostat.out
│ │ │ ├── lspci-mmv.json
│ │ │ ├── lspci-mmv.out
│ │ │ ├── lspci-nmmv.json
│ │ │ ├── lspci-nmmv.out
│ │ │ ├── lspci-nnmmv.json
│ │ │ ├── lspci-nnmmv.out
│ │ │ ├── top-b-allfields-streaming.json
│ │ │ ├── top-b-allfields.json
│ │ │ ├── top-b-allfields.out
│ │ │ ├── top-b-n1-streaming.json
│ │ │ ├── top-b-n1.json
│ │ │ └── top-b-n1.out
│ │ ├── ubuntu-22.04/
│ │ │ ├── amixer-control-capture-processed.json
│ │ │ ├── amixer-control-capture.json
│ │ │ ├── amixer-control-capture.out
│ │ │ ├── amixer-control-headphone-processed.json
│ │ │ ├── amixer-control-headphone.json
│ │ │ ├── amixer-control-headphone.out
│ │ │ ├── amixer-control-master-processed.json
│ │ │ ├── amixer-control-master.json
│ │ │ ├── amixer-control-master.out
│ │ │ ├── amixer-control-speakers-processed.json
│ │ │ ├── amixer-control-speakers.json
│ │ │ ├── amixer-control-speakers.out
│ │ │ ├── ping-dest-unreachable-streaming.json
│ │ │ ├── ping-dest-unreachable.json
│ │ │ ├── ping-dest-unreachable.out
│ │ │ ├── ping-hostname-source-ip-streaming.json
│ │ │ ├── ping-hostname-source-ip.json
│ │ │ ├── ping-hostname-source-ip.out
│ │ │ ├── ping-ip-source-ip-streaming.json
│ │ │ ├── ping-ip-source-ip.json
│ │ │ ├── ping-ip-source-ip.out
│ │ │ ├── ping6-hostname-source-ip-streaming.json
│ │ │ ├── ping6-hostname-source-ip.json
│ │ │ ├── ping6-hostname-source-ip.out
│ │ │ ├── ping6-ip-source-ip-streaming.json
│ │ │ ├── ping6-ip-source-ip.json
│ │ │ ├── ping6-ip-source-ip.out
│ │ │ ├── wg_show--one_device.json
│ │ │ ├── wg_show--one_device.out
│ │ │ ├── wg_show--two_devices.json
│ │ │ └── wg_show--two_devices.out
│ │ ├── windows/
│ │ │ ├── windows-10/
│ │ │ │ ├── ipconfig.json
│ │ │ │ ├── ipconfig.out
│ │ │ │ ├── net_localgroup.administrators.json
│ │ │ │ ├── net_localgroup.administrators.out
│ │ │ │ ├── net_localgroup.json
│ │ │ │ ├── net_localgroup.out
│ │ │ │ ├── net_user.administrator.json
│ │ │ │ ├── net_user.administrator.out
│ │ │ │ ├── net_user.json
│ │ │ │ ├── net_user.out
│ │ │ │ ├── netstat-an.json
│ │ │ │ ├── netstat-an.out
│ │ │ │ ├── netstat-aon.json
│ │ │ │ ├── netstat-aon.out
│ │ │ │ ├── netstat-aonb.json
│ │ │ │ ├── netstat-aonb.out
│ │ │ │ ├── netstat.json
│ │ │ │ ├── netstat.out
│ │ │ │ ├── route.json
│ │ │ │ ├── route.out
│ │ │ │ ├── route_print.json
│ │ │ │ ├── route_print.out
│ │ │ │ ├── systeminfo-hyperv-utc.json
│ │ │ │ ├── systeminfo-hyperv-utc.out
│ │ │ │ ├── systeminfo-hyperv.json
│ │ │ │ ├── systeminfo-hyperv.out
│ │ │ │ ├── systeminfo.json
│ │ │ │ ├── systeminfo.out
│ │ │ │ ├── wg_show.json
│ │ │ │ └── wg_show.out
│ │ │ ├── windows-11/
│ │ │ │ ├── ipconfig.json
│ │ │ │ ├── ipconfig.out
│ │ │ │ ├── net_localgroup.administrators.json
│ │ │ │ ├── net_localgroup.administrators.out
│ │ │ │ ├── net_localgroup.json
│ │ │ │ ├── net_localgroup.out
│ │ │ │ ├── net_user.administrator.json
│ │ │ │ ├── net_user.administrator.out
│ │ │ │ ├── net_user.json
│ │ │ │ ├── net_user.out
│ │ │ │ ├── route_print.json
│ │ │ │ └── route_print.out
│ │ │ ├── windows-2008/
│ │ │ │ ├── ipconfig.json
│ │ │ │ ├── ipconfig.out
│ │ │ │ ├── net_localgroup.administrators.json
│ │ │ │ ├── net_localgroup.administrators.out
│ │ │ │ ├── net_localgroup.json
│ │ │ │ ├── net_localgroup.out
│ │ │ │ ├── net_user.administrator.json
│ │ │ │ ├── net_user.administrator.out
│ │ │ │ ├── net_user.json
│ │ │ │ ├── net_user.out
│ │ │ │ ├── route_print.json
│ │ │ │ └── route_print.out
│ │ │ ├── windows-2012r2/
│ │ │ │ ├── systeminfo.json
│ │ │ │ └── systeminfo.out
│ │ │ ├── windows-2016/
│ │ │ │ ├── ipconfig.json
│ │ │ │ ├── ipconfig.out
│ │ │ │ ├── net_localgroup.administrators.json
│ │ │ │ ├── net_localgroup.administrators.out
│ │ │ │ ├── net_localgroup.json
│ │ │ │ ├── net_localgroup.out
│ │ │ │ ├── net_user.administrator.json
│ │ │ │ ├── net_user.administrators.json
│ │ │ │ ├── net_user.administrators.out
│ │ │ │ ├── net_user.json
│ │ │ │ ├── net_user.out
│ │ │ │ ├── route_print.json
│ │ │ │ └── route_print.out
│ │ │ ├── windows-7/
│ │ │ │ ├── ipconfig.json
│ │ │ │ ├── ipconfig.out
│ │ │ │ ├── net_localgroup.administrators.json
│ │ │ │ ├── net_localgroup.administrators.out
│ │ │ │ ├── net_localgroup.json
│ │ │ │ ├── net_localgroup.out
│ │ │ │ ├── net_user.administrator.json
│ │ │ │ ├── net_user.administrator.out
│ │ │ │ ├── net_user.json
│ │ │ │ ├── net_user.out
│ │ │ │ ├── route_print.json
│ │ │ │ ├── route_print.out
│ │ │ │ ├── systeminfo.json
│ │ │ │ └── systeminfo.out
│ │ │ └── windows-xp/
│ │ │ ├── ipconfig.json
│ │ │ ├── ipconfig.out
│ │ │ ├── net_localgroup.administrators.json
│ │ │ ├── net_localgroup.administrators.out
│ │ │ ├── net_localgroup.json
│ │ │ ├── net_localgroup.out
│ │ │ ├── net_user.administrator.json
│ │ │ ├── net_user.administrator.out
│ │ │ ├── net_user.json
│ │ │ ├── net_user.out
│ │ │ ├── route_print.json
│ │ │ └── route_print.out
│ │ └── windows-10/
│ │ ├── dir-C.json
│ │ ├── dir-C.out
│ │ ├── dir-ODTC.json
│ │ ├── dir-ODTC.out
│ │ ├── dir-S.json
│ │ ├── dir-S.out
│ │ ├── dir-dirs.json
│ │ ├── dir-dirs.out
│ │ ├── dir-files.json
│ │ ├── dir-files.out
│ │ ├── dir-mix.json
│ │ ├── dir-mix.out
│ │ ├── dir.json
│ │ └── dir.out
│ ├── templates/
│ │ ├── _test_foo.py
│ │ ├── _test_foo_s.py
│ │ └── _test_foo_simple.py
│ ├── test_acpi.py
│ ├── test_airport.py
│ ├── test_airport_s.py
│ ├── test_amixer.py
│ ├── test_apt_cache_show.py
│ ├── test_apt_get_sqq.py
│ ├── test_arp.py
│ ├── test_asciitable.py
│ ├── test_asciitable_m.py
│ ├── test_blkid.py
│ ├── test_bluetoothctl.py
│ ├── test_cbt.py
│ ├── test_cef.py
│ ├── test_cef_s.py
│ ├── test_certbot.py
│ ├── test_chage.py
│ ├── test_cksum.py
│ ├── test_clf.py
│ ├── test_clf_s.py
│ ├── test_crontab.py
│ ├── test_crontab_u.py
│ ├── test_csv.py
│ ├── test_csv_s.py
│ ├── test_curl_head.py
│ ├── test_date.py
│ ├── test_datetime_iso.py
│ ├── test_debconf_show.py
│ ├── test_df.py
│ ├── test_dig.py
│ ├── test_dir.py
│ ├── test_dmidecode.py
│ ├── test_dpkg_l.py
│ ├── test_du.py
│ ├── test_efibootmgr.py
│ ├── test_email_address.py
│ ├── test_env.py
│ ├── test_ethtool.py
│ ├── test_file.py
│ ├── test_find.py
│ ├── test_findmnt.py
│ ├── test_finger.py
│ ├── test_free.py
│ ├── test_fstab.py
│ ├── test_git_log.py
│ ├── test_git_log_s.py
│ ├── test_git_ls_remote.py
│ ├── test_gpg.py
│ ├── test_group.py
│ ├── test_gshadow.py
│ ├── test_hash.py
│ ├── test_hashsum.py
│ ├── test_hciconfig.py
│ ├── test_history.py
│ ├── test_host.py
│ ├── test_hosts.py
│ ├── test_http_headers.py
│ ├── test_id.py
│ ├── test_ifconfig.py
│ ├── test_iftop.py
│ ├── test_ini.py
│ ├── test_ini_dup.py
│ ├── test_iostat.py
│ ├── test_iostat_s.py
│ ├── test_ip_address.py
│ ├── test_ip_route.py
│ ├── test_ipconfig.py
│ ├── test_iptables.py
│ ├── test_iw_scan.py
│ ├── test_iwconfig.py
│ ├── test_jar_manifest.py
│ ├── test_jc.py
│ ├── test_jc_cli.py
│ ├── test_jc_lib.py
│ ├── test_jc_streaming.py
│ ├── test_jc_utils.py
│ ├── test_jobs.py
│ ├── test_jwt.py
│ ├── test_kv.py
│ ├── test_kv_dup.py
│ ├── test_last.py
│ ├── test_ls.py
│ ├── test_ls_s.py
│ ├── test_lsattr.py
│ ├── test_lsb_release.py
│ ├── test_lsblk.py
│ ├── test_lsmod.py
│ ├── test_lsof.py
│ ├── test_lspci.py
│ ├── test_lsusb.py
│ ├── test_m3u.py
│ ├── test_mdadm.py
│ ├── test_mount.py
│ ├── test_mpstat.py
│ ├── test_mpstat_s.py
│ ├── test_needrestart.py
│ ├── test_net_localgroup.py
│ ├── test_net_user.py
│ ├── test_netstat.py
│ ├── test_nmcli.py
│ ├── test_nsd_control.py
│ ├── test_ntpq.py
│ ├── test_openvpn.py
│ ├── test_os_prober.py
│ ├── test_os_release.py
│ ├── test_pacman.py
│ ├── test_passwd.py
│ ├── test_path.py
│ ├── test_path_list.py
│ ├── test_pci_ids.py
│ ├── test_pgpass.py
│ ├── test_pidstat.py
│ ├── test_pidstat_s.py
│ ├── test_ping.py
│ ├── test_ping_s.py
│ ├── test_pip_list.py
│ ├── test_pip_show.py
│ ├── test_pkg_index_apk.py
│ ├── test_pkg_index_deb.py
│ ├── test_plist.py
│ ├── test_postconf.py
│ ├── test_proc.py
│ ├── test_proc_buddyinfo.py
│ ├── test_proc_cmdline.py
│ ├── test_proc_consoles.py
│ ├── test_proc_cpuinfo.py
│ ├── test_proc_crypto.py
│ ├── test_proc_devices.py
│ ├── test_proc_diskstats.py
│ ├── test_proc_driver_rtc.py
│ ├── test_proc_filesystems.py
│ ├── test_proc_interrupts.py
│ ├── test_proc_iomem.py
│ ├── test_proc_ioports.py
│ ├── test_proc_loadavg.py
│ ├── test_proc_locks.py
│ ├── test_proc_meminfo.py
│ ├── test_proc_modules.py
│ ├── test_proc_mtrr.py
│ ├── test_proc_net_arp.py
│ ├── test_proc_net_dev.py
│ ├── test_proc_net_dev_mcast.py
│ ├── test_proc_net_if_inet6.py
│ ├── test_proc_net_igmp.py
│ ├── test_proc_net_igmp6.py
│ ├── test_proc_net_ipv6_route.py
│ ├── test_proc_net_netlink.py
│ ├── test_proc_net_netstat.py
│ ├── test_proc_net_packet.py
│ ├── test_proc_net_protocols.py
│ ├── test_proc_net_route.py
│ ├── test_proc_net_tcp.py
│ ├── test_proc_net_unix.py
│ ├── test_proc_pagetypeinfo.py
│ ├── test_proc_partitions.py
│ ├── test_proc_pid_fdinfo.py
│ ├── test_proc_pid_io.py
│ ├── test_proc_pid_maps.py
│ ├── test_proc_pid_mountinfo.py
│ ├── test_proc_pid_numa_maps.py
│ ├── test_proc_pid_smaps.py
│ ├── test_proc_pid_stat.py
│ ├── test_proc_pid_statm.py
│ ├── test_proc_pid_status.py
│ ├── test_proc_slabinfo.py
│ ├── test_proc_softirqs.py
│ ├── test_proc_stat.py
│ ├── test_proc_swaps.py
│ ├── test_proc_uptime.py
│ ├── test_proc_version.py
│ ├── test_proc_vmallocinfo.py
│ ├── test_proc_vmstat.py
│ ├── test_proc_zoneinfo.py
│ ├── test_ps.py
│ ├── test_resolve_conf.py
│ ├── test_route.py
│ ├── test_route_print.py
│ ├── test_rpm_qai.py
│ ├── test_rsync.py
│ ├── test_rsync_s.py
│ ├── test_semver.py
│ ├── test_sfdisk.py
│ ├── test_shadow.py
│ ├── test_srt.py
│ ├── test_ss.py
│ ├── test_ssh_conf.py
│ ├── test_sshd_conf.py
│ ├── test_stat.py
│ ├── test_stat_s.py
│ ├── test_swapon.py
│ ├── test_sysctl.py
│ ├── test_syslog.py
│ ├── test_syslog_bsd.py
│ ├── test_syslog_bsd_s.py
│ ├── test_syslog_s.py
│ ├── test_systemctl.py
│ ├── test_systemctl_lj.py
│ ├── test_systemctl_ls.py
│ ├── test_systemctl_luf.py
│ ├── test_systeminfo.py
│ ├── test_time.py
│ ├── test_timedatectl.py
│ ├── test_timestamp.py
│ ├── test_toml.py
│ ├── test_top.py
│ ├── test_top_s.py
│ ├── test_tracepath.py
│ ├── test_traceroute.py
│ ├── test_traceroute_s.py
│ ├── test_tune2fs.py
│ ├── test_udevadm.py
│ ├── test_ufw.py
│ ├── test_ufw_appinfo.py
│ ├── test_uname.py
│ ├── test_update_alt_gs.py
│ ├── test_update_alt_q.py
│ ├── test_upower.py
│ ├── test_uptime.py
│ ├── test_url.py
│ ├── test_ver.py
│ ├── test_veracrypt.py
│ ├── test_vmstat.py
│ ├── test_vmstat_s.py
│ ├── test_w.py
│ ├── test_wc.py
│ ├── test_wg_show.py
│ ├── test_who.py
│ ├── test_x509_cert.py
│ ├── test_x509_crl.py
│ ├── test_x509_csr.py
│ ├── test_xml.py
│ ├── test_xrandr.py
│ ├── test_yaml.py
│ ├── test_zipinfo.py
│ ├── test_zpool_iostat.py
│ ├── test_zpool_status.py
│ └── utils_for_test.py
└── updatedocs.sh
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
__pycache__
*.pyc
dist/
build/
*.egg-info/
.github/
.vscode/
_config.yml
.venv
.DS_Store
================================================
FILE: CHANGELOG
================================================
jc changelog
202501012 v1.25.6
- Add `net-localgroup` Windows command parser
- Add `net-user` Windows command parser
- Add `route-print` Windows command parser
- Add `traceroute-s` streaming command parser
- Add `max_hops` and `data_bytes` fields to `traceroute` command parser
- Add `x509-crl` file parser to support Certificate Revocation List PEM and DER files
- Add `yay` as a magic command for the `pacman` command parser
- Fix `bluetoothctl` command parser to support output with the `cable_pairing` attribute
- Fix `nmcli` command parser to support blank `team.config` JSON value and `team-port.config` JSON value
- Fix `top` command parsers to correct memory size field parsing. Several new unit
and byte conversion fields have been added
- Fix `who` command parser to support the `process` field on Debian13
20250503 v1.25.5
- Add `amixer` command parser
- Enhance `iptables` command parser to add default policy statistics fields
- Fix `bluetoothctl` parser failing to parse controllers with power state prop
- Fix `lsblk` command parser to support multiple mountpoints. Also, added
byte conversions for size fields.
- Fix `nmcli` command parser to support `team.config` JSON field
- Fix `time` command parser for output that does not contain centiseconds
- Fix `x509-cert` parser to handle IDNA2008 encoded email addresses with a warning
- Fix typing for upcoming python v3.14
- Fix timezone setting for tests to support minimal chrooted builds
20241125 v1.25.4
- Add `ipconfig` command parser (`ipconfig` for Windows)
- Add `pacman` command parser
- Add `wg show` command parser
- Enhance `ethtool` parser to support `link_partner_advertised_link_modes`
- Enhance `ifconfig` parser to support `utun` interfaces with assigned IPv4 addresses on macOS
- Enhance `nsd-control` parser with additional state fields
- Enhance `ping-s` streaming parser to support error replies
- Fix `bluetoothctl` parser when extra attributes like `manufacturer` and `version` exist
- Fix `df` parser to correctly output binary vs. decimal size outputs
- Fix `ip-address` parser for Python 3.13 changes to IPv4 mapped IPv6 addresses
- Fix `iw-scan` parser to output more fields (still beta quality)
- Fix `mount` parser for cases where there are spaces in the filesystem name
- Fix `netstat` parser for cases where there are spaces in the program name
- Fix `pkg-index-deb`, `apt-cache-show`, and `rpm-qi` parsers to correctly convert contiguous packages with the same name
- Fix `traceroute` parser to support extreme IPv6 cases
- Fix `uptime` parser for data that contains `user` instead of `users`
- Fix `yaml` parser to support values that start with an equal sign
- Enhance `jc.utils.convert_size_to_int()` to add `posix_mode` and `decimal_bias` parameters
- Enhance cli to coerce any non-JSON-serializable objects to a string
20240609 v1.25.3
- Enhance `bluetoothctl` parser with added `battery_percentage` field
- Enhance `git-log` standard and streaming parsers with added `lines_changed` field under `file_stats`
- Fix `lspci` parser to handle `physlot` fields with a range value
- Fix `pci-ids` parser to correctly handle multiple subdevices
- Fix `pip-show` parser to handle multi-line fields with a beginning blank line
- Fix `ss` parser to correctly handle the `Recv-Q` field being too close to the `Status` field
- Fix `top` parsers to quiet uptime info parsing
- Fix `traceroute` parser to correctly handle hops with multiple IPs
- Fix `zpool-status` parser for config items lacking data values
- Optimize some tests by removing timezone settings and using quiet=True
- Documentation updates
20240323 v1.25.2
- Add `apt-cache-show` command parser
- Add `apt-get-sqq` command parser
- Add `ethtool` command parser
- Add `needrestart` command parser
- Enhance `df` parser to add human readable output support. Note: the `size`
field has been changed to an integer and all size values have been normalized
to bytes.
- Enhance `free` parser to add human readable output support. All size values
have been normalizd to bytes.
- Enhance `iptables` parser to handle -x output
- Enhance `/proc/pid/stat` parser to support "Idle" state
- Enhance `rpm_qi` and `pkg_index_deb` parsers to split list fields into arrays
- Fix `iwconfig` parser to handle more special characters in the SSID name
- Fix `xrandr` parser to ignore extra horizontal and vertical stats lines
- Add aarch64 binaries to Releases for macOS and Linux
- Documentation and doc build updates
20240212 v1.25.1
- Fix for crash when optional libraries are not installed (e.g. xmltodict)
- Fix for `ini` parser crashing with some keys with no values
- Fix `xrandr` parser to extract more EDID data
- Enhance `uptime` parser to support output with no user information
- Enhance `--quiet` CLI option to cover more warning messages
- Add tests for missing optional libraries
- Documentation updates
20240204 v1.25.0
- Add `--slurp` functionality to wrap output from multiple lines into a single array.
Note, this only works with single-line input parsers. (e.g. `date`, `ip-address`, `url`, etc.)
Streaming parsers are not supported. Use `jc -hhh` to find parsers compatible with the slurp option.
- Enhance `/proc` file magic syntax to allow slurping when multiple files are selected
and to include the `_file` metadata field in the data
- Enhance `--meta-out` functionality to include a list of the input data when using `--slurp`
or `/proc` file magic syntax. For slurpable parsers, this is a list of string inputs in order.
For `/proc` file magic syntax, this is a list of `/proc` filenames in order. This can help with
identifying which input matches to which output when using `--slurp` or when converting multiple
files via `/proc` file magic syntax.
- Add `curl-head` command parser for `curl --head` or `curl -I` with verbose support
- Add `efibootmgr` command parser
- Add `http-headers` parser for plain HTTP header output
- Add `kv-dup` parser for Key/Value files with duplicate keys
- Add `path` string parser to parse posix path
- Add `path-list` string parser to parse path list strings found in env variables
- Add source link to online parser documentation
- Add snap package build scripts
- Add `remove_quotes` function to `utils.py`
- Add `normalize_key` function to `utils.py`
- Add `line_slice` function to `utils.py`
- Add `get_parser` function to `lib.py`
- Enhance `nsd-control` parser to support more zone information
- Enhance `ping` and `ping-s` parsers to support the `-I` command option
- Enhance `proc-net-tcp` parser to add opposite endian support for architectures
like the s390x
- Enhance `url` parser to add `parent`, `filename`, `stem`, and `extension` fields
- Fix `ini` and `ini-dup` parsers to consistently handle null values as empty strings
- Fix line slicer to not skip blank lines
- Refactor parser aliases for `kv`, `pkg_index_deb`, `lsb_release`, and `os-release`
- Update copyright date
20231216 v1.24.0
- Add `debconf-show` command parser
- Add `iftop` command parser
- Add `pkg-index-apk` parser for Alpine Linux Package Index files
- Add `pkg-index-deb` parser for Debian/Ubuntu Package Index files
- Add `proc-cmdline` parser for `/proc/cmdline` file
- Add `swapon` command parser
- Add `tune2fs` command parser
- Remove `iso-datetime` parser deprecated since v1.22.1. (use `datetime-iso` instead)
- Update timezone change in Github Actions for node v16 requirement
- Add Python 3.12 tests to Github Actions
- Refactor `acpi` command parser for code cleanup
- Refactor vendored libraries to remove Python 2 support
- Fix `iptables` parser for cases where the `target` field is blank in a rule
- Fix `vmstat` parsers for some cases where wide output is used
- Fix `mount` parser for cases with spaces in the mount point name
- Fix `xrandr` parser for infinite loop issues
20231023 v1.23.6
- Fix XML parser for xmltodict library versions < 0.13.0
- Fix `who` command parser for cases when the from field contains spaces
20231021 v1.23.5
- Add `host` command parser
- Add `nsd-control` command parser
- Add `lsb_release` command parser
- Add `/etc/os-release` file parser
- Enhance `env` command parser to support multi-line values
- Enhance `ping` and `ping-s` parsers to add error and corrupted support
- Enhance `xml` parser to include comments in the JSON output
- Fix `pidstat` command parser when using `-T ALL`
- Fix `x509-cert` parser to allow negative serial numbers
- Fix `x509-cert` parser for cases when bitstrings are larger than standard
- Fix `xrandr` command parser for associated device issues
- Fix error when pygments library is not installed
20230730 v1.23.4
- Add `/etc/resolve.conf` file parser
- Add `/proc/net/tcp` and `/proc/net/tcp6` file parser
- Add `find` command parser
- Add `ip route` command parser
- Fix `certbot` command parser to be more robust with different line endings
20230621 v1.23.3
- Add `lsattr` command parser
- Add `srt` file parser
- Add `veracrypt` command parser
- Add X509 Certificate Request file parser
- Enhance X509 Certificate parser to allow non-compliant email addresses with a warning
- Enhance `dig` command parser to support the `+nsid` option
- Enhance `last` and `lastb` command parser to support the `-x` option
- Enhance `route` command parser to add Windows support
- Enhnace `netstat` command parser to add Windows support
- Enhance `ss` command parser to support extended options
- Enhance the compatibility warning message
- Fix `bluetoothctl` command parser for some mouse devices
- Fix `ping` command parsers for output with missing hostname
- Fix `stat` command parser for older versions that may not contain all fields
- Fix deprecated option in `setup.cfg`
20230429 v1.23.2
- Add `bluetoothctl` command parser
- Add `certbot` command parser for `certificates` and `show_account` options
- Fix `acpi` command parser for "Not charging" battery status lines
- Fix `iwconfig` command parser for SSIDs with dashes in the name
- Fix `crontab` command parsers for incorrect variable parsing in some cases
- Fix `git-log` and `git-log-s` command parsers for incorrect insertion/deletion parsing
- Fix `ufw-appinfo` command parser for parsing errors on multiline description fields
- Fix pytest warnings
20230323 v1.23.1
- Fix `zpool-status` command parser for lines that start with tab
- Fix `timedatectl` command parser when RTC set to local
- Fix to ensure `py.typed` file is included in the package wheel
- Fix `lsusb` command parser to support CDC MBIM and CDC MBIM Extended fields
- Add support for the `timesync-status` for the `timedatectl` command parser
- Fix to ignore non-parser-plugins in the parser plugin directory
20230227 v1.23.0
- Add input slicing as a `jc` command-line option
- Add `ssh` configuration file parser
- Add `ver` Version string parser
- Add `zpool iostat` command parser
- Add `zpool status` command parser
- Fix `acpi` command parser for "will never fully discharge" battery state
- Fix `crontab` and `crontab-u` command and file parsers for cases where only
shortcut schedule items exist
- Fix `ifconfig` command parser for older-style linux output
- Fix `xrandr` command parser for proper `is_current` output
- Fix `xrandr` command parser for infinite loop with some device configurations
- Add `reflection` key to `xrandr` parser schema
- Add display model info from EDID to `xrandr` parser
- Add `MPX-specific VMA` support for VM Flags in `/proc/<pid>/smaps` parser
20230111 v1.22.5
- Add TOML file parser
- Add INI with duplicate key support file parser
- Add AIX support for the `arp` command parser
- Add AIX support for the `mount` command parser
- Fix `lsusb` command parser when extra hub port status information is output
- Refactor `lsusb` command parser for more code reuse
- Fix INI file parser to include top-level values with no section header
- Fix INI file parser to not specially handle the [DEFAULT] section
- Fix INI file and Key/Value parsers to only remove one quotation mark from the
beginning and end of values.
- Update copyright dates
20221230 v1.22.4
- Add `iwconfig` command parser
- Add NeXTSTEP format support to the PLIST file parser
- Fix `proc` parser magic signature detection for `/proc/pid/stat` hacks
- Fix `x509-cert` parser for string serial numbers
- Add category tags to parser metadata: generic, standard, file, string, binary, command
- Add "list parsers by category" view to help
- Fix python 3.6-related issues
- Add python 3.6 to automated tests
20221216 v1.22.3
- Add Common Log Format and Combined Log Format file parser (standard and streaming)
- Add PostgreSQL password file parser
- Add openvpn-status.log file parser
- Add `cbt` command parser (Google Big Table)
- Enhance `ifconfig` parser with interface lane information on BSD
- Enhance `ifconfig` parser with additional IPv6 `scope_id` info for BSD
- Fix `ifconfig` parser to capture some IPv6 addresses missed on BSD
- Fix `git-log` and `git-log-s` parsers for failure on empty author name
- Update `os-prober` parser with split EFI partition fields
- Add ISO string attribute (`.iso`) to `jc.utils.timestamp()`
- Fix several documentation typos
20221107 v1.22.2
- add `sshd_conf` parser for `sshd` configuration files and `sshd -T` output
- add `findmnt` command parser
- add `git ls-remote` command parser
- add `os-prober` command parser
- add SemVer string parser
- enhance the `ifconfig` parser so it can output multiple IPv4 and IPv6 addresses
- enhance the `ifconfig` parser so it can output additional fields common on BSD
- enhance `xml` parser with optional `_` prefix for attributes instead of
`@` by using the `--raw` option. This can make it easier to filter the
JSON output in some tools.
- fix the `xml` parser to output a normal Dictionary instead of OrderdDict.
This cleans up YAML output. (No `!!omap` comments)
- fix `csv` and `csv-s` parsers for UTF-8 encoded CSV files with leading BOM bytes
- fix exit code to be non-zero on interrupt
- allow parser module objects to be used as arguments to `jc.get_help()` and `jc.parser_info()`
- catch unexpected exceptions in the CLI
- add error message on interrupt to STDERR
- add python 3.11 tests to github actions
20221024 v1.22.1
- add `udevadm` command parser
- add `lspci` command parser
- add `pci.ids` file parser
- fix `proc-pid-stat` parser for command names with spaces and newlines
- enhance `ip-address` parser to add `ip_split` field
- rename `iso-datetime` parser to `datetime-iso`. A deprecation warning will
display until `iso-datetime` is removed in a future version.
- refactor cli module
- optimize performance of calculated timestamps
- add more type annotations
- add support for deprecating parsers
- move jc-web demo site from heroku to render.com
20220926 v1.22.0
- Add /proc file parsers for linux. Support for the following files:
`/proc/buddyinfo`
`/proc/consoles`
`/proc/cpuinfo`
`/proc/crypto`
`/proc/devices`
`/proc/diskstats`
`/proc/filesystems`
`/proc/interrupts`
`/proc/iomem`
`/proc/ioports`
`/proc/loadavg`
`/proc/locks`
`/proc/meminfo`
`/proc/modules`
`/proc/mtrr`
`/proc/pagetypeinfo`
`/proc/partitions`
`/proc/slabinfo`
`/proc/softirqs`
`/proc/stat`
`/proc/swaps`
`/proc/uptime`
`/proc/version`
`/proc/vmallocinfo`
`/proc/vmstat`
`/proc/zoneinfo`
`/proc/driver/rtc`
`/proc/net/arp`
`/proc/net/dev`
`/proc/net/dev_mcast`
`/proc/net/if_inet6`
`/proc/net/igmp`
`/proc/net/igmp6`
`/proc/net/ipv6_route`
`/proc/net/netlink`
`/proc/net/netstat`
`/proc/net/packet`
`/proc/net/protocols`
`/proc/net/route`
`/proc/net/unix`
`/proc/<pid>/fdinfo/<fd>`
`/proc/<pid>/io`
`/proc/<pid>/maps`
`/proc/<pid>/mountinfo`
`/proc/<pid>/numa_maps`
`/proc/<pid>/smaps`
`/proc/<pid>/stat`
`/proc/<pid>/statm`
`/proc/<pid>/status`
- Magic syntax support for `/proc` files
- Enhance bash and zsh autocompletions for `/proc` files
- Enhance `free` parser to support `-w` option integer conversions
- Fix `ini` and `kv` parsers so they don't change keynames to lower case
NOTE: This can be a breaking change in your scripts
- Fix `id` command parser to allow usernames and groupnames with spaces
- Enhance metadata output to output metadata even when results are empty
- Optimize tests
- Optimize documentation build script
20220829 v1.21.2
- Fix IP Address string parser for older python versions that don't cleanly
accept decimal input format - IPv6 fix (e.g. python 3.6)
20220828 v1.21.1
- Fix IP Address string parser for older python versions that don't cleanly
accept decimal input format - IPv4 fix (e.g. python 3.6)
- Fix `arp -a` parser for cases where incomplete hardware addresses are found
in the arp table on linux
20220821 v1.21.0
- Add IP Address string parser
- Add Syslog standard and streaming string parsers (RFC 3164 and RFC 5424)
- Add CEF standard and streaming string parser
- Add PLIST file parser (XML and binary support)
- Add `-n` support to the `traceroute` parser
- Add `mdadm` command parser tested on linux
- Add `--meta-out` or `-M` option to add metadata to the JSON output, including
a UTC timestamp, parser name, magic command, and magic command exit code
- Fix `lsusb` command parser for output containing a `Device Qualifier` and
`Binary Object Store Descriptor` sections
- Change `LANG=C` to `LC_ALL=C` in locale instructions
- Add `__main__.py` to package allowing `python -m jc` usage
- Add an enclosing top-level folder inside the windows.zip package
20220723 v1.20.4
- Fix URL string parser path list for URLs ending in a forward slash
20220723 v1.20.3
- Add URL string parser
- Add Email Address string parser
- Add JWT string parser
- Add ISO 8601 Datetime string parser
- Add UNIX Epoch Timestamp string parser
- Add M3U/M3U8 file parser
- Add pager functionality to help (parser documentation only)
- Minor parser performance optimizations
20220705 v1.20.2
- Add `gpg --with-colons` parser tested on linux
- Add DER and PEM encoded X.509 Certificate parser
- Add Bash and Zsh completion scripts to DEB and RPM packages
20220615 v1.20.1
- Add `postconf -M` parser tested on linux
- Update `asciitable` and `asciitable-m` parsers to preserve case in key
names when using the `-r` or `raw=True` options.
- Add long options (e.g. `--help`, `--about`, `--pretty`, etc.)
- Add shell completions for Bash and Zsh
- Fix `id` parser for cases where the user or group name is not present
20220531 v1.20.0
- Add YAML output option with `-y`
- Add `top -b` standard and streaming parsers tested on linux
- Add `plugin_parser_count`, `standard_parser_count`, and `streaming_parser_count`
keys to `jc -a` output
- Add `is_compatible` function to the `utils` module
- Fix `pip-show` parser for packages with a multi-line license field
- Fix ASCII Table parser for cases where centered headers cause mis-aligned fields
20220513 v1.19.0
- Add `chage --list` command parser tested on linux
- Add `git log` command streaming parser
- Fix `git log` standard parser for corner-cases where hash values are in messages
- Fix `df` command parser for rare instances when a newline is found at the end
- Allow jc to pip install on unsupported python version 3.6
- Fix `asciitable-m` parser to skip some rows that contain column separator
characters in cell data. A warning message will be printed to STDERR
unless `-q` or `quiet=True` is used.
20220427 v1.18.8
- Fix `update-alternatives --query` parser for cases where `slaves` are not present
- Fix UnicodeEncodeError on some systems where LANG=C is set and unicode
characters are in the output
- Update `history` parser: do not drop non-ASCII characters if the system
is configured for UTF-8 encoding
- Enhance "magic syntax" to always use UTF-8 encoding
20220425 v1.18.7
- Add `git log` command parser
- Add `update-alternatives --query` parser
- Add `update-alternatives --get-selections` parser
- Fix key/value and ini parsers to allow duplicate keys
- Fix yaml file parser for files including timestamp objects
- Update `xrandr` parser: add a 'rotation' field
- Fix failing tests by moving template files
- Add python interpreter version and path to -v and -a output
20220325 v1.18.6
- Add `pidstat` command parser tested on linux
- Add `pidstat` command streaming parser tested on linux
- Add `mpstat` command parser tested on linux
- Add `mpstat` command streaming parser tested on linux
- Add single-line ASCII and Unicode table parser
- Add multi-line ASCII and Unicode table parser
- Add documentation option to `parser_info()` and `all_parser_info()`
20220305 v1.18.5
- Fix date parser to ensure AM/PM period string is always uppercase
20220304 v1.18.4
- Add nmcli command parser tested on linux
- Enhance parse error messages at the cli
- Add standard and streaming parser list functions to the public API
- Enhance python developer documentation formatting
20220214 v1.18.3
- Add rsync command and log file parser tested on linux and macOS
- Add rsync command and log file streaming parser tested on linux and macOS
- Add xrandr command parser tested on linux
- Enhance timestamp performance with caching and format hints
- Refactor ignore_exceptions functionality in streaming parsers
- Fix man page in packages
20220127 v1.18.2
- Fix for plugin parsers with underscores in the name
- Add type hints to public API functions
- Add plugin attribute to plugin parser metadata
- Add C locale hint to parsing error messages
- Refactor more cli code into lib
20220121 v1.18.1
- Minor fix for MacOS binary
20220121 v1.18.0
- Add high-level parse API for built-in and plugin parsers
- Add python module developer documentation
- Enhance magic syntax exception messages
- Enhance documentation formatting
20220106 v1.17.7
- Add stat command streaming parser tested on linux and macOS
20220103 v1.17.6
- Add jar-manifest file parser (for MANIFEST.MF files)
- Fix CSV parsers for some files that include doublequotes
20211221 v1.17.5
- Add zipinfo parser tested on linux and macOS
20211207 v1.17.4
- Add support for the NO_COLOR environment variable to set mono (http://no-color.org/)
- Add -C option to force color output even when using pipes (overrides -m and NO_COLOR)
20211202 v1.17.3
- Update parsers to exit with error if non-string input is detected (raise TypeError)
- Update streaming parsers to exit with error if non-iterable input is detected (raise TypeError)
- Simplify quiet-checking in parsers
- Add iostat parser tested on linux
- Add iostat streaming parser tested on linux
20211117 v1.17.2
- Fix ping parser to add Alpine linux support
- Fix netstat parser for older versions of netstat on linux
- Fix df parser for cases where the filesystem field overflows the column length
20211030 v1.17.1
- Fix file parser for gzip files
- Fix uname parser for cases where the 'processor' and/or 'hardware_platform' fields are missing on linux
- Fix uname parser on FreeBSD
- Add lsusb parser tested on linux
- Add CSV file streaming parser
- Add testing for Python 3.10.0
20210923 v1.17.0
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Add wrapping of warning and error messages
- Add vmstat parser tested on linux
- Add support for streaming parsers
- Add ls command streaming parser tested on linux, macOS, and freeBSD
- Add ping command streaming parser tested on linux, macOS, and freeBSD
- Add vmstat command streaming parser tested on linux
- Add -u option to allow unbuffered output
20210830 v1.16.2
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Update sfdisk parser to support the -F option and newer versions of sfdisk
20210813 v1.16.1
- Note to Package Maintainers: please see note at 20210720 v1.16.0
- Fix issue with process substitution with the magic syntax
- Fix issue with globs not including filenames with spaces with magic syntax
- Fix stat parser to properly handle filenames with spaces on macOS/BSD
20210720 v1.16.0
- Note to Package Maintainers:
TL;DR: `/man/jc.1.gz` and `/jc/man/jc.1.gz` are deprecated and only `/man/jc.1` should be used.
The Man page in the PyPi source packages will be moving from `/jc/man/jc.1.gz` to `/man/jc.1`
in version 1.17.0. For now the Man pages will be available in both locations, but be aware that
the Man page at `/jc/man/jc.1.gz` is now considered deprecated.
Also, starting in v1.17.0, the Man page will no longer be compressed in the source package,
therefore `/man/jc.1.gz` should also be considered deprecated and will no longer be available
after v1.17.0. Please use `/man/jc.1` and compress downstream if you would like.
- Include CHANGELOG in source distribution
- Fix Man page location in source packages
- Add sfdisk command parser tested on linux
- Update unit test files to change the timezone when needed (POSIX only)
- Binaries and DEB/RPM/MSI packages now include Python 3.9.5 interpreter
20210628 v1.15.6
- Fix issue to only load local plugin parsers that have filenames that end in .py
20210520 v1.15.5
- Fix issue where help and about information would not display if a 3rd party parser library was missing. (e.g. xmltodict)
- Add more error message detail when encountering ParseError and LibraryNotFound exceptions
20210517 v1.15.4
- Update ping parser to support error responses in OSX and BSD
- Update ping parser to be more resilient against parsing errors for unknown error types
- Update dig parser to support `+noall +answer` use case
- Update dig parser compatibility to all platforms
- Fix colors in Windows terminals (cmd.exe and PowerShell)
- Fix epoch calculations when UTC is referenced as "Coordinated Universal Time"
- Add Windows time format for systeminfo output
- Add exceptions module to standardize parser exceptions
- JC no longer swallows exit codes when using the "magic" syntax. See the Exit Codes section of the README and man page for details
20210426 v1.15.3
- Add ufw status command parser tested on linux
- Add ufw-appinfo command parser tested on linux
- Fix deb package name to conform to standard
- Add Caveats section to readme and manpage
20210418 v1.15.2
- Add systeminfo parser tested on Windows
- Update dig parser to fix an issue with IPv6 addresses in the server field
- Update dig parser to fix an issue when axfr entries contain a semicolon
- Update dig parser to add support for Additional Section and Opt Pseudosection
- Update dig parser to add query_size field
- Use dig parser as the main example in readme, documentation, and man page
- Standardize int, float, and boolean conversion rules with functions in jc.utils
20210413 v1.15.1
- New feature to show parser documentation interactively with -h --parser_name
for example: $ jc -h --arp
- Add man page to pypi package for easier packaging in homebrew
- Update rpm-qi parser to add two calculated timestamp fields: install_date_epoch and install_date_epoch_utc
- Clean up documentation and autogenerate the Parser Information section from metadata
20210407 v1.15.0
- Add acpi command parser tested on linux
- Add upower command parser tested on linux
- Add /usr/bin/time command parser tested on linux and macOS
- Add dpkg -l command parser tested on linux
- Add rpm -qi command parser tested on linux
- Add finger command parser tested on linux and macOS
- Add dir command parser tested on Windows 10
- Update date parser: complete rewrite (v2.0) providing many enhancements:
- Make weekday numbering ISO 8601 compliant
- Add a calculated naive timestamp field
- Add a calculated UTC timestamp field (only if date output is in UTC)
- Add several fields, including: hour_24, utc_offset, day_of_year, week_of_year, iso, and timezone_aware
- Update uptime parser to add uptime_days, uptime_hours, uptime_minutes, uptime_total_seconds, time_hour,
time_minute, and time_second fields
- Update last parser to use new timestamp function
- Update stat parser to add access_time_epoch, access_time_epoch_utc, modify_time_epoch, modify_time_epoch_utc,
change_time_epoch, change_time_epoch_utc, birth_time_epoch, birth_time_epoch_utc fields
- Update timedatectl parser to add epoch_utc field
- Update who parser to add epoch field
- Update dig parser to add when_epoch and when_epoch_utc fields
- Update ls parser to add epoch and epoch_utc fields
- Add -h option to display the help text. Piping errors no longer show the help text.
- Add -v option to display version information.
- Add contributing information to project root
- Make all external python library dependencies optional: pygments, ruamel.yaml, xmltodict
- JSON output now supports unencoded unicode characters
- JSON output is now more compact unless the -p (pretty) option is used
- Developer scripts added and enhanced to automate documentation and man page creation
- Enhanced man page
20210305 v1.14.4
- Packaging fix only for binaries and RPMs hosted on https://github.com/kellyjonbrazil/jc-packaging.
Packages from PyPi and OS repositories are not affected. This fixes an issue that kept the YAML
parser from initializing.
20210210 v1.14.3
- Add hciconfig parser tested on linux
- Update dig parser to simplify answer data logic
20210205 v1.14.2
- Update dig parser to fix cases where there are spaces in the answer data (e.g. TXT records)
20210106 v1.14.1
- Add iw-scan parser tested on linux (beta)
- Update date parser for Ubuntu 20.04 support
- Update last parser for last -F support
- Update last parser to add convenience fields and augment data for easier parsing
- Update man page
- Minor documentation updates
20201231 v1.14.0
- Add hashsum parser tested on linux, macos
- Add hash parser tested on linux, macos
- Add cksum parser tested on linux, macos
- Add wc parser tested on linux, macos
- Add printenv support under env parser
- Add vdir support under ls parser
- Add python 3.9 to github automation tests
20200805 v1.13.4
- Update crontab and crontab-u parsers to tighten up variable detection
- Update ping parser to tighten linux/bsd detection
20200804 v1.13.3
- Update ping parser for Raspberry Pi compatibility
20200803 v1.13.2
- Add key/value file parser (wrapper for ini parser)
- Add date command parser
- Update traceroute parser to more gracefully handle missing header row
- Update traceroute parser to handle annotations
- Update traceroute parser to only return successful probes
20200727 v1.13.1
- Add route -6 tests
20200727 v1.13.0
- Add ping and ping6 command parser tested on linux, macos, and freebsd
- Add traceroute and traceroute6 command parser tested on linux, macos, and freebsd
- Add tracepath command parser tested on linux
- Update ini parser to support files only containing key/value pairs
- Update uname parser exception with a hint to use "uname -a"
- Update route parser to support IPv6 tables
20200711 v1.12.1
- Fix tests when using older version of pygments library
20200710 v1.12.0
- Add sysctl command parser tested on linux, macOS, and freebsd
- Update the cli code to allow older versions of the pygments library (2.3.0) for debian packaging
- Code cleanup on the cli
- Add tests for the cli
- Vendorize cgitb as tracebackplus for verbose debug messages
20200625 v1.11.8
- Add verbose debug option using -dd argument
20200622 v1.11.7
- Fix iptables parser issue which would not output the last chain
20200614 v1.11.6
- Improve and standardize empty data check for all parsers
20200612 v1.11.5
- Update airport_s parser to fix error on parsing empty data
- Update arp parser to fix error on parsing empty data
- Update blkid parser to fix error on parsing empty data
- Update crontab parser to fix error on parsing empty data
- Update crontab_u parser to fix error on parsing empty data
- Update df parser to fix error on parsing empty data
- Update free parser to fix error on parsing empty data
- Update lsblk parser to fix error on parsing empty data
- Update lsmod parser to fix error on parsing empty data
- Update mount parser to fix error on parsing empty data
- Update netstat parser to fix error on parsing empty data
- Update ntpq parser to fix error on parsing empty data
- Update ps parser to fix error on parsing empty data
- Update route parser to fix error on parsing empty data
- Update systemctl parser to fix error on parsing empty data
- Update systemctl_lj parser to fix error on parsing empty data
- Update systemctl_ls parser to fix error on parsing empty data
- Update systemctl_luf parser to fix error on parsing empty data
- Update uptime parser to fix error on parsing empty data
- Update w parser to fix error on parsing empty data
- Update xml parser to fix error on parsing empty data
- Add tests to all parsers for no data condition
- Update ss parser to fix integer fields
20200610 v1.11.4
- Update ls parser to fix error on parsing an empty directory
20200609 v1.11.3
- Add local parser plugin feature (contributed by Dean Serenevy)
20200530 v1.11.2
- Update netstat parser to add freebsd support
- Update netstat parser to add route_flags_pretty field
- Update netstat parser to change osx_inode field name to unix_inode
- Update netstat parser to change osx_flags field name to unix_flags
- Update netstat parser to strip whitespace from state field
- Update route parser to add flags_pretty field
- Update arp parser to add permanent field (freebsd and osx)
- Update arp parser to add expires field (freebsd)
- Update w parser to strip whitespace from what field
- Update last parser to fix FreeBSD issues
- Update stat parser to change osx_flags field name to unix_flags
- Update stat parser to add unix_device field for freebsd and osx
- Fix freebsd compatibility message for df, fstab, mount, ntpq, stat, and uname parsers
- Fix compatibility message for platforms that include the version number at the end (e.g. freebsd12)
20200523 v1.11.1
- Update stat command parser to change osx_flags field to string
20200522 v1.11.0
- Add dmidecode command parser
- Update stat command parser to add OSX support
- Update netstat command parser to add OSX support
- Update netstat command parser to add -r (route) functionality for linux and OSX
- Update netstat command parser to add -i (interface) functionality for linux and OSX
20200511 v1.10.12
- Remove shebang from jc/cli.py for Fedora packaging
20200511 v1.10.11
- Change file permissions for Fedora packaging
20200509 v1.10.10
- Fix ls parser issue where the first file was skipped for ls -R on some platforms
- Update last parser to handle 'gone - no logout' condition
- Update netstat parser to handle bluetooth section (ignore gracefully for now)
20200508 v1.10.9
- Add license info to vendorized ifconfig-parser class
20200508 v1.10.8
- Add license file to dist for Fedora RPM packaging requirements
- Remove tests from package to keep from polluting the global site-packages
20200501 v1.10.7
- Requirements modifications for Fedora RPM packaging requirements
20200420 v1.10.6
- Remove homebrew shim references from du osx tests
20200414 v1.10.5
- Minor change of using sys.exit(0) instead of exit()
20200412 v1.10.4
- Add color customization via JC_COLORS env variable
20200409 v1.10.3
- Fix break on pipe error
20200409 v1.10.2
- Change colors to ansi and match jello colors
20200402 v1.10.1
- Code cleanup
20200402 v1.10.0
- Add color output by default when not piping data to another program
- Add -m option for monochrome output
20200326 v1.9.3
- Add axfr support for dig command parser
20200312 v1.9.2
- Update arp parser to fix OSX detection for some edge cases
20200312 v1.9.1
- Update file command parser to make filename splitting more robust
20200311 v1.9.0
- Add ntpq command parser
- Add timedatectl status command parser
- Add airport -I and airport -s command parser
- Add file command parser
- Optimized history command parser by https://github.com/philippeitis
- Magic syntax fix for certain edge cases
20200308 v1.8.1
- CLI optimizations by https://github.com/philippeitis
- Refactored magic syntax function and added tests (https://github.com/philippeitis)
- Github actions for CI testing on multiple platforms by https://github.com/philippeitis
- Update ls parser to fix parsing error in OSX with -lR when there are empty folders
20200303 v1.8.0
- Add blkid command parser
- Add last and lastb command parser
- Add who command parser
- Add CSV file parser
- Add /etc/passwd file parser
- Add /etc/shadow file parser
- Add /etc/group file parser
- Add /etc/gshadow file parser
20200227 v1.7.5
- Update ls parser to support filenames with newline characters
20200219 v1.7.4
- Update ls parser to support multiple directories, globbing, and -R (recursive)
20200211 v1.7.3
- Add alternative 'magic' syntax: e.g. `jc ls -al`
- Options can now be condensed (e.g. -prq is equivalent to -p -r -q)
20200208 v1.7.2
- Include test fixtures in wheel and sdist
20200205 v1.7.1
- Add YAML file parser
- Add INI file parser
- Add XML file parser
- Add id parser (tested on linux and OSX)
- Add crontab file parser with user support (tested on linux)
- Add __version__ variable to parser modules
- Add exit code on error
- Update history parser to output "line" as an integer
- Update compatibility list for some parsers
- Bugfix in crontab file parser: header insertion was clobbering first row
- Just-in-time loading of parser modules instead of loading all at start
20191217 v1.6.1
- Add du parser (tested on linux and OSX)
- Add crontab parser (tested on linux and OSX)
- Add pip list parser (tested on linux and OSX)
- Add pip show parser (tested on linux and OSX)
- Add OSX support for the ifconfig, arp, df, mount, and uname parsers
- Add tests for ls, dig, ps, w, uptime on OSX
- Add about option
- Add universal parsers to refactor repetitive code
- Update ifconfig parser to output 'state' as an array
20191117 v1.5.1
- Add ss parser
- Add stat parser
- Add /etc/hosts parser
- Add /etc/fstab parser
- Add systemctl parser (includes list-jobs, list-sockets, and list-unit-files)
- Add -r and raw=True options. By default, jc will now convert numbers and boolean, if possible, and add other semantic information, while the raw output will keep all values as text and provide a more literal JSON output
- Add -q and quiet=True options to suppress warnings to stderr
- Add -d option to debug parsing issues
- Add compatibility warnings to stderr
- Add documentation
- Update iptables parser to allow --line-numbers option
- Update lsblk parser to allow parsing of added columns
- Update mount parser: changed 'access' field name to 'options'
- Update netstat parser to allow parsing of unix sockets and raw network connections
- Update w parser to fix unaligned data where blanks are possible
- Clean up code and reorganize package
20191031 v1.1.1
- Add arp parser
- Add dig parser
- Add unit tests
- fix netstat parser (remove side effects due to global variable)
20191025 v1.0.1
- Add w parser
- Add uptime parser
- Add history parser
- Flatten env parser output
- Remove problematic characters from key names in: df, free, history, lsblk, lsof, and w
- Where possible, lowercase all keys (except cases like env where the key is the variable name)
- Remove integer values
- Handle CTRL-C gracefully
20191023 v0.9.1
- Add jobs parser
- Add lsof parser
- Add lsmod parser
- No blocking if no piped data
- Better help text
- Clean up iptables parser code
20191022 v0.8.1
- Add env parser
- Add df parser
- Add free parser
- Add lsblk parser
- Add mount parser
- Add uname parser
- Add iptables parser
20191021 v0.6.4
- Flatten netstat parser output
- Clean up argument parsing
- Fix command help
20191018 v0.5.5
- Fix netstat -p parsing for Ubuntu
- Add ps parser
- Add route parser
- ls parser fixes
20191017 v0.2.0
- ifconfig, ls, and netstat support
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to jc
We love your input! We want to make contributing to this project as easy and
transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Proposing a new parser
## We Develop with Github
We use github to host code, to track issues and feature requests, as well as
accept pull requests.
## We Use Github Flow, So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use
[Github Flow](https://guides.github.com/introduction/flow/index.html)). We
actively welcome your pull requests:
1. Open an issue to discuss the new feature, bug fix, or parser before opening
a pull request. For new parsers, it is important to agree upon a schema
before developing the parser.
2. Fork the repo and create your branch from `dev`, if available, otherwise
`master`.
3. For new parsers:
- Templates: Use the [`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py)
or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py)
parsers as a template to get started.
- Local development: You can even place a new parser python module file in
the [parser plugin directory](https://github.com/kellyjonbrazil/jc#parser-plugins)
to get started right away with just a standard `jc` installation.
- Parser registry: Add the parser name to the [jc/lib.py](https://github.com/kellyjonbrazil/jc/blob/master/jc/lib.py)
file.
4. If you've added code that should be tested, add tests. All new parsers should
have several sample outputs and tests.
- Templates:
- **Recommended:** [tests/templates/_test_foo_simple.py](https://github.com/kellyjonbrazil/jc/tree/master/tests/templates/_test_foo_simple.py) as a template if you only have test with fixtures.
Execute these steps for standard tests:
- Save this file as `test_{parser_name}.py` since the helper methods extract parser names from the filename. Use underscores instead of dashes for the parser name.
- Organize fixtures in `tests/fixtures` for optimal structure.
- Format fixtures as follows (using double dashes):
- `{parser_name}--{some_test_description}.out` for command output. (no dots in the filename except for the `.out` suffix)
- `{parser_name}--{some_test_description}.json` for expected JSON after parsing. (no dots in the filename except for the `.json` suffix)
- Custom: [tests/templates/_test_foo.py](https://github.com/kellyjonbrazil/jc/blob/master/tests/templates/_test_foo.py) as a template for tests.
- Custom: [tests/templates/_test_foo_s.py](https://github.com/kellyjonbrazil/jc/tree/master/tests/templates/_test_foo_s.py) as a template for **streaming parser** tests.
- Fixtures: Tests typically consist of an input file and an expected output
JSON file. Add the data files to the appropriate folder under [tests/fixtures](https://github.com/kellyjonbrazil/jc/tree/master/tests/fixtures)
5. Documentation is auto-generated from docstrings, so ensure they are clear and
accurate.
6. Ensure the test suite passes. (Note: "**America/Los_Angeles**" timezone
should be configured on the test system)
7. Make sure your code lints.
8. Issue that pull request!
## Documentation And Completions
No need to worry about documentation and completions as those are auto generated
via the python doc strings.
## Parser Schema Guidelines
- Try to keep the schema as flat as possible - typically a list of flat
dictionaries
- Keys should be lowercase, contain no special characters, and spaces should be
converted to underscores
- Keys should be static, if possible. If they have to be dynamic, then they
should not contain lists or dictionaries
This will make it easier to use tools like `jq` without requiring escaping of
special characters, encapsulating key names in `[""]`, keeps paths predictable,
and makes iterating and searching for values easier.
**Examples**
Bad:
```json
{
"Interface 1": [
"192.168.1.1",
"172.16.1.1"
],
"Wifi Interface 1": [
"10.1.1.1"
]
}
```
Good:
```json
[
{
"interface": "Interface 1",
"ip_addresses": [
"192.168.1.1",
"172.16.1.1"
]
},
{
"interface": "Wifi Interface 1",
"ip_addresses": [
"10.1.1.1"
]
}
]
```
## Development Environment
Use the following steps to set up the development environment.
### Virtual Environment
Set up a Python virtual environment for `jc` development so you won't have to
worry about library conflicts. This can be done with something like
[pyenv](https://github.com/pyenv/pyenv) and/or
[venv](https://docs.python.org/3/library/venv.html)
### Clone the repo
Once the virtual environment is set up, clone the `jc` repository inside:
```bash
git clone https://github.com/kellyjonbrazil/jc.git
```
### Install In Developer Mode
Next, use the `./install.sh` script to install `jc` and the requirements in
developer mode (code chages take effect immediately). This will install the
console-script entry point to `$HOME/.local/bin` so you may need to add this
to your path.
## Tests
It is essential to have good command output sample coverage and tests to keep
the `jc` parser quality high.
Many parsers include calculated timestamp fields using the `jc.utils.timestamp`
class. Naive timestamps created with this class should be generated on a system
configured with the "**America/Los_Angeles**" timezone on linux/macOS/unix and
"**Pacific Standard Time**" timezone on Windows for tests to pass on the Github
Actions CI tests. This timezone should be configured on your local system before
running the tests locally, as well.
You can run all tests by running the `./runtests.sh` script.
## Debug Messages
Use `--debug` or `-d` to see debug error messages (double to see more):
```shell
echo 'abc' | jc --parser-with-error -dd
```
## Any contributions you make will be under the MIT Software License
In short, when you submit code changes, your submissions are understood to be
under the same [MIT License](http://choosealicense.com/licenses/mit/) that
covers the project. Feel free to contact the maintainers if that's a concern.
## Report bugs using Github's Issues
We use GitHub issues to track public bugs. Report a bug by
[opening a new issue](https://github.com/kellyjonbrazil/jc/issues); it's that
easy!
## Write bug reports with detail, background, and sample code
**Great Bug Reports** tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you
tried that didn't work)
## Use a Consistent Coding Style
* 4 spaces for indentation rather than tabs
* Use a Python linter that will enforce PEP 8 and other best practices
================================================
FILE: EXAMPLES.md
================================================
## JC Examples
### acpi
```bash
acpi -V | jc --acpi -p # or: jc -p acpi -V
```
```json
[
{
"type": "Battery",
"id": 0,
"state": "Charging",
"charge_percent": 71,
"until_charged": "00:29:20",
"design_capacity_mah": 2110,
"last_full_capacity": 2271,
"last_full_capacity_percent": 100,
"until_charged_hours": 0,
"until_charged_minutes": 29,
"until_charged_seconds": 20,
"until_charged_total_seconds": 1760
},
{
"type": "Adapter",
"id": 0,
"on-line": true
},
{
"type": "Thermal",
"id": 0,
"mode": "ok",
"temperature": 46.0,
"temperature_unit": "C",
"trip_points": [
{
"id": 0,
"switches_to_mode": "critical",
"temperature": 127.0,
"temperature_unit": "C"
},
{
"id": 1,
"switches_to_mode": "hot",
"temperature": 127.0,
"temperature_unit": "C"
}
]
},
{
"type": "Cooling",
"id": 0,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 1,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 2,
"messages": [
"x86_pkg_temp no state information available"
]
},
{
"type": "Cooling",
"id": 3,
"messages": [
"Processor 0 of 10"
]
},
{
"type": "Cooling",
"id": 4,
"messages": [
"intel_powerclamp no state information available"
]
},
{
"type": "Cooling",
"id": 5,
"messages": [
"Processor 0 of 10"
]
}
]
```
### airport -I
```bash
airport -I | jc --airport -p # or: jc -p airport -I
```
```json
{
"agrctlrssi": -66,
"agrextrssi": 0,
"agrctlnoise": -90,
"agrextnoise": 0,
"state": "running",
"op_mode": "station",
"lasttxrate": 195,
"maxrate": 867,
"lastassocstatus": 0,
"802_11_auth": "open",
"link_auth": "wpa2-psk",
"bssid": "3c:37:86:15:ad:f9",
"ssid": "SnazzleDazzle",
"mcs": 0,
"channel": "48,80"
}
```
### airport -s
```bash
airport -s | jc --airport-s -p # or: jc -p airport -s
```
```json
[
{
"ssid": "DIRECT-4A-HP OfficeJet 3830",
"bssid": "00:67:eb:2a:a7:3b",
"rssi": -90,
"channel": "6",
"ht": true,
"cc": "--",
"security": [
"WPA2(PSK/AES/AES)"
]
},
{
"ssid": "Latitude38",
"bssid": "c0:ff:d5:d2:7a:f3",
"rssi": -85,
"channel": "11",
"ht": true,
"cc": "US",
"security": [
"WPA2(PSK/AES/AES)"
]
},
{
"ssid": "xfinitywifi",
"bssid": "6e:e3:0e:b8:45:99",
"rssi": -83,
"channel": "11",
"ht": true,
"cc": "US",
"security": [
"NONE"
]
}
]
```
### arp
```bash
arp | jc --arp -p # or: jc -p arp
```
```json
[
{
"address": "gateway",
"hwtype": "ether",
"hwaddress": "00:50:56:f7:4a:fc",
"flags_mask": "C",
"iface": "ens33"
},
{
"address": "192.168.71.1",
"hwtype": "ether",
"hwaddress": "00:50:56:c0:00:08",
"flags_mask": "C",
"iface": "ens33"
},
{
"address": "192.168.71.254",
"hwtype": "ether",
"hwaddress": "00:50:56:fe:7a:b4",
"flags_mask": "C",
"iface": "ens33"
}
]
```
```bash
arp -a | jc --arp -p # or: jc -p arp -a
```
```json
[
{
"name": null,
"address": "192.168.71.1",
"hwtype": "ether",
"hwaddress": "00:50:56:c0:00:08",
"iface": "ens33",
"permanent": true
},
{
"name": null,
"address": "192.168.71.254",
"hwtype": "ether",
"hwaddress": "00:50:56:fe:7a:b4",
"iface": "ens33",
"permanent": true
},
{
"name": "_gateway",
"address": "192.168.71.2",
"hwtype": "ether",
"hwaddress": "00:50:56:f7:4a:fc",
"iface": "ens33",
"permanent": false,
"expires": 110
}
]
```
### blkid
```bash
blkid | jc --blkid -p # or: jc -p blkid
```
```json
[
{
"device": "/dev/sda1",
"uuid": "05d927ab-5875-49e4-ada1-7f46cb32c932",
"type": "xfs"
},
{
"device": "/dev/sda2",
"uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"type": "LVM2_member"
},
{
"device": "/dev/mapper/centos-root",
"uuid": "07d718ff-950c-4e5b-98f0-42a1147c77d9",
"type": "xfs"
},
{
"device": "/dev/mapper/centos-swap",
"uuid": "615eb89a-bcbf-46fd-80e3-c483ff5c931f",
"type": "swap"
}
]
```
```bash
blkid -o udev -ip /dev/sda2 | jc --blkid -p # or: jc -p blkid -o udev -ip /dev/sda2
```
```json
[
{
"id_fs_uuid": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_uuid_enc": "3klkIj-w1kk-DkJi-0XBJ-y3i7-i2Ac-vHqWBM",
"id_fs_version": "LVM220001",
"id_fs_type": "LVM2_member",
"id_fs_usage": "raid",
"id_iolimit_minimum_io_size": 512,
"id_iolimit_physical_sector_size": 512,
"id_iolimit_logical_sector_size": 512,
"id_part_entry_scheme": "dos",
"id_part_entry_type": "0x8e",
"id_part_entry_number": 2,
"id_part_entry_offset": 2099200,
"id_part_entry_size": 39843840,
"id_part_entry_disk": "8:0"
}
]
```
### CEF strings
```bash
cat cef.log | jc --cef -p
```
```json
[
{
"deviceVendor": "Trend Micro",
"deviceProduct": "Deep Security Agent",
"deviceVersion": "<DSA version>",
"deviceEventClassId": "4000000",
"name": "Eicar_test_file",
"agentSeverity": 6,
"CEFVersion": 0,
"dvchost": "hostname",
"string": "hello \"world\"!",
"start": "Nov 08 2020 12:30:00.111 UTC",
"start_epoch": 1604867400,
"start_epoch_utc": 1604838600,
"Host_ID": 1,
"Quarantine": 205,
"myDate": "Nov 08 2022 12:30:00.111",
"myDate_epoch": 1667939400,
"myDate_epoch_utc": null,
"myFloat": 3.14,
"deviceEventClassIdNum": 4000000,
"agentSeverityString": "Medium",
"agentSeverityNum": 6
}
]
```
### chage --list
```bash
chage --list joeuser | jc --chage -p # or: jc -p chage --list joeuser
```
```json
{
"password_last_changed": "never",
"password_expires": "never",
"password_inactive": "never",
"account_expires": "never",
"min_days_between_password_change": 0,
"max_days_between_password_change": 99999,
"warning_days_before_password_expires": 7
}
```
### cksum
```bash
cksum * | jc --cksum -p # or: jc -p cksum *
```
```json
[
{
"filename": "__init__.py",
"checksum": 4294967295,
"blocks": 0
},
{
"filename": "airport.py",
"checksum": 2208551092,
"blocks": 3745
},
{
"filename": "airport_s.py",
"checksum": 1113817598,
"blocks": 4572
}
]
```
### crontab
```bash
cat /etc/crontab | jc --crontab -p # or: jc -p crontab -l
```
```json
{
"variables": [
{
"name": "MAILTO",
"value": "root"
},
{
"name": "PATH",
"value": "/sbin:/bin:/usr/sbin:/usr/bin"
},
{
"name": "SHELL",
"value": "/bin/bash"
}
],
"schedule": [
{
"minute": [
"5"
],
"hour": [
"10-11",
"22"
],
"day_of_month": [
"*"
],
"month": [
"*"
],
"day_of_week": [
"*"
],
"command": "/var/www/devdaily.com/bin/mk-new-links.php"
},
{
"minute": [
"30"
],
"hour": [
"4/2"
],
"day_of_month": [
"*"
],
"month": [
"*"
],
"day_of_week": [
"*"
],
"command": "/var/www/devdaily.com/bin/create-all-backups.sh"
},
{
"occurrence": "yearly",
"command": "/home/maverick/bin/annual-maintenance"
},
{
"occurrence": "reboot",
"command": "/home/cleanup"
},
{
"occurrence": "monthly",
"command": "/home/maverick/bin/tape-backup"
}
]
}
```
### crontab-u (with user support)
```bash
cat /etc/crontab | jc --crontab-u -p
```
```json
{
"variables": [
{
"name": "MAILTO",
"value": "root"
},
{
"name": "PATH",
"value": "/sbin:/bin:/usr/sbin:/usr/bin"
},
{
"name": "SHELL",
"value": "/bin/bash"
}
],
"schedule": [
{
"minute": [
"5"
],
"hour": [
"10-11",
"22"
],
"day_of_month": [
"*"
],
"month": [
"*"
],
"day_of_week": [
"*"
],
"user": "root",
"command": "/var/www/devdaily.com/bin/mk-new-links.php"
},
{
"minute": [
"30"
],
"hour": [
"4/2"
],
"day_of_month": [
"*"
],
"month": [
"*"
],
"day_of_week": [
"*"
],
"user": "root",
"command": "/var/www/devdaily.com/bin/create-all-backups.sh"
},
{
"occurrence": "yearly",
"user": "root",
"command": "/home/maverick/bin/annual-maintenance"
},
{
"occurrence": "reboot",
"user": "root",
"command": "/home/cleanup"
},
{
"occurrence": "monthly",
"user": "root",
"command": "/home/maverick/bin/tape-backup"
}
]
}
```
### CSV files
```bash
cat homes.csv
```
```
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres", "Taxes"
142, 160, 28, 10, 5, 3, 60, 0.28, 3167
175, 180, 18, 8, 4, 1, 12, 0.43, 4033
129, 132, 13, 6, 3, 1, 41, 0.33, 1471
...
```
```bash
cat homes.csv | jc --csv -p
```
```json
[
{
"Sell": "142",
"List": "160",
"Living": "28",
"Rooms": "10",
"Beds": "5",
"Baths": "3",
"Age": "60",
"Acres": "0.28",
"Taxes": "3167"
},
{
"Sell": "175",
"List": "180",
"Living": "18",
"Rooms": "8",
"Beds": "4",
"Baths": "1",
"Age": "12",
"Acres": "0.43",
"Taxes": "4033"
},
{
"Sell": "129",
"List": "132",
"Living": "13",
"Rooms": "6",
"Beds": "3",
"Baths": "1",
"Age": "41",
"Acres": "0.33",
"Taxes": "1471"
}
]
```
### date
```bash
date | jc --date -p # or: jc -p date
```
```json
{
"year": 2021,
"month": "Mar",
"month_num": 3,
"day": 25,
"weekday": "Thu",
"weekday_num": 4,
"hour": 2,
"hour_24": 2,
"minute": 2,
"second": 26,
"period": "AM",
"timezone": "UTC",
"utc_offset": "+0000",
"day_of_year": 84,
"week_of_year": 12,
"iso": "2021-03-25T02:02:26+00:00",
"epoch": 1616662946,
"epoch_utc": 1616637746,
"timezone_aware": true
}
```
### df
```bash
df | jc --df -p # or: jc -p df
```
```json
[
{
"filesystem": "devtmpfs",
"1k_blocks": 1918816,
"used": 0,
"available": 1918816,
"use_percent": 0,
"mounted_on": "/dev"
},
{
"filesystem": "tmpfs",
"1k_blocks": 1930664,
"used": 0,
"available": 1930664,
"use_percent": 0,
"mounted_on": "/dev/shm"
}
]
```
### dig
```bash
dig cnn.com www.cnn.com @205.251.194.64 | jc --dig -p # or: jc -p dig cnn.com www.cnn.com @205.251.194.64
```
```json
[
{
"id": 10267,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
"qr",
"rd",
"ra"
],
"query_num": 1,
"answer_num": 4,
"authority_num": 0,
"additional_num": 1,
"opt_pseudosection": {
"edns": {
"version": 0,
"flags": [],
"udp": 4096
}
},
"question": {
"name": "cnn.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 17,
"data": "151.101.65.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 17,
"data": "151.101.129.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 17,
"data": "151.101.1.67"
},
{
"name": "cnn.com.",
"class": "IN",
"type": "A",
"ttl": 17,
"data": "151.101.193.67"
}
],
"query_time": 51,
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Fri Apr 16 16:24:32 PDT 2021",
"rcvd": 100,
"when_epoch": 1618615472,
"when_epoch_utc": null
},
{
"id": 56207,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
"qr",
"aa",
"rd"
],
"query_num": 1,
"answer_num": 1,
"authority_num": 4,
"additional_num": 1,
"opt_pseudosection": {
"edns": {
"version": 0,
"flags": [],
"udp": 4096
}
},
"question": {
"name": "www.cnn.com.",
"class": "IN",
"type": "A"
},
"answer": [
{
"name": "www.cnn.com.",
"class": "IN",
"type": "CNAME",
"ttl": 300,
"data": "turner-tls.map.fastly.net."
}
],
"authority": [
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-1086.awsdns-07.org."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-1630.awsdns-11.co.uk."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-47.awsdns-05.com."
},
{
"name": "cnn.com.",
"class": "IN",
"type": "NS",
"ttl": 3600,
"data": "ns-576.awsdns-08.net."
}
],
"query_time": 22,
"server": "205.251.194.64#53(205.251.194.64)",
"when": "Fri Apr 16 16:24:32 PDT 2021",
"rcvd": 212,
"when_epoch": 1618615472,
"when_epoch_utc": null
}
]
```
```bash
dig -x 1.1.1.1 | jc --dig -p # or: jc -p dig -x 1.1.1.1
```
```json
[
{
"id": 20785,
"opcode": "QUERY",
"status": "NOERROR",
"flags": [
"qr",
"rd",
"ra"
],
"query_num": 1,
"answer_num": 1,
"authority_num": 0,
"additional_num": 1,
"opt_pseudosection": {
"edns": {
"version": 0,
"flags": [],
"udp": 4096
}
},
"question": {
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR"
},
"answer": [
{
"name": "1.1.1.1.in-addr.arpa.",
"class": "IN",
"type": "PTR",
"ttl": 1800,
"data": "one.one.one.one."
}
],
"query_time": 40,
"server": "2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when": "Sat Apr 17 14:50:50 PDT 2021",
"rcvd": 78,
"when_epoch": 1618696250,
"when_epoch_utc": null
}
]
```
### dir
```bash
dir | jc --dir -p
```
```json
[
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": ".",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1616624100
},
{
"date": "03/24/2021",
"time": "03:15 PM",
"dir": true,
"size": null,
"filename": "..",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1616624100
},
{
"date": "12/07/2019",
"time": "02:49 AM",
"dir": true,
"size": null,
"filename": "en-US",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1575715740
},
{
"date": "12/07/2019",
"time": "02:09 AM",
"dir": false,
"size": 54784,
"filename": "ExtExport.exe",
"parent": "C:\\Program Files\\Internet Explorer",
"epoch": 1575713340
}
]
```
### dmidecode
```bash
dmidecode | jc --dmidecode -p # or: jc -p dmidecode
```
```json
[
{
"handle": "0x0000",
"type": 0,
"bytes": 24,
"description": "BIOS Information",
"values": {
"vendor": "Phoenix Technologies LTD",
"version": "6.00",
"release_date": "04/13/2018",
"address": "0xEA490",
"runtime_size": "88944 bytes",
"rom_size": "64 kB",
"characteristics": [
"ISA is supported",
"PCI is supported",
"PC Card (PCMCIA) is supported",
"PNP is supported",
"APM is supported",
"BIOS is upgradeable",
"BIOS shadowing is allowed",
"ESCD support is available",
"Boot from CD is supported",
"Selectable boot is supported",
"EDD is supported",
"Print screen service is supported (int 5h)",
"8042 keyboard services are supported (int 9h)",
"Serial services are supported (int 14h)",
"Printer services are supported (int 17h)",
"CGA/mono video services are supported (int 10h)",
"ACPI is supported",
"Smart battery is supported",
"BIOS boot specification is supported",
"Function key-initiated network boot is supported",
"Targeted content distribution is supported"
],
"bios_revision": "4.6",
"firmware_revision": "0.0"
}
}
]
```
### dpkg -l
```bash
dpkg -l | jc --dpkg-l -p # or: jc -p dpkg -l
```
```json
[
{
"codes": "ii",
"name": "accountsservice",
"version": "0.6.45-1ubuntu1.3",
"architecture": "amd64",
"description": "query and manipulate user account information",
"desired": "install",
"status": "installed"
},
{
"codes": "rc",
"name": "acl",
"version": "2.2.52-3build1",
"architecture": "amd64",
"description": "Access control list utilities",
"desired": "remove",
"status": "config-files"
},
{
"codes": "uWR",
"name": "acpi",
"version": "1.7-1.1",
"architecture": "amd64",
"description": "displays information on ACPI devices",
"desired": "unknown",
"status": "trigger await",
"error": "reinstall required"
},
{
"codes": "rh",
"name": "acpid",
"version": "1:2.0.28-1ubuntu1",
"architecture": "amd64",
"description": "Advanced Configuration and Power Interface event daemon",
"desired": "remove",
"status": "half installed"
},
{
"codes": "pn",
"name": "adduser",
"version": "3.116ubuntu1",
"architecture": "all",
"description": "add and remove users and groups",
"desired": "purge",
"status": "not installed"
}
]
```
### du
```bash
du /usr | jc --du -p # or: jc -p du /usr
```
```json
[
{
"size": 104608,
"name": "/usr/bin"
},
{
"size": 56,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/_CodeSignature"
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local/standalone"
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr/local"
},
{
"size": 0,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/usr"
},
{
"size": 1008,
"name": "/usr/standalone/firmware/iBridge1_1Customer.bundle/Contents/Resources/Firmware/dfu"
}
]
```
### Email Address string
```bash
echo 'joe.user@gmail.com' | jc --email-address -p
```
```json
{
"username": "joe.user",
"domain": "gmail.com",
"local": "joe.user",
"local_plus_suffix": null
}
```
### env
```bash
env | jc --env -p # or: jc -p env
```
```json
[
{
"name": "XDG_SESSION_ID",
"value": "1"
},
{
"name": "HOSTNAME",
"value": "localhost.localdomain"
},
{
"name": "TERM",
"value": "vt220"
},
{
"name": "SHELL",
"value": "/bin/bash"
},
{
"name": "HISTSIZE",
"value": "1000"
}
]
```
### file
```bash
file * | jc --file -p # or: jc -p file *
```
```json
[
{
"filename": "Applications",
"type": "directory"
},
{
"filename": "another file with spaces",
"type": "empty"
},
{
"filename": "argstest.py",
"type": "Python script text executable, ASCII text"
},
{
"filename": "blkid-p.out",
"type": "ASCII text"
},
{
"filename": "blkid-pi.out",
"type": "ASCII text, with very long lines"
},
{
"filename": "cd_catalog.xml",
"type": "XML 1.0 document text, ASCII text, with CRLF line terminators"
},
{
"filename": "centosserial.sh",
"type": "Bourne-Again shell script text executable, UTF-8 Unicode text"
}
]
```
### finger
```bash
finger | jc --finger -p # or: jc -p finger
```
```json
[
{
"login": "jdoe",
"name": "John Doe",
"tty": "tty1",
"idle": "14d",
"login_time": "Mar 22 21:14",
"tty_writeable": false,
"idle_minutes": 0,
"idle_hours": 0,
"idle_days": 14,
"total_idle_minutes": 20160
},
{
"login": "jdoe",
"name": "John Doe",
"tty": "pts/0",
"idle": null,
"login_time": "Apr 5 15:33",
"details": "(192.168.1.22)",
"tty_writeable": true,
"idle_minutes": 0,
"idle_hours": 0,
"idle_days": 0,
"total_idle_minutes": 0
}
]
```
### free
```bash
free | jc --free -p # or: jc -p free
```
```json
[
{
"type": "Mem",
"total": 3861340,
"used": 220508,
"free": 3381972,
"shared": 11800,
"buff_cache": 258860,
"available": 3397784
},
{
"type": "Swap",
"total": 2097148,
"used": 0,
"free": 2097148
}
]
```
### /etc/fstab file
```bash
cat /etc/fstab | jc --fstab -p
```
```json
[
{
"fs_spec": "/dev/mapper/centos-root",
"fs_file": "/",
"fs_vfstype": "xfs",
"fs_mntops": "defaults",
"fs_freq": 0,
"fs_passno": 0
},
{
"fs_spec": "UUID=05d927bb-5875-49e3-ada1-7f46cb31c932",
"fs_file": "/boot",
"fs_vfstype": "xfs",
"fs_mntops": "defaults",
"fs_freq": 0,
"fs_passno": 0
},
{
"fs_spec": "/dev/mapper/centos-swap",
"fs_file": "swap",
"fs_vfstype": "swap",
"fs_mntops": "defaults",
"fs_freq": 0,
"fs_passno": 0
}
]
```
### git log
```bash
git log --stat | jc --git-log -p or: jc -p git log --stat
```
```json
[
{
"commit": "728d882ed007b3c8b785018874a0eb06e1143b66",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:50:19 2022 -0400",
"stats": {
"files_changed": 2,
"insertions": 90,
"deletions": 12,
"files": [
"docs/parsers/git_log.md",
"jc/parsers/git_log.py"
]
},
"message": "add timestamp docs and examples",
"epoch": 1650462619,
"epoch_utc": null
},
{
"commit": "b53e42aca623181aa9bc72194e6eeef1e9a3a237",
"author": "Kelly Brazil",
"author_email": "kellyjonbrazil@gmail.com",
"date": "Wed Apr 20 09:44:42 2022 -0400",
"stats": {
"files_changed": 5,
"insertions": 29,
"deletions": 6,
"files": [
"docs/parsers/git_log.md",
"docs/utils.md",
"jc/parsers/git_log.py",
"jc/utils.py",
"man/jc.1"
]
},
"message": "add calculated timestamp",
"epoch": 1650462282,
"epoch_utc": null
}
]
```
### gpg --with-colons
```bash
gpg --with-colons --show-keys file.gpg | jc --gpg -p # or jc -p gpg --with-colons --show-keys file.gpg
```
```json
[
{
"type": "pub",
"validity": "f",
"key_length": "1024",
"pub_key_alg": "17",
"key_id": "6C7EE1B8621CC013",
"creation_date": "899817715",
"expiration_date": "1055898235",
"certsn_uidhash_trustinfo": null,
"owner_trust": "m",
"user_id": null,
"signature_class": null,
"key_capabilities": "scESC",
"cert_fingerprint_other": null,
"flag": null,
"token_sn": null,
"hash_alg": null,
"curve_name": null,
"compliance_flags": null,
"last_update_date": null,
"origin": null,
"comment": null
}
]
```
### /etc/group file
```bash
cat /etc/group | jc --group -p
```
```json
[
{
"group_name": "nobody",
"password": "*",
"gid": -2,
"members": []
},
{
"group_name": "nogroup",
"password": "*",
"gid": -1,
"members": []
},
{
"group_name": "wheel",
"password": "*",
"gid": 0,
"members": [
"root"
]
},
{
"group_name": "certusers",
"password": "*",
"gid": 29,
"members": [
"root",
"_jabber",
"_postfix",
"_cyrus",
"_calendar",
"_dovecot"
]
}
]
```
### /etc/gshadow file
```bash
cat /etc/gshadow | jc --gshadow -p
```
```json
[
{
"group_name": "root",
"password": "*",
"administrators": [],
"members": []
},
{
"group_name": "adm",
"password": "*",
"administrators": [],
"members": [
"syslog",
"joeuser"
]
}
]
```
### hash
```bash
hash | jc --hash -p
```
```json
[
{
"hits": 2,
"command": "/bin/cat"
},
{
"hits": 1,
"command": "/bin/ls"
}
]
```
### hashsum
```bash
md5sum * | jc --hashsum -p # or: jc -p md5sum *
```
```json
[
{
"filename": "devtoolset-3-gcc-4.9.2-6.el7.x86_64.rpm",
"hash": "65fc958c1add637ec23c4b137aecf3d3"
},
{
"filename": "digout",
"hash": "5b9312ee5aff080927753c63a347707d"
},
{
"filename": "dmidecode.out",
"hash": "716fd11c2ac00db109281f7110b8fb9d"
},
{
"filename": "file with spaces in the name",
"hash": "d41d8cd98f00b204e9800998ecf8427e"
},
{
"filename": "id-centos.out",
"hash": "4295be239a14ad77ef3253103de976d2"
},
{
"filename": "ifcfg.json",
"hash": "01fda0d9ba9a75618b072e64ff512b43"
}
]
```
### hciconfig
```bash
hciconfig -a | jc --hciconfig -p # or: jc -p hciconfig -a
```
```json
[
{
"device": "hci0",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": 310,
"acl_mtu_packets": 10,
"sco_mtu": 64,
"sco_mtu_packets": 8,
"state": [
"UP",
"RUNNING"
],
"rx_bytes": 13905869,
"rx_acl": 0,
"rx_sco": 0,
"rx_events": 393300,
"rx_errors": 0,
"tx_bytes": 62629,
"tx_acl": 0,
"tx_sco": 0,
"tx_commands": 3893,
"tx_errors": 0,
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
],
"name": "CSR8510 A10",
"class": "0x000000",
"service_classes": null,
"device_class": "Miscellaneous",
"hci_version": "4.0 (0x6)",
"hci_revision": "0x22bb",
"lmp_version": "4.0 (0x6)",
"lmp_subversion": "0x22bb",
"manufacturer": "Cambridge Silicon Radio (10)"
},
{
"device": "hci1",
"type": "Primary",
"bus": "USB",
"bd_address": "00:1A:7D:DA:71:13",
"acl_mtu": 310,
"acl_mtu_packets": 10,
"sco_mtu": 64,
"sco_mtu_packets": 8,
"state": [
"DOWN"
],
"rx_bytes": 4388363,
"rx_acl": 0,
"rx_sco": 0,
"rx_events": 122021,
"rx_errors": 0,
"tx_bytes": 52350,
"tx_acl": 0,
"tx_sco": 0,
"tx_commands": 3480,
"tx_errors": 2,
"features": [
"0xff",
"0xff",
"0x8f",
"0xfe",
"0xdb",
"0xff",
"0x5b",
"0x87"
],
"packet_type": [
"DM1",
"DM3",
"DM5",
"DH1",
"DH3",
"DH5",
"HV1",
"HV2",
"HV3"
],
"link_policy": [
"RSWITCH",
"HOLD",
"SNIFF",
"PARK"
],
"link_mode": [
"SLAVE",
"ACCEPT"
]
}
]
```
### history
```bash
history | jc --history -p
```
```json
[
{
"line": 118,
"command": "sleep 100"
},
{
"line": 119,
"command": "ls /bin"
},
{
"line": 120,
"command": "echo \"hello\""
},
{
"line": 121,
"command": "docker images"
}
]
```
### /etc/hosts file
```bash
cat /etc/hosts | jc --hosts -p
```
```json
[
{
"ip": "127.0.0.1",
"hostname": [
"localhost"
]
},
{
"ip": "127.0.1.1",
"hostname": [
"root-ubuntu"
]
},
{
"ip": "::1",
"hostname": [
"ip6-localhost",
"ip6-loopback"
]
},
{
"ip": "fe00::0",
"hostname": [
"ip6-localnet"
]
},
{
"ip": "ff00::0",
"hostname": [
"ip6-mcastprefix"
]
},
{
"ip": "ff02::1",
"hostname": [
"ip6-allnodes"
]
},
{
"ip": "ff02::2",
"hostname": [
"ip6-allrouters"
]
}
]
```
### id
```bash
id | jc --id -p # or: jc -p id
```
```json
{
"uid": {
"id": 1000,
"name": "joeuser"
},
"gid": {
"id": 1000,
"name": "joeuser"
},
"groups": [
{
"id": 1000,
"name": "joeuser"
},
{
"id": 10,
"name": "wheel"
}
],
"context": {
"user": "unconfined_u",
"role": "unconfined_r",
"type": "unconfined_t",
"level": "s0-s0:c0.c1023"
}
}
```
### ifconfig
```bash
ifconfig | jc --ifconfig -p # or: jc -p ifconfig
```
```json
[
{
"name": "ens33",
"flags": 4163,
"state": [
"UP",
"BROADCAST",
"RUNNING",
"MULTICAST"
],
"mtu": 1500,
"ipv4_addr": "192.168.71.137",
"ipv4_mask": "255.255.255.0",
"ipv4_bcast": "192.168.71.255",
"ipv6_addr": "fe80::c1cb:715d:bc3e:b8a0",
"ipv6_mask": 64,
"ipv6_scope": "0x20",
"mac_addr": "00:0c:29:3b:58:0e",
"type": "Ethernet",
"rx_packets": 8061,
"rx_bytes": 1514413,
"rx_errors": 0,
"rx_dropped": 0,
"rx_overruns": 0,
"rx_frame": 0,
"tx_packets": 4502,
"tx_bytes": 866622,
"tx_errors": 0,
"tx_dropped": 0,
"tx_overruns": 0,
"tx_carrier": 0,
"tx_collisions": 0,
"metric": null
},
{
"name": "lo",
"flags": 73,
"state": [
"UP",
"LOOPBACK",
"RUNNING"
],
"mtu": 65536,
"ipv4_addr": "127.0.0.1",
"ipv4_mask": "255.0.0.0",
"ipv4_bcast": null,
"ipv6_addr": "::1",
"ipv6_mask": 128,
"ipv6_scope": "0x10",
"mac_addr": null,
"type": "Local Loopback",
"rx_packets": 73,
"rx_bytes": 6009,
"rx_errors": 0,
"rx_dropped": 0,
"rx_overruns": 0,
"rx_frame": 0,
"tx_packets": 73,
"tx_bytes": 6009,
"tx_errors": 0,
"tx_dropped": 0,
"tx_overruns": 0,
"tx_carrier": 0,
"tx_collisions": 0,
"metric": null
}
]
```
### INI files
```bash
cat example.ini
```
```
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes
[bitbucket.org]
User = hg
[topsecret.server.com]
Port = 50022
ForwardX11 = no
```
```bash
cat example.ini | jc --ini -p
```
```json
{
"DEFAULT": {
"ServerAliveInterval": "45",
"Compression": "yes",
"CompressionLevel": "9",
"ForwardX11": "yes"
},
"bitbucket.org": {
"User": "hg"
},
"topsecret.server.com": {
"Port": "50022",
"ForwardX11": "no"
}
}
```
### iostat
```bash
$ iostat | jc --iostat -p # or: jc -p iostat
```
```json
[
{
"percent_user": 0.15,
"percent_nice": 0.0,
"percent_system": 0.18,
"percent_iowait": 0.0,
"percent_steal": 0.0,
"percent_idle": 99.67,
"type": "cpu"
},
{
"device": "sda",
"tps": 0.29,
"kb_read_s": 7.22,
"kb_wrtn_s": 1.25,
"kb_read": 194341,
"kb_wrtn": 33590,
"type": "device"
},
{
"device": "dm-0",
"tps": 0.29,
"kb_read_s": 5.99,
"kb_wrtn_s": 1.17,
"kb_read": 161361,
"kb_wrtn": 31522,
"type": "device"
},
{
"device": "dm-1",
"tps": 0.0,
"kb_read_s": 0.08,
"kb_wrtn_s": 0.0,
"kb_read": 2204,
"kb_wrtn": 0,
"type": "device"
}
]
```
### IP Address strings
```bash
echo 192.168.2.10/24 | jc --ip-address -p
```
```json
{
"version": 4,
"max_prefix_length": 32,
"ip": "192.168.2.10",
"ip_compressed": "192.168.2.10",
"ip_exploded": "192.168.2.10",
"ip_split": [
"192",
"168",
"2",
"10"
],
"scope_id": null,
"ipv4_mapped": null,
"six_to_four": null,
"teredo_client": null,
"teredo_server": null,
"dns_ptr": "10.2.168.192.in-addr.arpa",
"network": "192.168.2.0",
"broadcast": "192.168.2.255",
"hostmask": "0.0.0.255",
"netmask": "255.255.255.0",
"cidr_netmask": 24,
"hosts": 254,
"first_host": "192.168.2.1",
"last_host": "192.168.2.254",
"is_multicast": false,
"is_private": true,
"is_global": false,
"is_link_local": false,
"is_loopback": false,
"is_reserved": false,
"is_unspecified": false,
"int": {
"ip": 3232236042,
"network": 3232236032,
"broadcast": 3232236287,
"first_host": 3232236033,
"last_host": 3232236286
},
"hex": {
"ip": "c0:a8:02:0a",
"network": "c0:a8:02:00",
"broadcast": "c0:a8:02:ff",
"hostmask": "00:00:00:ff",
"netmask": "ff:ff:ff:00",
"first_host": "c0:a8:02:01",
"last_host": "c0:a8:02:fe"
},
"bin": {
"ip": "11000000101010000000001000001010",
"network": "11000000101010000000001000000000",
"broadcast": "11000000101010000000001011111111",
"hostmask": "00000000000000000000000011111111",
"netmask": "11111111111111111111111100000000",
"first_host": "11000000101010000000001000000001",
"last_host": "11000000101010000000001011111110"
}
}
```
### iptables
```bash
iptables --line-numbers -v -L -t nat | jc --iptables -p # or: jc -p iptables --line-numbers -v -L -t nat
```
```json
[
{
"chain": "PREROUTING",
"rules": [
{
"num": 1,
"pkts": 2183,
"bytes": 186000,
"target": "PREROUTING_direct",
"prot": "all",
"opt": null,
"in": "any",
"out": "any",
"source": "anywhere",
"destination": "anywhere"
},
{
"num": 2,
"pkts": 2183,
"bytes": 186000,
"target": "PREROUTING_ZONES_SOURCE",
"prot": "all",
"opt": null,
"in": "any",
"out": "any",
"source": "anywhere",
"destination": "anywhere"
},
{
"num": 3,
"pkts": 2183,
"bytes": 186000,
"target": "PREROUTING_ZONES",
"prot": "all",
"opt": null,
"in": "any",
"out": "any",
"source": "anywhere",
"destination": "anywhere"
},
{
"num": 4,
"pkts": 0,
"bytes": 0,
"target": "DOCKER",
"prot": "all",
"opt": null,
"in": "any",
"out": "any",
"source": "anywhere",
"destination": "anywhere",
"options": "ADDRTYPE match dst-type LOCAL"
}
]
}
]
```
### ISO Datetime string
```bash
echo "2022-07-20T14:52:45Z" | jc --datetime-iso -p
```
```json
{
"year": 2022,
"month": "Jul",
"month_num": 7,
"day": 20,
"weekday": "Wed",
"weekday_num": 3,
"hour": 2,
"hour_24": 14,
"minute": 52,
"second": 45,
"microsecond": 0,
"period": "PM",
"utc_offset": "+0000",
"day_of_year": 201,
"week_of_year": 29,
"iso": "2022-07-20T14:52:45+00:00",
"timestamp": 1658328765
}
```
### iw dev `device` scan
```bash
iw dev wlan0 scan | jc --iw-scan -p # or: jc -p iw dev wlan0 scan
```
```json
[
{
"bssid": "71:31:72:65:e1:a2",
"interface": "wlan0",
"freq": 2462,
"capability": "ESS Privacy ShortSlotTime (0x0411)",
"ssid": "WLAN-1234",
"supported_rates": [
1.0,
2.0,
5.5,
11.0,
18.0,
24.0,
36.0,
54.0
],
"erp": "<no flags>",
"erp_d4.0": "<no flags>",
"rsn": "Version: 1",
"group_cipher": "CCMP",
"pairwise_ciphers": "CCMP",
"authentication_suites": "PSK",
"capabilities": "0x186c",
"extended_supported_rates": [
6.0,
9.0,
12.0,
48.0
],
"ht_rx_mcs_rate_indexes_supported": "0-15",
"primary_channel": 11,
"secondary_channel_offset": "no secondary",
"rifs": 1,
"ht_protection": "no",
"non-gf_present": 1,
"obss_non-gf_present": 0,
"dual_beacon": 0,
"dual_cts_protection": 0,
"stbc_beacon": 0,
"l-sig_txop_prot": 0,
"pco_active": 0,
"pco_phase": 0,
"bss_width_channel_transition_delay_factor": 5,
"extended_capabilities": "HT Information Exchange Supported",
"wmm": "Parameter version 1",
"be": "CW 15-1023, AIFSN 3",
"bk": "CW 15-1023, AIFSN 7",
"vi": "CW 7-15, AIFSN 2, TXOP 3008 usec",
"vo": "CW 3-7, AIFSN 2, TXOP 1504 usec",
"wps": "Version: 1.0",
"wi-fi_protected_setup_state": "2 (Configured)",
"selected_registrar": "0x0",
"response_type": "3 (AP)",
"uuid": "00000000-0000-0003-0000-75317074f1a2",
"manufacturer": "Corporation",
"model": "VGV8539JW",
"model_number": "1.47.000",
"serial_number": "J144024542",
"primary_device_type": "6-0050f204-1",
"device_name": "Wireless Router(WFA)",
"config_methods": "Label, PBC",
"rf_bands": "0x3",
"tsf_usec": 212098649788,
"sta_channel_width_mhz": 20,
"passive_dwell_tus": 20,
"active_dwell_tus": 10,
"channel_width_trigger_scan_interval_s": 300,
"scan_passive_total_per_channel_tus": 200,
"scan_active_total_per_channel_tus": 20,
"beacon_interval_tus": 100,
"signal_dbm": -80.0,
"last_seen_ms": 11420,
"selected_rates": [
1.0,
2.0,
5.5,
11.0
],
"obss_scan_activity_threshold_percent": 0.25,
"ds_parameter_set_channel": 11,
"max_amsdu_length_bytes": 7935,
"minimum_rx_ampdu_time_spacing_usec": 16
}
]
```
### jar-manifest
```bash
cat MANIFEST.MF | jc --jar-manifest -p
```
```json
[
{
"Import_Package": "com.conversantmedia.util.concurrent;resolution:=optional,com.fasterxml.jackson.annotation;version=\"[2.12,3)\";resolution:=optional,com.fasterxml.jackson.core;version=\"[2.12,3)\";resolution:=optional,com.fasterxml.jackson.core.type;version=\"[2.12,3)\";resolution:=optional,com.fasterxml.jackson.cor...",
"Export_Package": "org.apache.logging.log4j.core;uses:=\"org.apache.logging.log4j,org.apache.logging.log4j.core.config,org.apache.logging.log4j.core.impl,org.apache.logging.log4j.core.layout,org.apache.logging.log4j.core.time,org.apache.logging.log4j.message,org.apache.logging.log4j.spi,org.apache.logging.log4j.status...",
"Manifest_Version": "1.0",
"Bundle_License": "https://www.apache.org/licenses/LICENSE-2.0.txt",
"Bundle_SymbolicName": "org.apache.logging.log4j.core",
"Built_By": "matt",
"Bnd_LastModified": "1639373735804",
"Implementation_Vendor_Id": "org.apache.logging.log4j",
"Specification_Title": "Apache Log4j Core",
"Log4jReleaseManager": "Matt Sicker",
...
}
]
```
### jobs
```bash
jobs -l | jc --jobs -p
```
```json
[
{
"job_number": 1,
"pid": 5283,
"status": "Running",
"command": "sleep 10000 &"
},
{
"job_number": 2,
"pid": 5284,
"status": "Running",
"command": "sleep 10100 &"
},
{
"job_number": 3,
"pid": 5285,
"history": "previous",
"status": "Running",
"command": "sleep 10001 &"
},
{
"job_number": 4,
"pid": 5286,
"history": "current",
"status": "Running",
"command": "sleep 10112 &"
}
]
```
### JWT string
```bash
echo 'eyJhbGciOiJIUzI1N...' | jc --jwt -p
```
```json
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
},
"signature": "49:f9:4a:c7:04:49:48:c7:8a:28:5d:90:4f:87:f0:a4:c7..."
}
```
### Key/Value files
```bash
cat keyvalue.txt
```
```
# this file contains key/value pairs
name = John Doe
address=555 California Drive
age: 34
; comments can include # or ;
# delimiter can be = or :
# quoted values have quotation marks stripped by default
# but can be preserved with the -r argument
occupation:"Engineer"
```
```bash
cat keyvalue.txt | jc --kv -p
```
```json
{
"name": "John Doe",
"address": "555 California Drive",
"age": "34",
"occupation": "Engineer"
}
```
### last and lastb
```bash
last -F | jc --last -p # or: jc -p last -F
```
```json
[
{
"user": "kbrazil",
"tty": "pts/0",
"hostname": "kbrazil-mac.attlocal.net",
"login": "Tue Jan 5 14:29:24 2021",
"logout": "still logged in",
"login_epoch": 1609885764
},
{
"user": "kbrazil",
"tty": "tty1",
"hostname": null,
"login": "Tue Jan 5 14:28:41 2021",
"logout": "still logged in",
"login_epoch": 1609885721
},
{
"user": "reboot",
"tty": "system boot",
"hostname": "3.10.0-1062.1.2.el7.x86_64",
"login": "Tue Jan 5 14:28:28 2021",
"logout": "Tue Jan 5 14:29:36 2021",
"duration": "00:01",
"login_epoch": 1609885708,
"logout_epoch": 1609885776,
"duration_seconds": 68
}
]
```
### ls
```bash
$ ls -l /usr/bin | jc --ls -p # or: jc -p ls -l /usr/bin
```
```json
[
{
"filename": "apropos",
"link_to": "whatis",
"flags": "lrwxrwxrwx.",
"links": 1,
"owner": "root",
"group": "root",
"size": 6,
"date": "Aug 15 10:53"
},
{
"filename": "ar",
"flags": "-rwxr-xr-x.",
"links": 1,
"owner": "root",
"group": "root",
"size": 62744,
"date": "Aug 8 16:14"
},
{
"filename": "arch",
"flags": "-rwxr-xr-x.",
"links": 1,
"owner": "root",
"group": "root",
"size": 33080,
"date": "Aug 19 23:25"
}
]
```
### lsblk
```bash
lsblk | jc --lsblk -p # or: jc -p lsblk
```
```json
[
{
"name": "sda",
"maj_min": "8:0",
"rm": false,
"size": "20G",
"ro": false,
"type": "disk",
"mountpoint": null
},
{
"name": "sda1",
"maj_min": "8:1",
"rm": false,
"size": "1G",
"ro": false,
"type": "part",
"mountpoint": "/boot"
}
]
```
### lsmod
```bash
lsmod | jc --lsmod -p # or: jc -p lsmod
```
```json
[
{
"module": "nf_nat",
"size": 26583,
"used": 3,
"by": [
"nf_nat_ipv4",
"nf_nat_ipv6",
"nf_nat_masquerade_ipv4"
]
},
{
"module": "iptable_mangle",
"size": 12695,
"used": 1
},
{
"module": "iptable_security",
"size": 12705,
"used": 1
},
{
"module": "iptable_raw",
"size": 12678,
"used": 1
},
{
"module": "nf_conntrack",
"size": 139224,
"used": 7,
"by": [
"nf_nat",
"nf_nat_ipv4",
"nf_nat_ipv6",
"xt_conntrack",
"nf_nat_masquerade_ipv4",
"nf_conntrack_ipv4",
"nf_conntrack_ipv6"
]
}
]
```
### lsof
```bash
lsof | jc --lsof -p # or: jc -p lsof
```
```json
[
{
"command": "systemd",
"pid": 1,
"tid": null,
"user": "root",
"fd": "cwd",
"type": "DIR",
"device": "253,0",
"size_off": 224,
"node": 64,
"name": "/"
},
{
"command": "systemd",
"pid": 1,
"tid": null,
"user": "root",
"fd": "rtd",
"type": "DIR",
"device": "253,0",
"size_off": 224,
"node": 64,
"name": "/"
},
{
"command": "systemd",
"pid": 1,
"tid": null,
"user": "root",
"fd": "txt",
"type": "REG",
"device": "253,0",
"size_off": 1624520,
"node": 50360451,
"name": "/usr/lib/systemd/systemd"
}
]
```
### lsusb
```bash
lsusb -v | jc --lsusb -p # or: jc -p lsusb -v
```
```json
[
{
"bus": "002",
"device": "001",
"id": "1d6b:0001",
"description": "Linux Foundation 1.1 root hub",
"device_descriptor": {
"bLength": {
"value": "18"
},
"bDescriptorType": {
"value": "1"
},
"bcdUSB": {
"value": "1.10"
},
...
"bNumConfigurations": {
"value": "1"
},
"configuration_descriptor": {
"bLength": {
"value": "9"
},
...
"iConfiguration": {
"value": "0"
},
"bmAttributes": {
"value": "0xe0",
"attributes": [
"Self Powered",
"Remote Wakeup"
]
},
"MaxPower": {
"description": "0mA"
},
"interface_descriptors": [
{
"bLength": {
"value": "9"
},
...
"bInterfaceProtocol": {
"value": "0",
"description": "Full speed (or root) hub"
},
"iInterface": {
"value": "0"
},
"endpoint_descriptors": [
{
"bLength": {
"value": "7"
},
...
"bmAttributes": {
"value": "3",
"attributes": [
"Transfer Type Interrupt",
"Synch Type None",
"Usage Type Data"
]
},
"wMaxPacketSize": {
"value": "0x0002",
"description": "1x 2 bytes"
},
"bInterval": {
"value": "255"
}
}
]
}
]
}
},
"hub_descriptor": {
"bLength": {
"value": "9"
},
...
"wHubCharacteristic": {
"value": "0x000a",
"attributes": [
"No power switching (usb 1.0)",
"Per-port overcurrent protection"
]
},
...
"hub_port_status": {
"Port 1": {
"value": "0000.0103",
"attributes": [
"power",
"enable",
"connect"
]
},
"Port 2": {
"value": "0000.0103",
"attributes": [
"power",
"enable",
"connect"
]
}
}
},
"device_status": {
"value": "0x0001",
"description": "Self Powered"
}
}
]
```
### M3U and M3U8 files
```bash
cat playlist.m3u | jc --m3u -p
```
```json
[
{
"runtime": 105,
"display": "Example artist - Example title",
"path": "C:\\Files\\My Music\\Example.mp3"
},
{
"runtime": 321,
"display": "Example Artist2 - Example title2",
"path": "C:\\Files\\My Music\\Favorites\\Example2.ogg"
}
]
```
### mount
```bash
mount | jc --mount -p # or: jc -p mount
```
```json
[
{
"filesystem": "sysfs",
"mount_point": "/sys",
"type": "sysfs",
"options": [
"rw",
"nosuid",
"nodev",
"noexec",
"relatime"
]
},
{
"filesystem": "proc",
"mount_point": "/proc",
"type": "proc",
"options": [
"rw",
"nosuid",
"nodev",
"noexec",
"relatime"
]
},
{
"filesystem": "udev",
"mount_point": "/dev",
"type": "devtmpfs",
"options": [
"rw",
"nosuid",
"relatime",
"size=977500k",
"nr_inodes=244375",
"mode=755"
]
}
]
```
### mpstat
```bash
mpstat | jc --mpstat -p # or jc -p mpstat
```
```json
[
{
"cpu": "all",
"percent_usr": 12.94,
"percent_nice": 0.0,
"percent_sys": 26.42,
"percent_iowait": 0.43,
"percent_irq": 0.0,
"percent_soft": 0.16,
"percent_steal": 0.0,
"percent_guest": 0.0,
"percent_gnice": 0.0,
"percent_idle": 60.05,
"type": "cpu",
"time": "01:58:14 PM"
}
]
```
### netstat
```bash
netstat -apee | jc --netstat -p # or: jc -p netstat -apee
```
```json
[
{
"proto": "tcp",
"recv_q": 0,
"send_q": 0,
"local_address": "localhost",
"foreign_address": "0.0.0.0",
"state": "LISTEN",
"user": "systemd-resolve",
"inode": 26958,
"program_name": "systemd-resolve",
"kind": "network",
"pid": 887,
"local_port": "domain",
"foreign_port": "*",
"transport_protocol": "tcp",
"network_protocol": "ipv4"
},
{
"proto": "tcp",
"recv_q": 0,
"send_q": 0,
"local_address": "0.0.0.0",
"foreign_address": "0.0.0.0",
"state": "LISTEN",
"user": "root",
"inode": 30499,
"program_name": "sshd",
"kind": "network",
"pid": 1186,
"local_port": "ssh",
"foreign_port": "*",
"transport_protocol": "tcp",
"network_protocol": "ipv4"
},
{
"proto": "tcp",
"recv_q": 0,
"send_q": 0,
"local_address": "localhost",
"foreign_address": "localhost",
"state": "ESTABLISHED",
"user": "root",
"inode": 46829,
"program_name": "sshd: root",
"kind": "network",
"pid": 2242,
"local_port": "ssh",
"foreign_port": "52186",
"transport_protocol": "tcp",
"network_protocol": "ipv4",
"foreign_port_num": 52186
},
{
"proto": "tcp",
"recv_q": 0,
"send_q": 0,
"local_address": "localhost",
"foreign_address": "localhost",
"state": "ESTABLISHED",
"user": "root",
"inode": 46828,
"program_name": "ssh",
"kind": "network",
"pid": 2241,
"local_port": "52186",
"foreign_port": "ssh",
"transport_protocol": "tcp",
"network_protocol": "ipv4",
"local_port_num": 52186
},
{
"proto": "tcp6",
"recv_q": 0,
"send_q": 0,
"local_address": "[::]",
"foreign_address": "[::]",
"state": "LISTEN",
"user": "root",
"inode": 30510,
"program_name": "sshd",
"kind": "network",
"pid": 1186,
"local_port": "ssh",
"foreign_port": "*",
"transport_protocol": "tcp",
"network_protocol": "ipv6"
},
{
"proto": "udp",
"recv_q": 0,
"send_q": 0,
"local_address": "localhost",
"foreign_address": "0.0.0.0",
"state": null,
"user": "systemd-resolve",
"inode": 26957,
"program_name": "systemd-resolve",
"kind": "network",
"pid": 887,
"local_port": "domain",
"foreign_port": "*",
"transport_protocol": "udp",
"network_protocol": "ipv4"
},
{
"proto": "raw6",
"recv_q": 0,
"send_q": 0,
"local_address": "[::]",
"foreign_address": "[::]",
"state": "7",
"user": "systemd-network",
"inode": 27001,
"program_name": "systemd-network",
"kind": "network",
"pid": 867,
"local_port": "ipv6-icmp",
"foreign_port": "*",
"transport_protocol": null,
"network_protocol": "ipv6"
},
{
"proto": "unix",
"refcnt": 2,
"flags": null,
"type": "DGRAM",
"state": null,
"inode": 33322,
"program_name": "systemd",
"path": "/run/user/1000/systemd/notify",
"kind": "socket",
"pid": 1607
},
{
"proto": "unix",
"refcnt": 2,
"flags": "ACC",
"type": "SEQPACKET",
"state": "LISTENING",
"inode": 20835,
"program_name": "init",
"path": "/run/udev/control",
"kind": "socket",
"pid": 1
}
]
```
```bash
netstat -r | jc --netstat -p # or: jc -p netstat -r
```
```json
[
{
"destination": "default",
"gateway": "gateway",
"genmask": "0.0.0.0",
"route_flags": "UG",
"mss": 0,
"window": 0,
"irtt": 0,
"iface": "ens33",
"kind": "route",
"route_flags_pretty": [
"UP",
"GATEWAY"
]
},
{
"destination": "172.17.0.0",
"gateway": "0.0.0.0",
"genmask": "255.255.0.0",
"route_flags": "U",
"mss": 0,
"window": 0,
"irtt": 0,
"iface": "docker0",
"kind": "route",
"route_flags_pretty": [
"UP"
]
},
{
"destination": "192.168.71.0",
"gateway": "0.0.0.0",
"genmask": "255.255.255.0",
"route_flags": "U",
"mss": 0,
"window": 0,
"irtt": 0,
"iface": "ens33",
"kind": "route",
"route_flags_pretty": [
"UP"
]
}
]
```
```bash
netstat -i | jc --netstat -p # or: jc -p netstat -i
```
```json
[
{
"iface": "ens33",
"mtu": 1500,
"rx_ok": 476,
"rx_err": 0,
"rx_drp": 0,
"rx_ovr": 0,
"tx_ok": 312,
"tx_err": 0,
"tx_drp": 0,
"tx_ovr": 0,
"flg": "BMRU",
"kind": "interface"
},
{
"iface": "lo",
"mtu": 65536,
"rx_ok": 0,
"rx_err": 0,
"rx_drp": 0,
"rx_ovr": 0,
"tx_ok": 0,
"tx_err": 0,
"tx_drp": 0,
"tx_ovr": 0,
"flg": "LRU",
"kind": "interface"
}
]
```
### nmcli
```bash
nmcli connection show ens33 | jc --nmcli -p # or jc -p nmcli connection show ens33
```
```json
[
{
"connection_id": "ens33",
"connection_uuid": "d92ece08-9e02-47d5-b2d2-92c80e155744",
"connection_stable_id": null,
"connection_type": "802-3-ethernet",
"connection_interface_name": "ens33",
"connection_autoconnect": "yes",
"ip4_address_1": "192.168.71.180/24",
"ip4_gateway": "192.168.71.2",
"ip4_route_1": {
"dst": "0.0.0.0/0",
"nh": "192.168.71.2",
"mt": 100
},
"ip4_route_2": {
"dst": "192.168.71.0/24",
"nh": "0.0.0.0",
"mt": 100
},
"ip4_dns_1": "192.168.71.2",
"ip4_domain_1": "localdomain",
"dhcp4_option_1": {
"name": "broadcast_address",
"value": "192.168.71.255"
},
"ip6_address_1": "fe80::c1cb:715d:bc3e:b8a0/64",
"ip6_gateway": null,
"ip6_route_1": {
"dst": "fe80::/64",
"nh": "::",
"mt": 100
}
}
]
```
### ntpq
```bash
ntpq -p | jc --ntpq -p # or: jc -p ntpq -p
```
```json
[
{
"remote": "44.190.6.254",
"refid": "127.67.113.92",
"st": 2,
"t": "u",
"when": 1,
"poll": 64,
"reach": 1,
"delay": 23.399,
"offset": -2.805,
"jitter": 2.131,
"state": null
},
{
"remote": "mirror1.sjc02.s",
"refid": "216.218.254.202",
"st": 2,
"t": "u",
"when": 2,
"poll": 64,
"reach": 1,
"delay": 29.325,
"offset": 1.044,
"jitter": 4.069,
"state": null
}
]
```
### /etc/passwd file
```bash
cat /etc/passwd | jc --passwd -p
```
```json
[
{
"username": "nobody",
"password": "*",
"uid": -2,
"gid": -2,
"comment": "Unprivileged User",
"home": "/var/empty",
"shell": "/usr/bin/false"
},
{
"username": "root",
"password": "*",
"uid": 0,
"gid": 0,
"comment": "System Administrator",
"home": "/var/root",
"shell": "/bin/sh"
},
{
"username": "daemon",
"password": "*",
"uid": 1,
"gid": 1,
"comment": "System Services",
"home": "/var/root",
"shell": "/usr/bin/false"
}
]
```
### pidstat
```bash
pidstat -hl | jc --pidstat -p # or jc -p pidstat -hl
```
```json
[
{
"time": 1646859134,
"uid": 0,
"pid": 1,
"percent_usr": 0.0,
"percent_system": 0.03,
"percent_guest": 0.0,
"percent_cpu": 0.03,
"cpu": 0,
"command": "/usr/lib/systemd/systemd --switched-root --system..."
},
{
"time": 1646859134,
"uid": 0,
"pid": 6,
"percent_usr": 0.0,
"percent_system": 0.0,
"percent_guest": 0.0,
"percent_cpu": 0.0,
"cpu": 0,
"command": "ksoftirqd/0"
},
{
"time": 1646859134,
"uid": 0,
"pid": 2263,
"percent_usr": 0.0,
"percent_system": 0.0,
"percent_guest": 0.0,
"percent_cpu": 0.0,
"cpu": 0,
"command": "kworker/0:0"
}
]
```
### ping
```bash
ping 8.8.8.8 -c 3 | jc --ping -p # or: jc -p ping 8.8.8.8 -c 3
```
```json
{
"destination_ip": "8.8.8.8",
"data_bytes": 56,
"pattern": null,
"destination": "8.8.8.8",
"packets_transmitted": 3,
"packets_received": 3,
"packet_loss_percent": 0.0,
"duplicates": 0,
"time_ms": 2005.0,
"round_trip_ms_min": 23.835,
"round_trip_ms_avg": 30.46,
"round_trip_ms_max": 34.838,
"round_trip_ms_stddev": 4.766,
"responses": [
{
"type": "reply",
"timestamp": null,
"bytes": 64,
"response_ip": "8.8.8.8",
"icmp_seq": 1,
"ttl": 118,
"time_ms": 23.8,
"duplicate": false
},
{
"type": "reply",
"timestamp": null,
"bytes": 64,
"response_ip": "8.8.8.8",
"icmp_seq": 2,
"ttl": 118,
"time_ms": 34.8,
"duplicate": false
},
{
"type": "reply",
"timestamp": null,
"bytes": 64,
"response_ip": "8.8.8.8",
"icmp_seq": 3,
"ttl": 118,
"time_ms": 32.7,
"duplicate": false
}
]
}
```
### pip list
```bash
pip list | jc --pip-list -p # or: jc -p pip list # or: jc -p pip3 list
```
```json
[
{
"package": "ansible",
"version": "2.8.5"
},
{
"package": "antlr4-python3-runtime",
"version": "4.7.2"
},
{
"package": "asn1crypto",
"version": "0.24.0"
}
]
```
### pip show
```bash
pip show wrapt wheel | jc --pip-show -p # or: jc -p pip show wrapt wheel # or: jc -p pip3 show wrapt wheel
```
```json
[
{
"name": "wrapt",
"version": "1.11.2",
"summary": "Module for decorators, wrappers and monkey patching.",
"home_page": "https://github.com/GrahamDumpleton/wrapt",
"author": "Graham Dumpleton",
"author_email": "Graham.Dumpleton@gmail.com",
"license": "BSD",
"location": "/usr/local/lib/python3.7/site-packages",
"requires": null,
"required_by": "astroid"
},
{
"name": "wheel",
"version": "0.33.4",
"summary": "A built-package format for Python.",
"home_page": "https://github.com/pypa/wheel",
"author": "Daniel Holth",
"author_email": "dholth@fastmail.fm",
"license": "MIT",
"location": "/usr/local/lib/python3.7/site-packages",
"requires": null,
"required_by": null
}
]
```
### PLIST files
```bash
cat info.plist | jc --plist -p
```
```json
{
"NSAppleScriptEnabled": true,
"LSMultipleInstancesProhibited": true,
"CFBundleInfoDictionaryVersion": "6.0",
"DTPlatformVersion": "GM",
"CFBundleIconFile": "GarageBand.icns",
"CFBundleName": "GarageBand",
"DTSDKName": "macosx10.13internal",
"NSSupportsAutomaticGraphicsSwitching": true,
"RevisionDate": "2018-12-03_14:10:56",
"UTImportedTypeDeclarations": [
{
"UTTypeConformsTo": [
"public.data",
"public.content"
]
}
]
}
```
### postconf -M
```bash
postconf -M | jc --postconf -p # or jc -p postconf -M
```
```json
[
{
"service_name": "smtp",
"service_type": "inet",
"private": false,
"unprivileged": null,
"chroot": true,
"wake_up_time": null,
"process_limit": null,
"command": "smtpd",
"no_wake_up_before_first_use": null
},
{
"service_name": "pickup",
"service_type": "unix",
"private": false,
"unprivileged": null,
"chroot": true,
"wake_up_time": 60,
"process_limit": 1,
"command": "pickup",
"no_wake_up_before_first_use": false
}
]
```
### ps
```bash
ps -ef | jc --ps -p # or: jc -p ps -ef
```
```json
[
{
"uid": "root",
"pid": 1,
"ppid": 0,
"c": 0,
"stime": "Nov01",
"tty": null,
"time": "00:00:11",
"cmd": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22"
},
{
"uid": "root",
"pid": 2,
"ppid": 0,
"c": 0,
"stime": "Nov01",
"tty": null,
"time": "00:00:00",
"cmd": "[kthreadd]"
},
{
"uid": "root",
"pid": 4,
"ppid": 2,
"c": 0,
"stime": "Nov01",
"tty": null,
"time": "00:00:00",
"cmd": "[kworker/0:0H]"
}
]
```
```bash
ps axu | jc --ps -p # or: jc -p ps axu
```
```json
[
{
"user": "root",
"pid": 1,
"cpu_percent": 0.0,
"mem_percent": 0.1,
"vsz": 128072,
"rss": 6784,
"tty": null,
"stat": "Ss",
"start": "Nov09",
"time": "0:08",
"command": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22"
},
{
"user": "root",
"pid": 2,
"cpu_percent": 0.0,
"mem_percent": 0.0,
"vsz": 0,
"rss": 0,
"tty": null,
"stat": "S",
"start": "Nov09",
"time": "0:00",
"command": "[kthreadd]"
},
{
"user": "root",
"pid": 4,
"cpu_percent": 0.0,
"mem_percent": 0.0,
"vsz": 0,
"rss": 0,
"tty": null,
"stat": "S<",
"start": "Nov09",
"time": "0:00",
"command": "[kworker/0:0H]"
}
]
```
### route
```bash
route -ee | jc --route -p # or: jc -p route -ee
```
```json
[
{
"destination": "default",
"gateway": "_gateway",
"genmask": "0.0.0.0",
"flags": "UG",
"metric": 202,
"ref": 0,
"use": 0,
"iface": "ens33",
"mss": 0,
"window": 0,
"irtt": 0,
"flags_pretty": [
"UP",
"GATEWAY"
]
},
{
"destination": "192.168.71.0",
"gateway": "0.0.0.0",
"genmask": "255.255.255.0",
"flags": "U",
"metric": 202,
"ref": 0,
"use": 0,
"iface": "ens33",
"mss": 0,
"window": 0,
"irtt": 0,
"flags_pretty": [
"UP"
]
}
]
```
### rpm -qi
```bash
rpm_qia | jc --rpm_qi -p # or: jc -p rpm -qia
```
```json
[
{
"name": "make",
"epoch": 1,
"version": "3.82",
"release": "24.el7",
"architecture": "x86_64",
"install_date": "Wed 16 Oct 2019 09:21:42 AM PDT",
"group": "Development/Tools",
"size": 1160660,
"license": "GPLv2+",
"signature": "RSA/SHA256, Thu 22 Aug 2019 02:34:59 PM PDT, Key ID 24c6a8a7f4a80eb5",
"source_rpm": "make-3.82-24.el7.src.rpm",
"build_date": "Thu 08 Aug 2019 05:47:25 PM PDT",
"build_host": "x86-01.bsys.centos.org",
"relocations": "(not relocatable)",
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
"vendor": "CentOS",
"url": "http://www.gnu.org/software/make/",
"summary": "A GNU tool which simplifies the build process for users",
"description": "A GNU tool for controlling the generation of executables and other...",
"build_epoch": 1565311645,
"build_epoch_utc": null,
"install_date_epoch": 1571242902,
"install_date_epoch_utc": null
},
{
"name": "kbd-legacy",
"version": "1.15.5",
"release": "15.el7",
"architecture": "noarch",
"install_date": "Thu 15 Aug 2019 10:53:08 AM PDT",
"group": "System Environment/Base",
"size": 503608,
"license": "GPLv2+",
"signature": "RSA/SHA256, Mon 12 Nov 2018 07:17:49 AM PST, Key ID 24c6a8a7f4a80eb5",
"source_rpm": "kbd-1.15.5-15.el7.src.rpm",
"build_date": "Tue 30 Oct 2018 03:40:00 PM PDT",
"build_host": "x86-01.bsys.centos.org",
"relocations": "(not relocatable)",
"packager": "CentOS BuildSystem <http://bugs.centos.org>",
"vendor": "CentOS",
"url": "http://ftp.altlinux.org/pub/people/legion/kbd",
"summary": "Legacy data for kbd package",
"description": "The kbd-legacy package contains original keymaps for kbd package...",
"build_epoch": 1540939200,
"build_epoch_utc": null,
"install_date_epoch": 1565891588,
"install_date_epoch_utc": null
}
]
```
### rsync
```bash
rsync -i -a source/ dest | jc --rsync -p # or jc -p rsync -i -a source/ dest
```
```json
[
{
"summary": {
"sent": 1708,
"received": 8209,
"bytes_sec": 19834.0,
"total_size": 235,
"speedup": 0.02
},
"files": [
{
"filename": "./",
"metadata": ".d..t......",
"update_type": "not updated",
"file_type": "directory",
"checksum_or_value_different": false,
"size_different": false,
"modification_time_different": true,
"permissions_different": false,
"owner_different": false,
"group_different": false,
"acl_different": false,
"extended_attribute_different": false
}
]
}
]
```
### sfdisk
```bash
sfdisk -l | jc --sfdisk -p # or jc -p sfdisk -l
```
```json
[
{
"disk": "/dev/sda",
"cylinders": 2610,
"heads": 255,
"sectors_per_track": 63,
"units": "cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0",
"partitions": [
{
"device": "/dev/sda1",
"boot": true,
"start": 0,
"end": 130,
"cyls": 131,
"blocks": 1048576,
"id": "83",
"system": "Linux"
},
{
"device": "/dev/sda2",
"boot": false,
"start": 130,
"end": 2610,
"cyls": 2481,
"blocks": 19921920,
"id": "8e",
"system": "Linux LVM"
},
{
"device": "/dev/sda3",
"boot": false,
"start": 0,
"end": null,
"cyls": 0,
"blocks": 0,
"id": "0",
"system": "Empty"
},
{
"device": "/dev/sda4",
"boot": false,
"start": 0,
"end": null,
"cyls": 0,
"blocks": 0,
"id": "0",
"system": "Empty"
}
]
},
{
"disk": "/dev/mapper/centos-root",
"cylinders": 2218,
"heads": 255,
"sectors_per_track": 63
},
{
"disk": "/dev/mapper/centos-swap",
"cylinders": 261,
"heads": 255,
"sectors_per_track": 63
}
]
```
### /etc/shadow file
```bash
cat /etc/shadow | jc --shadow -p
```
```json
[
{
"username": "root",
"password": "*",
"last_changed": 18113,
"minimum": 0,
"maximum": 99999,
"warn": 7,
"inactive": null,
"expire": null
},
{
"username": "daemon",
"password": "*",
"last_changed": 18113,
"minimum": 0,
"maximum": 99999,
"warn": 7,
"inactive": null,
"expire": null
},
{
"username": "bin",
"password": "*",
"last_changed": 18113,
"minimum": 0,
"maximum": 99999,
"warn": 7,
"inactive": null,
"expire": null
}
]
```
### ss
```bash
ss -a | jc --ss -p # or: jc -p ss -a
```
```json
[
{
"netid": "nl",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"peer_address": "*",
"channel": "rtnl:kernel"
},
{
"netid": "nl",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"peer_address": "*",
"pid": 893,
"channel": "rtnl:systemd-resolve"
},
{
"netid": "p_raw",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"peer_address": "*",
"link_layer": "LLDP",
"interface": "ens33"
},
{
"netid": "u_dgr",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"local_port": "93066",
"peer_address": "*",
"peer_port": "0",
"path": "/run/user/1000/systemd/notify"
},
{
"netid": "u_seq",
"state": "LISTEN",
"recv_q": 0,
"send_q": 128,
"local_port": "20699",
"peer_address": "*",
"peer_port": "0",
"path": "/run/udev/control"
},
{
"netid": "icmp6",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"local_address": "*",
"local_port": "ipv6-icmp",
"peer_address": "*",
"peer_port": "*",
"interface": "ens33"
},
{
"netid": "udp",
"state": "UNCONN",
"recv_q": 0,
"send_q": 0,
"local_address": "127.0.0.53",
"local_port": "domain",
"peer_address": "0.0.0.0",
"peer_port": "*",
"interface": "lo"
},
{
"netid": "tcp",
"state": "LISTEN",
"recv_q": 0,
"send_q": 128,
"local_address": "127.0.0.53",
"local_port": "domain",
"peer_address": "0.0.0.0",
"peer_port": "*",
"interface": "lo"
},
{
"netid": "tcp",
"state": "LISTEN",
"recv_q": 0,
"send_q": 128,
"local_address": "0.0.0.0",
"local_port": "ssh",
"peer_address": "0.0.0.0",
"peer_port": "*"
},
{
"netid": "tcp",
"state": "LISTEN",
"recv_q": 0,
"send_q": 128,
"local_address": "[::]",
"local_port": "ssh",
"peer_address": "[::]",
"peer_port": "*"
},
{
"netid": "v_str",
"state": "ESTAB",
"recv_q": 0,
"send_q": 0,
"local_address": "999900439",
"local_port": "1023",
"peer_address": "0",
"peer_port": "976",
"local_port_num": 1023,
"peer_port_num": 976
}
]
```
### stat
```bash
stat /bin/* | jc --stat -p # or: jc -p stat /bin/*
```
```json
[
{
"file": "/bin/bash",
"size": 1113504,
"blocks": 2176,
"io_blocks": 4096,
"type": "regular file",
"device": "802h/2050d",
"inode": 131099,
"links": 1,
"access": "0755",
"flags": "-rwxr-xr-x",
"uid": 0,
"user": "root",
"gid": 0,
"group": "root",
"access_time": "2019-11-14 08:18:03.509681766 +0000",
"modify_time": "2019-06-06 22:28:15.000000000 +0000",
"change_time": "2019-08-12 17:21:29.521945390 +0000",
"birth_time": null,
"access_time_epoch": 1573748283,
"access_time_epoch_utc": 1573719483,
"modify_time_epoch": 1559885295,
"modify_time_epoch_utc": 1559860095,
"change_time_epoch": 1565655689,
"change_time_epoch_utc": 1565630489,
"birth_time_epoch": null,
"birth_time_epoch_utc": null
},
{
"file": "/bin/btrfs",
"size": 716464,
"blocks": 1400,
"io_blocks": 4096,
"type": "regular file",
"device": "802h/2050d",
"inode": 131100,
"links": 1,
"access": "0755",
"flags": "-rwxr-xr-x",
"uid": 0,
"user": "root",
"gid": 0,
"group": "root",
"access_time": "2019-11-14 08:18:28.990834276 +0000",
"modify_time": "2018-03-12 23:04:27.000000000 +0000",
"change_time": "2019-08-12 17:21:29.545944399 +0000",
"birth_time": null,
"access_time_epoch": 1573748308,
"access_time_epoch_utc": 1573719508,
"modify_time_epoch": 1520921067,
"modify_time_epoch_utc": 1520895867,
"change_time_epoch": 1565655689,
"change_time_epoch_utc": 1565630489,
"birth_time_epoch": null,
"birth_time_epoch_utc": null
}
]
```
### sysctl
```bash
sysctl -a | jc --sysctl -p # or: jc -p sysctl -a
```
```json
{
"user.cs_path": "/usr/bin:/bin:/usr/sbin:/sbin",
"user.bc_base_max": 99,
"user.bc_dim_max": 2048,
"user.bc_scale_max": 99,
"user.bc_string_max": 1000,
"user.coll_weights_max": 2,
"user.expr_nest_max": 32
}
```
### Syslog strings (RFC 5424)
```bash
cat syslog.txt | jc --syslog -p
```
```json
[
{
"priority": 35,
"version": 1,
"timestamp": "2003-10-11T22:14:15.003Z",
"hostname": "mymachine.example.com",
"appname": "evntslog",
"proc_id": null,
"msg_id": "ID47",
"structured_data": [
{
"identity": "exampleSDID@32473",
"parameters": {
"iut": "3",
"eventSource": "Application",
"eventID": "1011"
}
},
{
"identity": "examplePriority@32473",
"parameters": {
"class": "high"
}
}
],
"message": "unauthorized attempt",
"timestamp_epoch": 1065935655,
"timestamp_epoch_utc": 1065910455
}
]
```
### Syslog strings (RFC 3164)
```bash
cat syslog.txt | jc --syslog-bsd -p
```
```json
[
{
"priority": 34,
"date": "Oct 11 22:14:15",
"hostname": "mymachine",
"tag": "su",
"content": "'su root' failed for lonvick on /dev/pts/8"
}
]
```
### systemctl
```bash
systemctl -a | jc --systemctl -p # or: jc -p systemctl -a
```
```json
[
{
"unit": "proc-sys-fs-binfmt_misc.automount",
"load": "loaded",
"active": "active",
"sub": "waiting",
"description": "Arbitrary Executable File Formats File System Automount Point"
},
{
"unit": "dev-block-8:2.device",
"load": "loaded",
"active": "active",
"sub": "plugged",
"description": "LVM PV 3klkIj-w1qk-DkJi-0XBJ-y3o7-i2Ac-vHqWBM on /dev/sda2 2"
},
{
"unit": "dev-cdrom.device",
"load": "loaded",
"active": "active",
"sub": "plugged",
"description": "VMware_Virtual_IDE_CDROM_Drive"
}
]
```
### systemctl list-jobs
```bash
systemctl list-jobs | jc --systemctl-lj -p # or: jc -p systemctl list-jobs
```
```json
[
{
"job": 3543,
"unit": "nginxAfterGlusterfs.service",
"type": "start",
"state": "waiting"
},
{
"job": 3545,
"unit": "glusterReadyForLocalhostMount.service",
"type": "start",
"state": "running"
},
{
"job": 3506,
"unit": "nginx.service",
"type": "start",
"state": "waiting"
}
]
```
### systemctl list-sockets
```bash
systemctl list-sockets | jc --systemctl-ls -p # or: jc -p systemctl list-sockets
```
```json
[
{
"listen": "/dev/log",
"unit": "systemd-journald.socket",
"activates": "systemd-journald.service"
},
{
"listen": "/run/dbus/system_bus_socket",
"unit": "dbus.socket",
"activates": "dbus.service"
},
{
"listen": "/run/dmeventd-client",
"unit": "dm-event.socket",
"activates": "dm-event.service"
}
]
```
### systemctl list-unit-files
```bash
systemctl list-unit-files | jc --systemctl-luf -p # or: jc -p systemctl list-unit-files
```
```json
[
{
"unit_file": "proc-sys-fs-binfmt_misc.automount",
"state": "static"
},
{
"unit_file": "dev-hugepages.mount",
"state": "static"
},
{
"unit_file": "dev-mqueue.mount",
"state": "static"
}
]
```
### systeminfo
```bash
systeminfo | jc --systeminfo -p # or: jc -p systeminfo
```
```json
{
"host_name": "TESTLAPTOP",
"os_name": "Microsoft Windows 10 Enterprise",
"os_version": "10.0.17134 N/A Build 17134",
"os_manufacturer": "Microsoft Corporation",
"os_configuration": "Member Workstation",
"os_build_type": "Multiprocessor Free",
"registered_owner": "Test, Inc.",
"registered_organization": "Test, Inc.",
"product_id": "11111-11111-11111-AA111",
"original_install_date": "3/26/2019, 3:51:30 PM",
"system_boot_time": "3/30/2021, 6:13:59 AM",
"system_manufacturer": "Dell Inc.",
"system_model": "Precision 5530",
"system_type": "x64-based PC",
"processors": [
"Intel64 Family 6 Model 158 Stepping 10 GenuineIntel ~2592 Mhz"
],
"bios_version": "Dell Inc. 1.16.2, 4/21/2020",
"windows_directory": "C:\\WINDOWS",
"system_directory": "C:\\WINDOWS\\system32",
"boot_device": "\\Device\\HarddiskVolume2",
"system_locale": "en-us;English (United States)",
"input_locale": "en-us;English (United States)",
"time_zone": "(UTC+00:00) UTC",
"total_physical_memory_mb": 32503,
"available_physical_memory_mb": 19743,
"virtual_memory_max_size_mb": 37367,
"virtual_memory_available_mb": 22266,
"virtual_memory_in_use_mb": 15101,
"page_file_locations": "C:\\pagefile.sys",
"domain": "test.com",
"logon_server": "\\\\TESTDC01",
"hotfixs": [
"KB2693643",
"KB4601054"
],
"network_cards": [
{
"name": "Intel(R) Wireless-AC 9260 160MHz",
"connection_name": "Wi-Fi",
"status": null,
"dhcp_enabled": true,
"dhcp_server": "192.168.2.1",
"ip_addresses": [
"192.168.2.219"
]
}
],
"hyperv_requirements": {
"vm_monitor_mode_extensions": true,
"virtualization_enabled_in_firmware": true,
"second_level_address_translation": false,
"data_execution_prevention_available": true
},
"original_install_date_epoch": 1553640690,
"original_install_date_epoch_utc": 1553615490,
"system_boot_time_epoch": 1617110039,
"system_boot_time_epoch_utc": 1617084839
}
```
### /usr/bin/time
```bash
/usr/bin/time --verbose -o timefile.out sleep 2.5; cat timefile.out | jc --time -p
```
```json
{
"command_being_timed": "sleep 2.5",
"user_time": 0.0,
"system_time": 0.0,
"cpu_percent": 0,
"elapsed_time": "0:02.50",
"average_shared_text_size": 0,
"average_unshared_data_size": 0,
"average_stack_size": 0,
"average_total_size": 0,
"maximum_resident_set_size": 2084,
"average_resident_set_size": 0,
"major_pagefaults": 0,
"minor_pagefaults": 72,
"voluntary_context_switches": 2,
"involuntary_context_switches": 1,
"swaps": 0,
"block_input_operations": 0,
"block_output_operations": 0,
"messages_sent": 0,
"messages_received": 0,
"signals_delivered": 0,
"page_size": 4096,
"exit_status": 0,
"elapsed_time_hours": 0,
"elapsed_time_minutes": 0,
"elapsed_time_seconds": 2,
"elapsed_time_centiseconds": 50,
"elapsed_time_total_seconds": 2.5
}
```
### timedatectl status
```bash
timedatectl | jc --timedatectl -p # or: jc -p timedatectl
```
```json
{
"local_time": "Tue 2020-03-10 17:53:21 PDT",
"universal_time": "Wed 2020-03-11 00:53:21 UTC",
"rtc_time": "Wed 2020-03-11 00:53:21",
"time_zone": "America/Los_Angeles (PDT, -0700)",
"ntp_enabled": true,
"ntp_synchronized": true,
"rtc_in_local_tz": false,
"dst_active": true,
"epoch_utc": 1583888001
}
```
### Timestamp strings (UNIX Epoch)
```bash
echo '1658599410' | jc --timestamp -p
```
```json
{
"naive": {
"year": 2022,
"month": "Jul",
"month_num": 7,
"day": 23,
"weekday": "Sat",
"weekday_num": 6,
"hour": 11,
"hour_24": 11,
"minute": 3,
"second": 30,
"period": "AM",
"day_of_year": 204,
"week_of_year": 29,
"iso": "2022-07-23T11:03:30"
},
"utc": {
"year": 2022,
"month": "Jul",
"month_num": 7,
"day": 23,
"weekday": "Sat",
"weekday_num": 6,
"hour": 6,
"hour_24": 18,
"minute": 3,
"second": 30,
"period": "PM",
"utc_offset": "+0000",
"day_of_year": 204,
"week_of_year": 29,
"iso": "2022-07-23T18:03:30+00:00"
}
}
```
### tob -b
```bash
top -b -n 1 | jc --top -p # or jc -p tob -b -n 1
```
```json
[
{
"time": "11:20:43",
"uptime": 118,
"users": 2,
"load_1m": 0.0,
"load_5m": 0.01,
"load_15m": 0.05,
"tasks_total": 108,
"tasks_running": 2,
"tasks_sleeping": 106,
"tasks_stopped": 0,
"tasks_zombie": 0,
"cpu_user": 5.6,
"cpu_sys": 11.1,
"cpu_nice": 0.0,
"cpu_idle": 83.3,
"cpu_wait": 0.0,
"cpu_hardware": 0.0,
"cpu_software": 0.0,
"cpu_steal": 0.0,
"mem_total": 3.7,
"mem_free": 3.3,
"mem_used": 0.2,
"mem_buff_cache": 0.2,
"swap_total": 2.0,
"swap_free": 2.0,
"swap_used": 0.0,
"mem_available": 3.3,
"processes": [
{
"pid": 2225,
"user": "kbrazil",
"priority": 20,
"nice": 0,
"virtual_mem": 158.1,
"resident_mem": 2.2,
"shared_mem": 1.6,
"status": "running",
"percent_cpu": 12.5,
"percent_mem": 0.1,
"time_hundredths": "0:00.02",
"command": "top",
"parent_pid": 1884,
"uid": 1000,
"real_uid": 1000,
"real_user": "kbrazil",
"saved_uid": 1000,
"saved_user": "kbrazil",
"gid": 1000,
"group": "kbrazil",
"pgrp": 2225,
"tty": "pts/0",
"tty_process_gid": 2225,
"session_id": 1884,
"thread_count": 1,
"last_used_processor": 0,
"time": "0:00",
"swap": 0.0,
"code": 0.1,
"data": 1.0,
"major_page_fault_count": 0,
"minor_page_fault_count": 736,
"dirty_pages_count": 0,
"sleeping_in_function": null,
"flags": "..4.2...",
"cgroups": "1:name=systemd:/user.slice/user-1000.+",
"supplementary_gids": [
10,
1000
],
"supplementary_groups": [
"wheel",
"kbrazil"
],
"thread_gid": 2225,
"environment_variables": [
"XDG_SESSION_ID=2",
"HOSTNAME=localhost"
],
"major_page_fault_count_delta": 0,
"minor_page_fault_count_delta": 4,
"used": 2.2,
"ipc_namespace_inode": 4026531839,
"mount_namespace_inode": 4026531840,
"net_namespace_inode": 4026531956,
"pid_namespace_inode": 4026531836,
"user_namespace_inode": 4026531837,
"nts_namespace_inode": 4026531838
}
]
}
]
```
### tracepath
```bash
tracepath6 3ffe:2400:0:109::2 | jc --tracepath -p
```
```json
{
"pmtu": 1480,
"forward_hops": 2,
"return_hops": 2,
"hops": [
{
"ttl": 1,
"guess": true,
"host": "[LOCALHOST]",
"reply_ms": null,
"pmtu": 1500,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 1,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.411,
"pmtu": null,
"asymmetric_difference": null,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "dust.inr.ac.ru",
"reply_ms": 0.39,
"pmtu": 1480,
"asymmetric_difference": 1,
"reached": false
},
{
"ttl": 2,
"guess": false,
"host": "3ffe:2400:0:109::2",
"reply_ms": 463.514,
"pmtu": null,
"asymmetric_difference": null,
"reached": true
}
]
}
```
### traceroute
```bash
traceroute -m 3 8.8.8.8 | jc --traceroute -p # or: jc -p traceroute -m 3 8.8.8.8
```
```json
{
"destination_ip": "8.8.8.8",
"destination_name": "8.8.8.8",
"hops": [
{
"hop": 1,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.local.net",
"rtt": 6.616
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.local.net",
"rtt": 6.413
},
{
"annotation": null,
"asn": null,
"ip": "192.168.1.254",
"name": "dsldevice.local.net",
"rtt": 6.308
}
]
},
{
"hop": 2,
"probes": [
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 29.367
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 40.197
},
{
"annotation": null,
"asn": null,
"ip": "76.220.24.1",
"name": "76-220-24-1.lightspeed.sntcca.sbcglobal.net",
"rtt": 29.162
}
]
},
{
"hop": 3,
"probes": []
}
]
}
```
### ufw status
```bash
ufw status verbose | jc --ufw -p # or jc -p ufw status verbose
```
```json
{
"status": "active",
"logging": "on",
"logging_level": "low",
"default": "deny (incoming), allow (outgoing), disabled (routed)",
"new_profiles": "skip",
"rules": [
{
"action": "ALLOW",
"action_direction": "IN",
"index": null,
"network_protocol": "ipv4",
"to_interface": "any",
"to_transport": "any",
"to_service": null,
"to_ports": [
22
],
"to_ip": "0.0.0.0",
"to_ip_prefix": 0,
"comment": null,
"from_ip": "0.0.0.0",
"from_ip_prefix": 0,
"from_interface": "any",
"from_transport": "any",
"from_port_ranges": [
{
"start": 0,
"end": 65535
}
],
"from_service": null
},
{
"action": "ALLOW",
"action_direction": "IN",
"index": null,
"network_protocol": "ipv4",
"to_interface": "any",
"to_transport": "tcp",
"to_service": null,
"to_ports": [
80,
443
],
"to_ip": "0.0.0.0",
"to_ip_prefix": 0,
"comment": null,
"from_ip": "0.0.0.0",
"from_ip_prefix": 0,
"from_interface": "any",
"from_transport": "any",
"from_port_ranges": [
{
"start": 0,
"end": 65535
}
],
"from_service": null
}
]
}
```
### ufw app info [application]
```bash
ufw app info MSN | jc --ufw-appinfo -p # or: jc -p ufw app info MSN
```
```json
[
{
"profile": "MSN",
"title": "MSN Chat",
"description": "MSN chat protocol (with file transfer and voice)",
"tcp_list": [
1863,
6901
],
"udp_list": [
1863,
6901
],
"tcp_ranges": [
{
"start": 6891,
"end": 6900
}
],
"normalized_tcp_list": [
1863,
6901
],
"normalized_tcp_ranges": [
{
"start": 6891,
"end": 6900
}
],
"normalized_udp_list": [
1863,
6901
]
}
]
```
### uname -a
```bash
uname -a | jc --uname -p # or: jc -p uname -a
```
```json
{
"kernel_name": "Linux",
"node_name": "user-ubuntu",
"kernel_release": "4.15.0-65-generic",
"operating_system": "GNU/Linux",
"hardware_platform": "x86_64",
"processor": "x86_64",
"machine": "x86_64",
"kernel_version": "#74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019"
}
```
### update-alternatives --get-selections
```bash
update-alternatives --get-selections | jc --update-alt-gs -p # or: jc -p update-alternatives --get-selections
```
```json
[
{
"name": "arptables",
"status": "auto",
"current": "/usr/sbin/arptables-nft"
},
{
"name": "awk",
"status": "auto",
"current": "/usr/bin/gawk"
}
]
```
### update-alternatives --query
```bash
update-alternatives --query editor | jc --update-alt-q -p # or: jc -p update-alternatives --query editor
```
```json
{
"name": "editor",
"link": "/usr/bin/editor",
"slaves": [
{
"name": "editor.1.gz",
"path": "/usr/share/man/man1/editor.1.gz"
},
{
"name": "editor.da.1.gz",
"path": "/usr/share/man/da/man1/editor.1.gz"
}
],
"status": "auto",
"best": "/bin/nano",
"value": "/bin/nano",
"alternatives": [
{
"name": "/bin/ed",
"priority": -100,
"slaves": [
{
"name": "editor.1.gz",
"path": "/usr/share/man/man1/ed.1.gz"
}
]
},
{
"name": "/bin/nano",
"priority": 40,
"slaves": [
{
"name": "editor.1.gz",
"path": "/usr/share/man/man1/nano.1.gz"
}
]
}
]
}
```
### upower
```bash
upower -i /org/freedesktop/UPower/devices/battery | jc --upower -p # or jc -p upower -i /org/freedesktop/UPower/devices/battery
```
```json
[
{
"native_path": "/sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0",
"vendor": "NOTEBOOK",
"model": "BAT",
"serial": "0001",
"power_supply": true,
"updated": "Thu 11 Mar 2021 06:28:08 PM UTC",
"has_history": true,
"has_statistics": true,
"detail": {
"type": "battery",
"present": true,
"rechargeable": true,
"state": "charging",
"energy": 22.3998,
"energy_empty": 0.0,
"energy_full": 52.6473,
"energy_full_design": 62.16,
"energy_rate": 31.6905,
"voltage": 12.191,
"time_to_full": 57.3,
"percentage": 42.5469,
"capacity": 84.6964,
"technology": "lithium-ion",
"energy_unit": "Wh",
"energy_empty_unit": "Wh",
"energy_full_unit": "Wh",
"energy_full_design_unit": "Wh",
"energy_rate_unit": "W",
"voltage_unit": "V",
"time_to_full_unit": "minutes"
},
"history_charge": [
{
"time": 1328809335,
"percent_charged": 42.547,
"status": "charging"
},
{
"time": 1328809305,
"percent_charged": 42.02,
"status": "charging"
}
],
"history_rate": [
{
"time": 1328809335,
"percent_charged": 31.691,
"status": "charging"
}
],
"updated_seconds_ago": 441975,
"updated_epoch": 1615516088,
"updated_epoch_utc": 1615487288
}
]
```
### uptime
```bash
uptime | jc --uptime -p # or: jc -p uptime
```
```json
{
"time": "11:35",
"uptime": "3 days, 4:03",
"users": 5,
"load_1m": 1.88,
"load_5m": 2.0,
"load_15m": 1.94,
"time_hour": 11,
"time_minute": 35,
"time_second": null,
"uptime_days": 3,
"uptime_hours": 4,
"uptime_minutes": 3,
"uptime_total_seconds": 273780
}
```
### URL string
```bash
echo "http://example.com/test/path?q1=foo&q1=bar&q2=baz#frag" \\
| jc --url -p
```
```json
{
"url": "http://example.com/test/path?q1=foo&q1=bar&q2=baz#frag",
"scheme": "http",
"netloc": "example.com",
"path": "/test/path",
"path_list": [
"test",
"path"
],
"query": "q1=foo&q1=bar&q2=baz",
"query_obj": {
"q1": [
"foo",
"bar"
],
"q2": [
"baz"
]
},
"fragment": "frag",
"username": null,
"password": null,
"hostname": "example.com",
"port": null,
"encoded": {
"url": "http://example.com/test/path?q1=foo&q1=bar&q2=baz#frag",
"scheme": "http",
"netloc": "example.com",
"path": "/test/path",
"path_list": [
"test",
"path"
],
"query": "q1=foo&q1=bar&q2=baz",
"fragment": "frag",
"username": null,
"password": null,
"hostname": "example.com",
"port": null
},
"decoded": {
"url": "http://example.com/test/path?q1=foo&q1=bar&q2=baz#frag",
"scheme": "http",
"netloc": "example.com",
"path": "/test/path",
"path_list": [
"test",
"path"
],
"query": "q1=foo&q1=bar&q2=baz",
"fragment": "frag",
"username": null,
"password": null,
"hostname": "example.com",
"port": null
}
}
```
### w
```bash
w | jc --w -p # or: jc -p w
```
```json
[
{
"user": "root",
"tty": "tty1",
"from": null,
"login_at": "07:49",
"idle": "1:15m",
"jcpu": "0.00s",
"pcpu": "0.00s",
"what": "-bash"
},
{
"user": "root",
"tty": "ttyS0",
"from": null,
"login_at": "06:24",
"idle": "0.00s",
"jcpu": "0.43s",
"pcpu": "0.00s",
"what": "w"
},
{
"user": "root",
"tty": "pts/0",
"from": "192.168.71.1",
"login_at": "06:29",
"idle": "2:35m",
"jcpu": "0.00s",
"pcpu": "0.00s",
"what": "-bash"
}
]
```
### wc
```bash
wc * | jc --wc -p # or: jc -p wc *
```
```json
[
{
"filename": "airport-I.json",
"lines": 1,
"words": 30,
"characters": 307
},
{
"filename": "airport-I.out",
"lines": 15,
"words": 33,
"characters": 348
},
{
"filename": "airport-s.json",
"lines": 1,
"words": 202,
"characters": 2152
}
]
```
### who
```bash
who | jc --who -p # or: jc -p who
```
```json
[
{
"user": "joeuser",
"tty": "ttyS0",
"time": "2020-03-02 02:52",
"epoch": 1583146320
},
{
"user": "joeuser",
"tty": "pts/0",
"time": "2020-03-02 05:15",
"from": "192.168.71.1",
"epoch": 1583154900
}
]
```
```bash
who -a | jc --who -p # or: jc -p who -a
```
```json
[
{
"event": "reboot",
"time": "Feb 7 23:31",
"pid": 1,
"epoch": null
},
{
"user": "joeuser",
"writeable_tty": "+",
"tty": "ttys004",
"time": "Mar 1 16:35",
"idle": ".",
"pid": 15679,
"from": "192.168.1.5",
"epoch": null
}
]
```
### X.509 PEM and DER certificate files
```bash
cat entrust.pem | jc --x509-cert -p
```
```json
[
{
"tbs_certificate": {
"version": "v3",
"serial_number": "a6:8b:79:29:00:00:00:00:50:d0:91:f9",
"signature": {
"algorithm": "sha384_ecdsa",
"parameters": null
},
"issuer": {
"country_name": "US",
"organization_name": "Entrust, Inc.",
"organizational_unit_name": [
"See www.entrust.net/legal-terms",
"(c) 2012 Entrust, Inc. - for authorized use only"
],
"common_name": "Entrust Root Certification Authority - EC1"
},
"validity": {
"not_before": 1355844336,
"not_after": 2144764536,
"not_before_iso": "2012-12-18T15:25:36+00:00",
"not_after_iso": "2037-12-18T15:55:36+00:00"
},
"subject": {
"country_name": "US",
"organization_name": "Entrust, Inc.",
"organizational_unit_name": [
"See www.entrust.net/legal-terms",
"(c) 2012 Entrust, Inc. - for authorized use only"
],
"common_name": "Entrust Root Certification Authority - EC1"
},
"subject_public_key_info": {
"algorithm": {
"algorithm": "ec",
"parameters": "secp384r1"
},
"public_key": "04:84:13:c9:d0:ba:6d:41:7b:e2:6c:d0:eb:55:5f:66:02:1a:24:f4:5b:89:69:47:e3:b8:c2:7d:f1:f2:02:c5:9f:a0:f6:5b:d5:8b:06:19:86:4f:53:10:6d:07:24:27:a1:a0:f8:d5:47:19:61:4c:7d:ca:93:27:ea:74:0c:ef:6f:96:09:fe:63:ec:70:5d:36:ad:67:77:ae:c9:9d:7c:55:44:3a:a2:63:51:1f:f5:e3:62:d4:a9:47:07:3e:cc:20"
},
"issuer_unique_id": null,
"subject_unique_id": null,
"extensions": [
{
"extn_id": "key_usage",
"critical": true,
"extn_value": [
"key_cert_sign",
"crl_sign"
]
},
{
"extn_id": "basic_constraints",
"critical": true,
"extn_value": {
"ca": true,
"path_len_constraint": null
}
},
{
"extn_id": "key_identifier",
"critical": false,
"extn_value": "b7:63:e7:1a:dd:8d:e9:08:a6:55:83:a4:e0:6a:50:41:65:11:42:49"
}
]
},
"signature_algorithm": {
"algorithm": "sha384_ecdsa",
"parameters": null
},
"signature_value": "30:64:02:30:61:79:d8:e5:42:47:df:1c:ae:53:99:17:b6:6f:1c:7d:e1:bf:11:94:d1:03:88:75:e4:8d:89:a4:8a:77:46:de:6d:61:ef:02:f5:fb:b5:df:cc:fe:4e:ff:fe:a9:e6:a7:02:30:5b:99:d7:85:37:06:b5:7b:08:fd:eb:27:8b:4a:94:f9:e1:fa:a7:8e:26:08:e8:7c:92:68:6d:73:d8:6f:26:ac:21:02:b8:99:b7:26:41:5b:25:60:ae:d0:48:1a:ee:06"
}
]
```
### X.509 PEM and DER certificate request files
```bash
cat myserver.csr | jc --x509-csr -p
```
```json
[
{
"certification_request_info": {
"version": "v1",
"subject": {
"common_name": "myserver.for.example"
},
"subject_pk_info": {
"algorithm": {
"algorithm": "ec",
"parameters": "secp256r1"
},
"public_key": "04:40:33:c0:91:8f:e9:46:ea:d0:dc:d0:f9:63:2c:a4:35:1f:0f:54:c8:a9:9b:e3:9e:d4:f3:64:b8:60:cc:7f:39:75:dd:a7:61:31:02:7c:9e:89:c6:db:45:15:f2:5f:b0:65:29:0b:42:d2:6e:c2:ea:a6:23:bd:fc:65:e5:7d:4e"
},
"attributes": [
{
"type": "extension_request",
"values": [
[
{
"extn_id": "extended_key_usage",
"critical": false,
"extn_value": [
"server_auth"
]
},
{
"extn_id": "subject_alt_name",
"critical": false,
"extn_value": [
"myserver.for.example"
]
}
]
]
}
]
},
"signature_algorithm": {
"algorithm": "sha384_ecdsa",
"parameters": null
},
"signature": "30:45:02:20:77:ac:5b:51:bf:c5:f5:43:02:52:ae:66:8a:fe:95:98:98:98:a9:45:34:31:08:ff:2c:cc:92:d9:1c:70:28:74:02:21:00:97:79:7b:e7:45:18:76:cf:d7:3b:79:34:56:d2:69:b5:73:41:9b:8a:b7:ad:ec:80:23:c1:2f:64:da:e5:28:19"
}
]
```
### XML files
```bash
cat cd_catalog.xml
```
```xml
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
...
```
```bash
cat cd_catalog.xml | jc --xml -p
```
```json
{
"CATALOG": {
"CD": [
{
"TITLE": "Empire Burlesque",
"ARTIST": "Bob Dylan",
"COUNTRY": "USA",
"COMPANY": "Columbia",
"PRICE": "10.90",
"YEAR": "1985"
},
{
"TITLE": "Hide your heart",
"ARTIST": "Bonnie Tyler",
"COUNTRY": "UK",
"COMPANY": "CBS Records",
"PRICE": "9.90",
"YEAR": "1988"
}
]
}
}
```
### xrandr
```bash
$ xrandr | jc --xrandr -p # or jc -p xrandr
```
```json
{
"screens": [
{
"screen_number": 0,
"minimum_width": 8,
"minimum_height": 8,
"current_width": 1920,
"current_height": 1080,
"maximum_width": 32767,
"maximum_height": 32767,
"associated_device": {
"associated_modes": [
{
"resolution_width": 1920,
"resolution_height": 1080,
"is_high_resolution": false,
"frequencies": [
{
"frequency": 60.03,
"is_current": true,
"is_preferred": true
},
{
"frequency": 59.93,
"is_current": false,
"is_preferred": false
}
]
},
{
"resolution_width": 1680,
"resolution_height": 1050,
"is_high_resolution": false,
"frequencies": [
{
"frequency": 59.88,
"is_current": false,
"is_preferred": false
}
]
}
],
"is_connected": true,
"is_primary": true,
"device_name": "eDP1",
"resolution_width": 1920,
"resolution_height": 1080,
"offset_width": 0,
"offset_height": 0,
"dimension_width": 310,
"dimension_height": 170
}
}
],
"unassociated_devices": []
}
```
### YAML files
```bash
cat istio.yaml
```
```yaml
apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
name: "default"
namespace: "default"
spec:
peers:
- mtls: {}
---
apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
name: "default"
namespace: "default"
spec:
host: "*.default.svc.cluster.local"
trafficPolicy:
tls:
mode: ISTIO_MUTUAL
```
```bash
cat istio.yaml | jc --yaml -p
```
```json
[
{
"apiVersion": "authentication.istio.io/v1alpha1",
"kind": "Policy",
"metadata": {
"name": "default",
"namespace": "default"
},
"spec": {
"peers": [
{
"mtls": {}
}
]
}
},
{
"apiVersion": "networking.istio.io/v1alpha3",
"kind": "DestinationRule",
"metadata": {
"name": "default",
"namespace": "default"
},
"spec": {
"host": "*.default.svc.cluster.local",
"trafficPolicy": {
"tls": {
"mode": "ISTIO_MUTUAL"
}
}
}
}
]
```
### zipinfo
```bash
zipinfo file.zip | jc --zipinfo -p # or: jc -p zipinfo file.zip
```
```json
[
{
"archive": "file.zip",
"size": 4116,
"size_unit": "bytes",
"number_entries": 1,
"number_files": 1,
"bytes_uncompressed": 11837,
"bytes_compressed": 3966,
"percent_compressed": 66.5,
"files": [
{
"flags": "-rw-r--r--",
"zipversion": "2.1",
"zipunder": "unx",
"filesize": 11837,
"type": "bX",
"method": "defN",
"date": "21-Dec-08",
"time": "20:50",
"filename": "compressed_file"
}
]
}
]
```
© 2019-2021 Kelly Brazil
================================================
FILE: LICENSE.md
================================================
MIT License
Copyright (c) 2020 Kelly Brazil
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: MANIFEST.in
================================================
include jc/py.typed
include man/jc.1
include CHANGELOG
================================================
FILE: README-snap.md
================================================
# How to use `jc` with `snap`
## How to build `snap` package
- Install `snapd`. [One](https://snapcraft.io/docs/installing-snapd) or [two](https://github.com/don-rumata/ansible-role-install-snap).
- Install `snapcraft`:
```bash
$ sudo snap install snapcraft --classic
```
- Update snapd:
```bash
$ sudo snap refresh snapcraft --edge
```
- Clone the repo:
```bash
$ git clone https://github.com/kellyjonbrazil/jc
```
- Change the directory:
```bash
$ cd ./jc
```
- Select branch:
```bash
$ git checkout snap-support
```
- Initialize LXD:
```bash
$ lxd init --auto
```
- Build `.snap` file:
```bash
$ snapcraft
```
## How to install local snap file
```bash
$ snap install --dangerous ./jc_*_amd64.snap
```
## How to use `jc` with plugins
- Put your plugin in the `"$HOME/.local/share/jc"` directory.
- To connect the directory, run:
```bash
snap connect jc:dot-jc-plugins snapd
```
## Urls
- <https://snapcraft.io/docs/supported-interfaces>
- <https://snapcraft.io/docs/interface-management>
- <https://snapcraft.io/docs/personal-files-interface>
- <https://snapcraft.io/docs/python-apps>
- <https://documentation.ubuntu.com/lxd/en/latest/getting_started/>
================================================
FILE: README.md
================================================
[](https://pypi.org/project/jc/)
> Check out the `jc` Python [package documentation](https://github.com/kellyjonbrazil/jc/tree/master/docs) for developers
> Try the `jc` [web demo](https://jc-web.onrender.com/) and [REST API](https://github.com/kellyjonbrazil/jc-restapi)
> `jc` is available as an
[Ansible filter plugin](https://docs.ansible.com/ansible/latest/collections/community/general/jc_filter.html#ansible-collections-community-general-jc-filter)
in the `community.general` collection. See this
[blog post](https://blog.kellybrazil.com/2020/08/30/parsing-command-output-in-ansible-with-jc/)
for an example.
# JC
JSON Convert
`jc` JSONifies the output of many CLI tools, file-types, and common strings
for easier parsing in scripts. See the [**Parsers**](#parsers) section for
supported commands, file-types, and strings.
```bash
dig example.com | jc --dig
```
```json
[{"id":38052,"opcode":"QUERY","status":"NOERROR","flags":["qr","rd","ra"],
"query_num":1,"answer_num":1,"authority_num":0,"additional_num":1,
"opt_pseudosection":{"edns":{"version":0,"flags":[],"udp":4096}},"question":
{"name":"example.com.","class":"IN","type":"A"},"answer":[{"name":
"example.com.","class":"IN","type":"A","ttl":39049,"data":"93.184.216.34"}],
"query_time":49,"server":"2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1)",
"when":"Fri Apr 16 16:09:00 PDT 2021","rcvd":56,"when_epoch":1618614540,
"when_epoch_utc":null}]
```
This allows further command-line processing of output with tools like `jq`
or [`jello`](https://github.com/kellyjonbrazil/jello) by piping commands:
```bash
$ dig example.com | jc --dig | jq -r '.[].answer[].data'
93.184.216.34
```
or using the alternative "magic" syntax:
```bash
$ jc dig example.com | jq -r '.[].answer[].data'
93.184.216.34
```
`jc` can also be used as a python library. In this case the returned value
will be a python dictionary, a list of dictionaries, or even a
[lazy iterable of dictionaries](#using-streaming-parsers-as-python-modules)
instead of JSON:
```python
>>> import subprocess
>>> import jc
>>>
>>> cmd_output = subprocess.check_output(['dig', 'example.com'], text=True)
>>> data = jc.parse('dig', cmd_output)
>>>
>>> data[0]['answer']
[{'name': 'example.com.', 'class': 'IN', 'type': 'A', 'ttl': 29658, 'data':
'93.184.216.34'}]
```
> For `jc` Python package documentation, use `help('jc')`, `help('jc.lib')`, or
see the [online documentation](https://github.com/kellyjonbrazil/jc/tree/master/docs).
Two representations of the data are available. The default representation uses a
strict schema per parser and converts known numbers to int/float JSON values.
Certain known values of `None` are converted to JSON `null`, known boolean
values are converted, and, in some cases, additional semantic context fields are
added.
To access the raw, pre-processed JSON, use the `-r` cli option or the `raw=True`
function parameter in `parse()` when using `jc` as a python library.
Schemas for each parser can be found at the documentation link beside each
[**Parser**](#parsers) below.
Release notes can be found in the [Releases section](https://github.com/kellyjonbrazil/jc/releases) on Github.
## Why Would Anyone Do This!?
For more information on the motivations for this project, please see my blog
post on [Bringing the Unix Philosophy to the 21st Century](https://blog.kellybrazil.com/2019/11/26/bringing-the-unix-philosophy-to-the-21st-century/) and my [interview with Console](https://console.substack.com/p/console-89).
See also:
- [libxo on FreeBSD](http://juniper.github.io/libxo/libxo-manual.html)
- [powershell](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/convertto-json?view=powershell-7)
- [blog: linux apps should have a json flag](https://thomashunter.name/posts/2012-06-06-linux-cli-apps-should-have-a-json-flag)
- [Hacker News discussion](https://news.ycombinator.com/item?id=28266193)
- [Reddit discussion](https://www.reddit.com/r/programming/comments/pa4cbb/bringing_the_unix_philosophy_to_the_21st_century/)
Use Cases:
- [Bash scripting](https://blog.kellybrazil.com/2021/04/12/practical-json-at-the-command-line/)
- [Ansible command output parsing](https://blog.kellybrazil.com/2020/08/30/parsing-command-output-in-ansible-with-jc/)
- [Saltstack command output parsing](https://blog.kellybrazil.com/2020/09/15/parsing-command-output-in-saltstack-with-jc/)
- [Nornir command output parsing](https://blog.kellybrazil.com/2020/12/09/parsing-command-output-in-nornir-with-jc/)
- [FortiSOAR command output parsing](https://docs.fortinet.com/document/fortisoar/1.0.0/jc-parse-command-output/323/jc-parse-command-output-v1-0-0)
## Installation
There are several ways to get `jc`. You can install via `pip`, OS package
[repositories](https://repology.org/project/jc/versions), or by downloading the
correct [binary](https://github.com/kellyjonbrazil/jc/releases) for your
architecture and running it anywhere on your filesystem.
### Pip (macOS, linux, unix, Windows)
[](https://pypi.org/project/jc/)
```bash
pip3 install jc
```
### OS Package Repositories
| OS | Command |
|--------------------------------------|-------------------------------------------------------------------------------|
| Debian/Ubuntu linux | `apt-get install jc` |
| Fedora linux | `dnf install jc` |
| openSUSE linux | `zypper install jc` |
| Arch linux | `pacman -S jc` |
| NixOS linux | `nix-env -iA nixpkgs.jc` or `nix-env -iA nixos.jc` |
| Guix System linux | `guix install jc` |
| Gentoo Linux | `emerge dev-python/jc` |
| Photon linux | `tdnf install jc` |
| macOS | `brew install jc` |
| FreeBSD | `portsnap fetch update && cd /usr/ports/textproc/py-jc && make install clean` |
| Ansible filter plugin | `ansible-galaxy collection install community.general` |
| FortiSOAR connector | Install from FortiSOAR Connector Marketplace |
> For more OS Packages, see https://repology.org/project/jc/versions.
### Binaries
For precompiled binaries, see [Releases](https://github.com/kellyjonbrazil/jc/releases)
on Github.
## Usage
`jc` accepts piped input from `STDIN` and outputs a JSON representation of the
previous command's output to `STDOUT`.
```bash
COMMAND | jc [SLICE] [OPTIONS] PARSER
cat FILE | jc [SLICE] [OPTIONS] PARSER
echo STRING | jc [SLICE] [OPTIONS] PARSER
```
Alternatively, the "magic" syntax can be used by prepending `jc` to the command
to be converted or in front of the absolute path for Proc files. Options can be
passed to `jc` immediately before the command or Proc file path is given.
(Note: command aliases and shell builtins are not supported)
```bash
jc [SLICE] [OPTIONS] COMMAND
jc [SLICE] [OPTIONS] /proc/<path-to-procfile>
```
The JSON output can be compact (default) or pretty formatted with the `-p`
option.
### Parsers
| Argument | Command or Filetype | Documentation |
|-------------------|---------------------------------------------------------|----------------------------------------------------------------------------|
| `--acpi` | `acpi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/acpi) |
| `--airport` | `airport -I` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/airport) |
| `--airport-s` | `airport -s` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/airport_s) |
| `--amixer` | `amixer` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/amixer) |
| `--apt-cache-show` | `apt-cache show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/apt_cache_show) |
| `--apt-get-sqq` | `apt-get -sqq` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/apt_get_sqq) |
| `--arp` | `arp` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/arp) |
| `--asciitable` | ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable) |
| `--asciitable-m` | multi-line ASCII and Unicode table parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/asciitable_m) |
| `--blkid` | `blkid` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/blkid) |
| `--bluetoothctl` | `bluetoothctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/bluetoothctl) |
| `--cbt` | `cbt` (Google Bigtable) command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cbt) |
| `--cef` | CEF string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cef) |
| `--cef-s` | CEF string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cef_s) |
| `--certbot` | `certbot` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/certbot) |
| `--chage` | `chage --list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/chage) |
| `--cksum` | `cksum` and `sum` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/cksum) |
| `--clf` | Common and Combined Log Format file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/clf) |
| `--clf-s` | Common and Combined Log Format file streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/clf_s) |
| `--crontab` | `crontab` command and file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab) |
| `--crontab-u` | `crontab` file parser with user support | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/crontab_u) |
| `--csv` | CSV file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/csv) |
| `--csv-s` | CSV file streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/csv_s) |
| `--curl-head` | `curl --head` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/curl_head) |
| `--date` | `date` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/date) |
| `--datetime-iso` | ISO 8601 Datetime string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/datetime_iso) |
| `--debconf-show` | `debconf-show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/debconf_show) |
| `--df` | `df` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/df) |
| `--dig` | `dig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dig) |
| `--dir` | `dir` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dir) |
| `--dmidecode` | `dmidecode` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dmidecode) |
| `--dpkg-l` | `dpkg -l` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/dpkg_l) |
| `--du` | `du` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/du) |
| `--efibootmgr` | `efibootmgr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/efibootmgr) |
| `--email-address` | Email Address string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/email_address) |
| `--env` | `env` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/env) |
| `--ethtool` | `ethtool` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ethtool) |
| `--file` | `file` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/file) |
| `--find` | `find` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/find) |
| `--findmnt` | `findmnt` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/findmnt) |
| `--finger` | `finger` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/finger) |
| `--free` | `free` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/free) |
| `--fstab` | `/etc/fstab` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/fstab) |
| `--git-log` | `git log` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log) |
| `--git-log-s` | `git log` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_log_s) |
| `--git-ls-remote` | `git ls-remote` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/git_ls_remote) |
| `--gpg` | `gpg --with-colons` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gpg) |
| `--group` | `/etc/group` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/group) |
| `--gshadow` | `/etc/gshadow` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/gshadow) |
| `--hash` | `hash` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hash) |
| `--hashsum` | hashsum command parser (`md5sum`, `shasum`, etc.) | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hashsum) |
| `--hciconfig` | `hciconfig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hciconfig) |
| `--history` | `history` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/history) |
| `--host` | `host` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/host) |
| `--hosts` | `/etc/hosts` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/hosts) |
| `--http-headers` | HTTP headers parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/http_headers) |
| `--id` | `id` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/id) |
| `--ifconfig` | `ifconfig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ifconfig) |
| `--ini` | INI file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ini) |
| `--ini-dup` | INI with duplicate key file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ini_dup) |
| `--iostat` | `iostat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat) |
| `--iostat-s` | `iostat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iostat_s) |
| `--ip-address` | IPv4 and IPv6 Address string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ip_address) |
| `--ipconfig` | `ipconfig` Windows command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ipconfig) |
| `--iptables` | `iptables` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iptables) |
| `--ip-route` | `ip route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ip_route) |
| `--iw-scan` | `iw dev [device] scan` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iw_scan) |
| `--iwconfig` | `iwconfig` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/iwconfig) |
| `--jar-manifest` | Java MANIFEST.MF file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jar_manifest) |
| `--jobs` | `jobs` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jobs) |
| `--jwt` | JWT string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/jwt) |
| `--kv` | Key/Value file and string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/kv) |
| `--kv-dup` | Key/Value with duplicate key file and string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/kv_dup) |
| `--last` | `last` and `lastb` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/last) |
| `--ls` | `ls` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ls) |
| `--ls-s` | `ls` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ls_s) |
| `--lsattr` | `lsattr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsattr) |
| `--lsb-release` | `lsb_release` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsb_release) |
| `--lsblk` | `lsblk` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsblk) |
| `--lsmod` | `lsmod` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsmod) |
| `--lsof` | `lsof` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsof) |
| `--lspci` | `lspci -mmv` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lspci) |
| `--lsusb` | `lsusb` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/lsusb) |
| `--m3u` | M3U and M3U8 file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/m3u) |
| `--mdadm` | `mdadm` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mdadm) |
| `--mount` | `mount` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mount) |
| `--mpstat` | `mpstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat) |
| `--mpstat-s` | `mpstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/mpstat_s) |
| `--needrestart` | `needrestart -b` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/needrestart) |
| `--netstat` | `netstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/netstat) |
| `--net-localgroup` | `net localgroup` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/net_localgroup) |
| `--net-user` | `net user` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/net_user) |
| `--nmcli` | `nmcli` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nmcli) |
| `--nsd-control` | `nsd-control` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/nsd_control) |
| `--ntpq` | `ntpq -p` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ntpq) |
| `--openvpn` | openvpn-status.log file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/openvpn) |
| `--os-prober` | `os-prober` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_prober) |
| `--os-release` | `/etc/os-release` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/os_release) |
| `--pacman` | `pacman` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pacman) |
| `--passwd` | `/etc/passwd` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/passwd) |
| `--path` | POSIX path string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path) |
| `--path-list` | POSIX path list string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/path_list) |
| `--pci-ids` | `pci.ids` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pci_ids) |
| `--pgpass` | PostgreSQL password file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pgpass) |
| `--pidstat` | `pidstat -H` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat) |
| `--pidstat-s` | `pidstat -H` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pidstat_s) |
| `--ping` | `ping` and `ping6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping) |
| `--ping-s` | `ping` and `ping6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ping_s) |
| `--pip-list` | `pip list` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_list) |
| `--pip-show` | `pip show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pip_show) |
| `--pkg-index-apk` | Alpine Linux Package Index file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pkg_index_apk) |
| `--pkg-index-deb` | Debian Package Index file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/pkg_index_deb) |
| `--plist` | PLIST file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/plist) |
| `--postconf` | `postconf -M` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/postconf) |
| `--proc` | `/proc/` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/proc) |
| `--ps` | `ps` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ps) |
| `--resolve-conf` | `/etc/resolve.conf` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/resolve_conf) |
| `--route` | `route` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route) |
| `--route-print` | `route print` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/route_print) |
| `--rpm-qi` | `rpm -qi` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rpm_qi) |
| `--rsync` | `rsync` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync) |
| `--rsync-s` | `rsync` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/rsync_s) |
| `--semver` | Semantic Version string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/semver) |
| `--sfdisk` | `sfdisk` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sfdisk) |
| `--shadow` | `/etc/shadow` file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/shadow) |
| `--srt` | SRT file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/srt) |
| `--ss` | `ss` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ss) |
| `--ssh-conf` | `ssh` config file and `ssh -G` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ssh_conf) |
| `--sshd-conf` | `sshd` config file and `sshd -T` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sshd_conf) |
| `--stat` | `stat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat) |
| `--stat-s` | `stat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/stat_s) |
| `--swapon` | `swapon` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/swapon) |
| `--sysctl` | `sysctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/sysctl) |
| `--syslog` | Syslog RFC 5424 string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog) |
| `--syslog-s` | Syslog RFC 5424 string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_s) |
| `--syslog-bsd` | Syslog RFC 3164 string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_bsd) |
| `--syslog-bsd-s` | Syslog RFC 3164 string streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/syslog_bsd_s) |
| `--systemctl` | `systemctl` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl) |
| `--systemctl-lj` | `systemctl list-jobs` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_lj) |
| `--systemctl-ls` | `systemctl list-sockets` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_ls) |
| `--systemctl-luf` | `systemctl list-unit-files` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systemctl_luf) |
| `--systeminfo` | `systeminfo` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/systeminfo) |
| `--time` | `/usr/bin/time` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/time) |
| `--timedatectl` | `timedatectl status` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/timedatectl) |
| `--timestamp` | Unix Epoch Timestamp string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/timestamp) |
| `--toml` | TOML file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/toml) |
| `--top` | `top -b` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/top) |
| `--top-s` | `top -b` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/top_s) |
| `--tracepath` | `tracepath` and `tracepath6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/tracepath) |
| `--traceroute` | `traceroute` and `traceroute6` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute) |
| `--traceroute-s` | `traceroute` and `traceroute6` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/traceroute_s) |
| `--tune2fs` | `tune2fs -l` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/tune2fs) |
| `--udevadm` | `udevadm info` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/udevadm) |
| `--ufw` | `ufw status` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw) |
| `--ufw-appinfo` | `ufw app info [application]` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ufw_appinfo) |
| `--uname` | `uname -a` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/uname) |
| `--update-alt-gs` | `update-alternatives --get-selections` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_gs) |
| `--update-alt-q` | `update-alternatives --query` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/update_alt_q) |
| `--upower` | `upower` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/upower) |
| `--uptime` | `uptime` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/uptime) |
| `--url` | URL string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/url) |
| `--ver` | Version string parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/ver) |
| `--veracrypt` | `veracrypt` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/veracrypt) |
| `--vmstat` | `vmstat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat) |
| `--vmstat-s` | `vmstat` command streaming parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/vmstat_s) |
| `--w` | `w` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/w) |
| `--wc` | `wc` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wc) |
| `--wg-show` | `wg show` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/wg_show) |
| `--who` | `who` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/who) |
| `--x509-cert` | X.509 PEM and DER certificate file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_cert) |
| `--x509-crl` | X.509 PEM and DER certificate revocation list file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_crl) |
| `--x509-csr` | X.509 PEM and DER certificate request file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/x509_csr) |
| `--xml` | XML file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/xml) |
| `--xrandr` | `xrandr` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/xrandr) |
| `--yaml` | YAML file parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/yaml) |
| `--zipinfo` | `zipinfo` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/zipinfo) |
| `--zpool-iostat` | `zpool iostat` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/zpool_iostat) |
| `--zpool-status` | `zpool status` command parser | [details](https://kellyjonbrazil.github.io/jc/docs/parsers/zpool_status) |
### Options
| Short | Long | Description |
|-------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `-a` | `--about` | About `jc`. Prints information about `jc` and the parsers (in JSON or YAML, of course!) |
| `-C` | `--force-color` | Force color output even when using pipes (overrides `-m` and the `NO_COLOR` env variable) |
| `-d` | `--debug` | Debug mode. Prints trace messages if parsing issues are encountered (use`-dd` for verbose debugging) |
| `-h` | `--help` | Help. Use `jc -h --parser_name` for parser documentation. Use twice to show hidden parsers (e.g. `-hh`). Use thrice to show parser categories (e.g. `-hhh`). |
| `-m` | `--monochrome` | Monochrome output |
| `-M` | `--meta-out` | Add metadata to output including timestamp, parser name, magic command, magic command exit code, etc. | |
| `-p` | `--pretty` | Pretty format the JSON output |
| `-q` | `--quiet` | Quiet mode. Suppresses parser warning messages (use `-qq` to ignore streaming parser errors) |
| `-r` | `--raw` | Raw output. Provides more literal output, typically with string values and no additional semantic processing |
| `-s` | `--slurp` | Slurp multiple lines into an array. (use `-hhh` to find compatible parsers) |
| `-u` | `--unbuffer` | Unbuffer output |
| `-v` | `--version` | Version information |
| `-y` | `--yaml-out` | YAML output |
| `-B` | `--bash-comp` | Generate Bash shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
| `-Z` | `--zsh-comp` | Generate Zsh shell completion script ([more info](https://github.com/kellyjonbrazil/jc/wiki/Shell-Completions)) |
### Slice
Line slicing is supported using the `START:STOP` syntax similar to Python
slicing. This allows you to skip lines at the beginning and/or end of the
`STDIN` input you would like `jc` to convert.
`START` and `STOP` can be positive or negative integers or blank and allow
you to specify how many lines to skip and how many lines to process.
Positive and blank slices are the most memory efficient. Any negative
integers in the slice will use more memory.
For example, to skip the first and last line of the following text, you
could express the slice in a couple ways:
```bash
$ 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"}]
```
In this example `1:-1` and `1:4` line slices provide the same output.
When using positive integers the index location of `STOP` is non-inclusive.
Positive slices count from the first line of the input toward the end
starting at `0` as the first line. Negative slices count from the last line
toward the beginning starting at `-1` as the last line. This is also the way
[Python's slicing](https://stackoverflow.com/questions/509211/understanding-slicing)
feature works.
Here is a breakdown of line slice options:
| Slice Notation | Input Lines Processed |
|----------------|--------------------------------------------------------------|
| `START:STOP` | lines `START` through `STOP - 1` |
| `START:` | lines `START` through the rest of the output |
| `:STOP` | lines from the beginning through `STOP - 1` |
| `-START:STOP` | `START` lines from the end through `STOP - 1` |
| `START:-STOP` | lines `START` through `STOP` lines from the end |
| `-START:-STOP` | `START` lines from the end through `STOP` lines from the end |
| `-START:` | `START` lines from the end through the rest of the output |
| `:-STOP` | lines from the beginning through `STOP` lines from the end |
| `:` | all lines |
### Slurp
Some parsers support multi-item input and can output an array of results in a
single pass. Slurping works for string parsers that accept a single line of
input. (e.g. `url` and `ip-address`) To see a list of parsers that support
the `--slurp` option, use `jc -hhh`.
For example, you can send a file with multiple IP addresses (one per line) to
`jc` with the `--slurp` option and an array of results will output:
```bash
$ cat ip-addresses.txt | jc --slurp --ip-address
[<multiple output objects>]
```
The magic syntax for `/proc` files automatically supports slurping of multiple
files (no need to use the `--slurp` option). For example, you can convert many
PID files at once:
```bash
$ jc /proc/*/status
[<multiple output objects>]
```
When the `/proc` magic syntax is used and multiple files are selected, an
additional `_file` field is inserted in the output so it is easier to tell what
file each output object refers to.
Finally, the `--meta-out` option can be used in conjunction with slurped output.
In this case, the slurped output is wrapped in an object with the following
structure:
```json
{
"result": [<multiple output objects>],
"_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"
]
}
}
```
With `--meta-out`, `input_list` contains a list of inputs (actual input strings
or `/proc` filenames) so you can identify which output object relates to each
input string or `/proc` filename.
### Exit Codes
Any fatal errors within `jc` will generate an exit code of `100`, otherwise the
exit code will be `0`.
When using the "magic" syntax (e.g. `jc ifconfig eth0`),
`jc` will store the exit code of the program being parsed and add it to the `jc`
exit code. This way it is easier to determine if an error was from the parsed
program or `jc`.
Consider the following examples using `ifconfig`:
| `ifconfig` exit code | `jc` exit code | Combined exit code | Interpretation |
|----------------------|----------------|--------------------|------------------------------------|
| `0` | `0` | `0` | No errors |
| `1` | `0` | `1` | Error in `ifconfig` |
| `0` | `100` | `100` | Error in `jc` |
| `1` | `100` | `101` | Error in both `ifconfig` and `jc` |
When using the "magic" syntax you can also retrieve the exit code of the called
program by using the `--meta-out` or `-M` option. This will append a `_jc_meta`
object to the output that will include the magic command information, including
the exit code.
Here is an example with `ping`:
```bash
$ 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
```
### Setting Custom Colors via Environment Variable
You can specify custom colors via the `JC_COLORS` environment variable. The
`JC_COLORS` environment variable takes four comma separated string values in
the following format:
```bash
JC_COLORS=<keyname_color>,<keyword_color>,<number_color>,<string_color>
```
Where colors are: `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`,
`gray`, `brightblack`, `brightred`, `brightgreen`, `brightyellow`, `brightblue`,
`brightmagenta`, `brightcyan`, `white`, or `default`
For example, to set to the default colors:
```bash
JC_COLORS=blue,brightblack,magenta,green
```
or
```bash
JC_COLORS=default,default,default,default
```
### Disable Colors via Environment Variable
You can set the [`NO_COLOR`](http://no-color.org/) environment variable to any
value to disable color output in `jc`. Note that using the `-C` option to force
color output will override both the `NO_COLOR` environment variable and the `-m`
option.
### Streaming Parsers
Most parsers load all of the data from `STDIN`, parse it, then output the entire
JSON document serially. There are some streaming parsers (e.g. `ls-s` and
`ping-s`) that immediately start processing and outputting the data line-by-line
as [JSON Lines](https://jsonlines.org/) (aka [NDJSON](http://ndjson.org/)) while
it is being received from `STDIN`. This can significantly reduce the amount of
memory required to parse large amounts of command output (e.g. `ls -lR /`) and
can sometimes process the data more quickly. Streaming parsers have slightly
different behavior than standard parsers as outlined below.
> Note: Streaming parsers cannot be used with the "magic" syntax
#### Ignoring Errors
You may want to ignore parsing errors when using streaming parsers since these
may be used in long-lived processing pipelines and errors can break the pipe. To
ignore parsing errors, use the `-qq` cli option or the `ignore_exceptions=True`
argument with the `parse()` function. This will add a `_jc_meta` object to the
JSON output with a `success` attribute. If `success` is `true`, then there were
no issues parsing the line. If `success` is `false`, then a parsing issue was
found and `error` and `line` fields will be added to include a short error
description and the contents of the unparsable line, respectively:
Successfully parsed line with `-qq` option:
```json
{
"command_data": "data",
"_jc_meta": {
"success": true
}
}
```
Unsuccessfully parsed line with `-qq` option:
```json
{
"_jc_meta": {
"success": false,
"error": "error message",
"line": "original line data"
}
}
```
#### Unbuffering Output
Most operating systems will buffer output that is being piped from process to
process. The buffer is usually around 4KB. When viewing the output in the
terminal the OS buffer is not engaged so output is immediately displayed on the
screen. When piping multiple processes together, though, it may seem as if the
output is hanging when the input data is very slow (e.g. `ping`):
```
$ ping 1.1.1.1 | jc --ping-s | jq
<slow output>
```
This is because the OS engages the 4KB buffer between `jc` and `jq` in this
example. To display the data on the terminal in realtime, you can disable the
buffer with the `-u` (unbuffer) cli option:
```
$ ping 1.1.1.1 | jc --ping-s -u | jq
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","respons...}
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","respons...}
...
```
> Note: Unbuffered output can be slower for large data streams.
#### Using Streaming Parsers as Python Modules
Streaming parsers accept any iterable object and return an iterable object
allowing lazy processing of the data. The input data should iterate on lines
of string data. Examples of good input data are `sys.stdin` or
`str.splitlines()`.
To use the returned iterable object in your code, simply loop through it or
use the [next()](https://docs.python.org/3/library/functions.html#next)
builtin function:
```python
import jc
result = jc.parse('ls_s', ls_command_output.splitlines())
for item in result:
print(item["filename"])
```
### Parser Plugins
Parser plugins may be placed in a `jc/jcparsers` folder in your local
**"App data directory"**:
- Linux/unix: `$HOME/.local/share/jc/jcparsers`
- macOS: `$HOME/Library/Application Support/jc/jcparsers`
- Windows: `$LOCALAPPDATA\jc\jc\jcparsers`
Parser plugins are standard python module files. Use the
[`jc/parsers/foo.py`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo.py)
or [`jc/parsers/foo_s.py (streaming)`](https://github.com/kellyjonbrazil/jc/blob/master/jc/parsers/foo_s.py)
parser as a template and simply place a `.py` file in the `jcparsers` subfolder.
Any dependencies can be placed in the `jc` folder above `jcparsers` and can
be imported in the parser code.
Parser plugin filenames must be valid python module names and therefore must
start with a letter and consist entirely of alphanumerics and underscores.
Local plugins may override default parsers.
> Note: The application data directory follows the
[XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
### Caveats
#### Locale
For best results set the locale environment variables to `C` or
`en_US.UTF-8` by modifying the `LC_ALL` variable:
```
$ LC_ALL=C date | jc --date
```
You can also set the locale variables individually:
```
$ export LANG=C
$ export LC_NUMERIC=C
```
On some older systems UTF-8 output will be downgraded to ASCII with `\\u`
escape sequences if the `C` locale does not support UTF-8 encoding.
#### Timezones
Some parsers have calculated epoch timestamp fields added to the output. Unless
a timestamp field name has a `_utc` suffix it is considered naive. (i.e. based
on the local timezone of the system the `jc` parser was run on).
If a UTC timezone can be detected in the text of the command output, the
timestamp will be timezone aware and have a `_utc` suffix on the key name.
(e.g. `epoch_utc`) No other timezones are supported for aware timestamps.
## Use In Other Shells
`jc` can be used in most any shell. Some modern shells have JSON deserialization
and filtering capabilities built-in which makes using `jc` even more convenient.
For example, the following is possible in [NGS](https://ngs-lang.org/)
(Next Generation Shell):
```bash
myvar = ``jc dig www.google.com``[0].answer[0].data
```
This runs `jc`, parses the output JSON, and assigs the resulting data structure
to a variable in a single line of code.
For more examples of how to use `jc` in other shells, see this
[wiki page](https://github.com/k
gitextract_6okyl16d/ ├── .gitignore ├── CHANGELOG ├── CONTRIBUTING.md ├── EXAMPLES.md ├── LICENSE.md ├── MANIFEST.in ├── README-snap.md ├── README.md ├── build-completions.py ├── build-package.sh ├── completions/ │ ├── jc_bash_completion.sh │ └── jc_zsh_completion.sh ├── doc2md.py ├── docgen.sh ├── docs/ │ ├── lib.md │ ├── parsers/ │ │ ├── acpi.md │ │ ├── airport.md │ │ ├── airport_s.md │ │ ├── amixer.md │ │ ├── apt_cache_show.md │ │ ├── apt_get_sqq.md │ │ ├── arp.md │ │ ├── asciitable.md │ │ ├── asciitable_m.md │ │ ├── blkid.md │ │ ├── bluetoothctl.md │ │ ├── cbt.md │ │ ├── cef.md │ │ ├── cef_s.md │ │ ├── certbot.md │ │ ├── chage.md │ │ ├── cksum.md │ │ ├── clf.md │ │ ├── clf_s.md │ │ ├── crontab.md │ │ ├── crontab_u.md │ │ ├── csv.md │ │ ├── csv_s.md │ │ ├── curl_head.md │ │ ├── date.md │ │ ├── datetime_iso.md │ │ ├── debconf_show.md │ │ ├── df.md │ │ ├── dig.md │ │ ├── dir.md │ │ ├── dmidecode.md │ │ ├── dpkg_l.md │ │ ├── du.md │ │ ├── efibootmgr.md │ │ ├── email_address.md │ │ ├── env.md │ │ ├── ethtool.md │ │ ├── file.md │ │ ├── find.md │ │ ├── findmnt.md │ │ ├── finger.md │ │ ├── free.md │ │ ├── fstab.md │ │ ├── git_log.md │ │ ├── git_log_s.md │ │ ├── git_ls_remote.md │ │ ├── gpg.md │ │ ├── group.md │ │ ├── gshadow.md │ │ ├── hash.md │ │ ├── hashsum.md │ │ ├── hciconfig.md │ │ ├── history.md │ │ ├── host.md │ │ ├── hosts.md │ │ ├── http_headers.md │ │ ├── id.md │ │ ├── ifconfig.md │ │ ├── ini.md │ │ ├── ini_dup.md │ │ ├── iostat.md │ │ ├── iostat_s.md │ │ ├── ip_address.md │ │ ├── ip_route.md │ │ ├── ipconfig.md │ │ ├── iptables.md │ │ ├── iw_scan.md │ │ ├── iwconfig.md │ │ ├── jar_manifest.md │ │ ├── jobs.md │ │ ├── jwt.md │ │ ├── kv.md │ │ ├── kv_dup.md │ │ ├── last.md │ │ ├── ls.md │ │ ├── ls_s.md │ │ ├── lsattr.md │ │ ├── lsb_release.md │ │ ├── lsblk.md │ │ ├── lsmod.md │ │ ├── lsof.md │ │ ├── lspci.md │ │ ├── lsusb.md │ │ ├── m3u.md │ │ ├── mdadm.md │ │ ├── mount.md │ │ ├── mpstat.md │ │ ├── mpstat_s.md │ │ ├── needrestart.md │ │ ├── net_localgroup.md │ │ ├── net_user.md │ │ ├── netstat.md │ │ ├── nmcli.md │ │ ├── nsd_control.md │ │ ├── ntpq.md │ │ ├── openvpn.md │ │ ├── os_prober.md │ │ ├── os_release.md │ │ ├── pacman.md │ │ ├── passwd.md │ │ ├── path.md │ │ ├── path_list.md │ │ ├── pci_ids.md │ │ ├── pgpass.md │ │ ├── pidstat.md │ │ ├── pidstat_s.md │ │ ├── ping.md │ │ ├── ping_s.md │ │ ├── pip_list.md │ │ ├── pip_show.md │ │ ├── pkg_index_apk.md │ │ ├── pkg_index_deb.md │ │ ├── plist.md │ │ ├── postconf.md │ │ ├── proc.md │ │ ├── proc_buddyinfo.md │ │ ├── proc_cmdline.md │ │ ├── proc_consoles.md │ │ ├── proc_cpuinfo.md │ │ ├── proc_crypto.md │ │ ├── proc_devices.md │ │ ├── proc_diskstats.md │ │ ├── proc_driver_rtc.md │ │ ├── proc_filesystems.md │ │ ├── proc_interrupts.md │ │ ├── proc_iomem.md │ │ ├── proc_ioports.md │ │ ├── proc_loadavg.md │ │ ├── proc_locks.md │ │ ├── proc_meminfo.md │ │ ├── proc_modules.md │ │ ├── proc_mtrr.md │ │ ├── proc_net_arp.md │ │ ├── proc_net_dev.md │ │ ├── proc_net_dev_mcast.md │ │ ├── proc_net_if_inet6.md │ │ ├── proc_net_igmp.md │ │ ├── proc_net_igmp6.md │ │ ├── proc_net_ipv6_route.md │ │ ├── proc_net_netlink.md │ │ ├── proc_net_netstat.md │ │ ├── proc_net_packet.md │ │ ├── proc_net_protocols.md │ │ ├── proc_net_route.md │ │ ├── proc_net_tcp.md │ │ ├── proc_net_unix.md │ │ ├── proc_pagetypeinfo.md │ │ ├── proc_partitions.md │ │ ├── proc_pid_fdinfo.md │ │ ├── proc_pid_io.md │ │ ├── proc_pid_maps.md │ │ ├── proc_pid_mountinfo.md │ │ ├── proc_pid_numa_maps.md │ │ ├── proc_pid_smaps.md │ │ ├── proc_pid_stat.md │ │ ├── proc_pid_statm.md │ │ ├── proc_pid_status.md │ │ ├── proc_slabinfo.md │ │ ├── proc_softirqs.md │ │ ├── proc_stat.md │ │ ├── proc_swaps.md │ │ ├── proc_uptime.md │ │ ├── proc_version.md │ │ ├── proc_vmallocinfo.md │ │ ├── proc_vmstat.md │ │ ├── proc_zoneinfo.md │ │ ├── ps.md │ │ ├── resolve_conf.md │ │ ├── route.md │ │ ├── route_print.md │ │ ├── rpm_qi.md │ │ ├── rsync.md │ │ ├── rsync_s.md │ │ ├── semver.md │ │ ├── sfdisk.md │ │ ├── shadow.md │ │ ├── srt.md │ │ ├── ss.md │ │ ├── ssh_conf.md │ │ ├── sshd_conf.md │ │ ├── stat.md │ │ ├── stat_s.md │ │ ├── swapon.md │ │ ├── sysctl.md │ │ ├── syslog.md │ │ ├── syslog_bsd.md │ │ ├── syslog_bsd_s.md │ │ ├── syslog_s.md │ │ ├── systemctl.md │ │ ├── systemctl_lj.md │ │ ├── systemctl_ls.md │ │ ├── systemctl_luf.md │ │ ├── systeminfo.md │ │ ├── time.md │ │ ├── timedatectl.md │ │ ├── timestamp.md │ │ ├── toml.md │ │ ├── top.md │ │ ├── top_s.md │ │ ├── tracepath.md │ │ ├── traceroute.md │ │ ├── traceroute_s.md │ │ ├── tune2fs.md │ │ ├── udevadm.md │ │ ├── ufw.md │ │ ├── ufw_appinfo.md │ │ ├── uname.md │ │ ├── universal.md │ │ ├── update_alt_gs.md │ │ ├── update_alt_q.md │ │ ├── upower.md │ │ ├── uptime.md │ │ ├── url.md │ │ ├── ver.md │ │ ├── veracrypt.md │ │ ├── vmstat.md │ │ ├── vmstat_s.md │ │ ├── w.md │ │ ├── wc.md │ │ ├── wg_show.md │ │ ├── who.md │ │ ├── x509_cert.md │ │ ├── x509_crl.md │ │ ├── x509_csr.md │ │ ├── xml.md │ │ ├── xrandr.md │ │ ├── yaml.md │ │ ├── zipinfo.md │ │ ├── zpool_iostat.md │ │ └── zpool_status.md │ ├── readme.md │ ├── streaming.md │ └── utils.md ├── install.sh ├── jc/ │ ├── __init__.py │ ├── __main__.py │ ├── appdirs.py │ ├── cli.py │ ├── cli_data.py │ ├── exceptions.py │ ├── jc_types.py │ ├── lib.py │ ├── parsers/ │ │ ├── __init__.py │ │ ├── acpi.py │ │ ├── airport.py │ │ ├── airport_s.py │ │ ├── amixer.py │ │ ├── apt_cache_show.py │ │ ├── apt_get_sqq.py │ │ ├── arp.py │ │ ├── asciitable.py │ │ ├── asciitable_m.py │ │ ├── asn1crypto/ │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ ├── _errors.py │ │ │ ├── _inet.py │ │ │ ├── _int.py │ │ │ ├── _iri.py │ │ │ ├── _ordereddict.py │ │ │ ├── _teletex_codec.py │ │ │ ├── _types.py │ │ │ ├── algos.py │ │ │ ├── cms.py │ │ │ ├── core.py │ │ │ ├── crl.py │ │ │ ├── csr.py │ │ │ ├── jc_global.py │ │ │ ├── keys.py │ │ │ ├── ocsp.py │ │ │ ├── parser.py │ │ │ ├── pdf.py │ │ │ ├── pem.py │ │ │ ├── pkcs12.py │ │ │ ├── tsp.py │ │ │ ├── util.py │ │ │ ├── version.py │ │ │ └── x509.py │ │ ├── blkid.py │ │ ├── bluetoothctl.py │ │ ├── broken_parser.py │ │ ├── cbt.py │ │ ├── cef.py │ │ ├── cef_s.py │ │ ├── certbot.py │ │ ├── chage.py │ │ ├── cksum.py │ │ ├── clf.py │ │ ├── clf_s.py │ │ ├── crontab.py │ │ ├── crontab_u.py │ │ ├── csv.py │ │ ├── csv_s.py │ │ ├── curl_head.py │ │ ├── date.py │ │ ├── datetime_iso.py │ │ ├── debconf_show.py │ │ ├── df.py │ │ ├── dig.py │ │ ├── dir.py │ │ ├── disabled_parser.py │ │ ├── dmidecode.py │ │ ├── dpkg_l.py │ │ ├── du.py │ │ ├── efibootmgr.py │ │ ├── email_address.py │ │ ├── env.py │ │ ├── ethtool.py │ │ ├── file.py │ │ ├── find.py │ │ ├── findmnt.py │ │ ├── finger.py │ │ ├── foo.py │ │ ├── foo_s.py │ │ ├── free.py │ │ ├── fstab.py │ │ ├── git_log.py │ │ ├── git_log_s.py │ │ ├── git_ls_remote.py │ │ ├── gpg.py │ │ ├── group.py │ │ ├── gshadow.py │ │ ├── hash.py │ │ ├── hashsum.py │ │ ├── hciconfig.py │ │ ├── history.py │ │ ├── host.py │ │ ├── hosts.py │ │ ├── http_headers.py │ │ ├── id.py │ │ ├── ifconfig.py │ │ ├── iftop.py │ │ ├── ini.py │ │ ├── ini_dup.py │ │ ├── iostat.py │ │ ├── iostat_s.py │ │ ├── ip_address.py │ │ ├── ip_route.py │ │ ├── ipconfig.py │ │ ├── iptables.py │ │ ├── iw_scan.py │ │ ├── iwconfig.py │ │ ├── jar_manifest.py │ │ ├── jobs.py │ │ ├── jwt.py │ │ ├── kv.py │ │ ├── kv_dup.py │ │ ├── last.py │ │ ├── ls.py │ │ ├── ls_s.py │ │ ├── lsattr.py │ │ ├── lsb_release.py │ │ ├── lsblk.py │ │ ├── lsmod.py │ │ ├── lsof.py │ │ ├── lspci.py │ │ ├── lsusb.py │ │ ├── m3u.py │ │ ├── mdadm.py │ │ ├── mount.py │ │ ├── mpstat.py │ │ ├── mpstat_s.py │ │ ├── needrestart.py │ │ ├── net_localgroup.py │ │ ├── net_user.py │ │ ├── netstat.py │ │ ├── netstat_freebsd_osx.py │ │ ├── netstat_linux.py │ │ ├── netstat_windows.py │ │ ├── nmcli.py │ │ ├── nsd_control.py │ │ ├── ntpq.py │ │ ├── openvpn.py │ │ ├── os_prober.py │ │ ├── os_release.py │ │ ├── pacman.py │ │ ├── passwd.py │ │ ├── path.py │ │ ├── path_list.py │ │ ├── pbPlist/ │ │ │ ├── StrParse.py │ │ │ ├── Switch.py │ │ │ ├── __init__.py │ │ │ ├── pbItem.py │ │ │ ├── pbParser.py │ │ │ ├── pbPlist.py │ │ │ ├── pbRoot.py │ │ │ └── pbSerializer.py │ │ ├── pci_ids.py │ │ ├── pgpass.py │ │ ├── pidstat.py │ │ ├── pidstat_s.py │ │ ├── ping.py │ │ ├── ping_s.py │ │ ├── pip_list.py │ │ ├── pip_show.py │ │ ├── pkg_index_apk.py │ │ ├── pkg_index_deb.py │ │ ├── plist.py │ │ ├── postconf.py │ │ ├── proc.py │ │ ├── proc_buddyinfo.py │ │ ├── proc_cmdline.py │ │ ├── proc_consoles.py │ │ ├── proc_cpuinfo.py │ │ ├── proc_crypto.py │ │ ├── proc_devices.py │ │ ├── proc_diskstats.py │ │ ├── proc_driver_rtc.py │ │ ├── proc_filesystems.py │ │ ├── proc_interrupts.py │ │ ├── proc_iomem.py │ │ ├── proc_ioports.py │ │ ├── proc_loadavg.py │ │ ├── proc_locks.py │ │ ├── proc_meminfo.py │ │ ├── proc_modules.py │ │ ├── proc_mtrr.py │ │ ├── proc_net_arp.py │ │ ├── proc_net_dev.py │ │ ├── proc_net_dev_mcast.py │ │ ├── proc_net_if_inet6.py │ │ ├── proc_net_igmp.py │ │ ├── proc_net_igmp6.py │ │ ├── proc_net_ipv6_route.py │ │ ├── proc_net_netlink.py │ │ ├── proc_net_netstat.py │ │ ├── proc_net_packet.py │ │ ├── proc_net_protocols.py │ │ ├── proc_net_route.py │ │ ├── proc_net_tcp.py │ │ ├── proc_net_unix.py │ │ ├── proc_pagetypeinfo.py │ │ ├── proc_partitions.py │ │ ├── proc_pid_fdinfo.py │ │ ├── proc_pid_io.py │ │ ├── proc_pid_maps.py │ │ ├── proc_pid_mountinfo.py │ │ ├── proc_pid_numa_maps.py │ │ ├── proc_pid_smaps.py │ │ ├── proc_pid_stat.py │ │ ├── proc_pid_statm.py │ │ ├── proc_pid_status.py │ │ ├── proc_slabinfo.py │ │ ├── proc_softirqs.py │ │ ├── proc_stat.py │ │ ├── proc_swaps.py │ │ ├── proc_uptime.py │ │ ├── proc_version.py │ │ ├── proc_vmallocinfo.py │ │ ├── proc_vmstat.py │ │ ├── proc_zoneinfo.py │ │ ├── ps.py │ │ ├── pyedid/ │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ ├── edid.py │ │ │ ├── helpers/ │ │ │ │ ├── __init__.py │ │ │ │ ├── edid_helper.py │ │ │ │ └── registry.py │ │ │ └── main.py │ │ ├── resolve_conf.py │ │ ├── route.py │ │ ├── route_print.py │ │ ├── route_windows.py │ │ ├── rpm_qi.py │ │ ├── rsync.py │ │ ├── rsync_s.py │ │ ├── semver.py │ │ ├── sfdisk.py │ │ ├── shadow.py │ │ ├── srt.py │ │ ├── ss.py │ │ ├── ssh_conf.py │ │ ├── sshd_conf.py │ │ ├── stat.py │ │ ├── stat_s.py │ │ ├── swapon.py │ │ ├── sysctl.py │ │ ├── syslog.py │ │ ├── syslog_bsd.py │ │ ├── syslog_bsd_s.py │ │ ├── syslog_s.py │ │ ├── systemctl.py │ │ ├── systemctl_lj.py │ │ ├── systemctl_ls.py │ │ ├── systemctl_luf.py │ │ ├── systeminfo.py │ │ ├── time.py │ │ ├── timedatectl.py │ │ ├── timestamp.py │ │ ├── toml.py │ │ ├── tomli/ │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ ├── _parser.py │ │ │ ├── _re.py │ │ │ ├── _types.py │ │ │ └── py.typed │ │ ├── top.py │ │ ├── top_s.py │ │ ├── tracepath.py │ │ ├── traceroute.py │ │ ├── traceroute_s.py │ │ ├── tune2fs.py │ │ ├── udevadm.py │ │ ├── ufw.py │ │ ├── ufw_appinfo.py │ │ ├── uname.py │ │ ├── universal.py │ │ ├── update_alt_gs.py │ │ ├── update_alt_q.py │ │ ├── upower.py │ │ ├── uptime.py │ │ ├── url.py │ │ ├── ver.py │ │ ├── veracrypt.py │ │ ├── vmstat.py │ │ ├── vmstat_s.py │ │ ├── w.py │ │ ├── wc.py │ │ ├── wg_show.py │ │ ├── who.py │ │ ├── x509_cert.py │ │ ├── x509_crl.py │ │ ├── x509_csr.py │ │ ├── xml.py │ │ ├── xrandr.py │ │ ├── yaml.py │ │ ├── zipinfo.py │ │ ├── zpool_iostat.py │ │ └── zpool_status.py │ ├── py.typed │ ├── shell_completions.py │ ├── streaming.py │ ├── tracebackplus.py │ └── utils.py ├── man/ │ └── jc.1 ├── mangen.py ├── pypi-upload.sh ├── readmegen.py ├── requirements.txt ├── runtests-missing-libs.sh ├── runtests.sh ├── setup.cfg ├── setup.py ├── snap/ │ ├── local/ │ │ └── jc-launcher.sh │ └── snapcraft.yaml ├── templates/ │ ├── manpage_template │ └── readme_template ├── tests/ │ ├── __init__.py │ ├── _vendor/ │ │ ├── __init__.py │ │ ├── packaging/ │ │ │ ├── LICENSE.APACHE │ │ │ ├── LICENSE.BSD │ │ │ ├── __init__.py │ │ │ ├── _structures.py │ │ │ └── version.py │ │ └── vendored.txt │ ├── fixtures/ │ │ ├── aix-7.1/ │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── mount.json │ │ │ └── mount.out │ │ ├── alpine-linux-3.13/ │ │ │ ├── ping-hostname.json │ │ │ ├── ping-hostname.out │ │ │ ├── ping-ip.json │ │ │ └── ping-ip.out │ │ ├── centos-7.7/ │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── arp-v.json │ │ │ ├── arp-v.out │ │ │ ├── arp.json │ │ │ ├── arp.out │ │ │ ├── blkid-ip-multi.json │ │ │ ├── blkid-ip-multi.out │ │ │ ├── blkid-ip-udev-multi.json │ │ │ ├── blkid-ip-udev-multi.out │ │ │ ├── blkid-ip-udev.json │ │ │ ├── blkid-ip-udev.out │ │ │ ├── blkid-sda2.json │ │ │ ├── blkid-sda2.out │ │ │ ├── blkid.json │ │ │ ├── blkid.out │ │ │ ├── chage.json │ │ │ ├── chage.out │ │ │ ├── cksum.json │ │ │ ├── cksum.out │ │ │ ├── crontab-u.json │ │ │ ├── crontab-u.out │ │ │ ├── crontab.json │ │ │ ├── crontab.out │ │ │ ├── df-h.json │ │ │ ├── df-h.out │ │ │ ├── df.json │ │ │ ├── df.out │ │ │ ├── dig-aaaa.json │ │ │ ├── dig-aaaa.out │ │ │ ├── dig-axfr.json │ │ │ ├── dig-axfr.out │ │ │ ├── dig-x.json │ │ │ ├── dig-x.out │ │ │ ├── dig.json │ │ │ ├── dig.out │ │ │ ├── dmidecode.json │ │ │ ├── dmidecode.out │ │ │ ├── du.json │ │ │ ├── du.out │ │ │ ├── env.json │ │ │ ├── env.out │ │ │ ├── file.json │ │ │ ├── file.out │ │ │ ├── find.json │ │ │ ├── find.out │ │ │ ├── findmnt-a.json │ │ │ ├── findmnt-a.out │ │ │ ├── findmnt-l.json │ │ │ ├── findmnt-l.out │ │ │ ├── findmnt.json │ │ │ ├── findmnt.out │ │ │ ├── finger.json │ │ │ ├── finger.out │ │ │ ├── free-h.json │ │ │ ├── free-h.out │ │ │ ├── free-w.json │ │ │ ├── free-w.out │ │ │ ├── free.json │ │ │ ├── free.out │ │ │ ├── fstab.json │ │ │ ├── fstab.out │ │ │ ├── group.json │ │ │ ├── group.out │ │ │ ├── gshadow.json │ │ │ ├── gshadow.out │ │ │ ├── hash.json │ │ │ ├── hash.out │ │ │ ├── hciconfig-a.json │ │ │ ├── hciconfig-a.out │ │ │ ├── hciconfig.json │ │ │ ├── hciconfig.out │ │ │ ├── history.json │ │ │ ├── history.out │ │ │ ├── hosts.json │ │ │ ├── hosts.out │ │ │ ├── id.json │ │ │ ├── id.out │ │ │ ├── ifconfig.json │ │ │ ├── ifconfig.out │ │ │ ├── iostat-1-streaming.json │ │ │ ├── iostat-1.json │ │ │ ├── iostat-1.out │ │ │ ├── iostat-m-streaming.json │ │ │ ├── iostat-m.json │ │ │ ├── iostat-m.out │ │ │ ├── iostat-mx-streaming.json │ │ │ ├── iostat-mx.json │ │ │ ├── iostat-mx.out │ │ │ ├── iostat-streaming.json │ │ │ ├── iostat-x-streaming.json │ │ │ ├── iostat-x.json │ │ │ ├── iostat-x.out │ │ │ ├── iostat.json │ │ │ ├── iostat.out │ │ │ ├── ip_route.json │ │ │ ├── ip_route.out │ │ │ ├── iptables-filter-line-numbers.json │ │ │ ├── iptables-filter-line-numbers.out │ │ │ ├── iptables-filter-nv.json │ │ │ ├── iptables-filter-nv.out │ │ │ ├── iptables-filter.json │ │ │ ├── iptables-filter.out │ │ │ ├── iptables-mangle.json │ │ │ ├── iptables-mangle.out │ │ │ ├── iptables-nat.json │ │ │ ├── iptables-nat.out │ │ │ ├── iptables-raw.json │ │ │ ├── iptables-raw.out │ │ │ ├── iw-scan0.json │ │ │ ├── iw-scan0.out │ │ │ ├── iw-scan1.json │ │ │ ├── iw-scan1.out │ │ │ ├── iw-scan2.json │ │ │ ├── iw-scan2.out │ │ │ ├── jobs.json │ │ │ ├── jobs.out │ │ │ ├── last-crash.json │ │ │ ├── last-crash.out │ │ │ ├── last-w.json │ │ │ ├── last-w.out │ │ │ ├── last-wF.json │ │ │ ├── last-wF.out │ │ │ ├── last-wixF.json │ │ │ ├── last-wixF.out │ │ │ ├── last.json │ │ │ ├── last.out │ │ │ ├── lastb.json │ │ │ ├── lastb.out │ │ │ ├── ls-R-newlines.json │ │ │ ├── ls-R-newlines.out │ │ │ ├── ls-R.json │ │ │ ├── ls-R.out │ │ │ ├── ls-al-streaming.json │ │ │ ├── ls-al.json │ │ │ ├── ls-al.out │ │ │ ├── ls-alR-streaming.json │ │ │ ├── ls-alR.json │ │ │ ├── ls-alR.out │ │ │ ├── ls-alh-streaming.json │ │ │ ├── ls-alh.json │ │ │ ├── ls-alh.out │ │ │ ├── ls-glob.json │ │ │ ├── ls-glob.out │ │ │ ├── ls-l-newlines.json │ │ │ ├── ls-l-newlines.out │ │ │ ├── ls-lR-newlines.json │ │ │ ├── ls-lR-newlines.out │ │ │ ├── ls-newlines.json │ │ │ ├── ls-newlines.out │ │ │ ├── ls.json │ │ │ ├── ls.out │ │ │ ├── lsblk-allcols.json │ │ │ ├── lsblk-allcols.out │ │ │ ├── lsblk.json │ │ │ ├── lsblk.out │ │ │ ├── lsmod.json │ │ │ ├── lsmod.out │ │ │ ├── lsof-sudo.json │ │ │ ├── lsof-sudo.out │ │ │ ├── lsof.json │ │ │ ├── lsof.out │ │ │ ├── lsusb-v-single.json │ │ │ ├── lsusb-v-single.out │ │ │ ├── lsusb-v.json │ │ │ ├── lsusb-v.out │ │ │ ├── lsusb.json │ │ │ ├── lsusb.out │ │ │ ├── md5sum.json │ │ │ ├── md5sum.out │ │ │ ├── mount.json │ │ │ ├── mount.out │ │ │ ├── mpstat-A-2-5-streaming.json │ │ │ ├── mpstat-A-2-5.json │ │ │ ├── mpstat-A-2-5.out │ │ │ ├── mpstat-A-streaming.json │ │ │ ├── mpstat-A.json │ │ │ ├── mpstat-A.out │ │ │ ├── mpstat-streaming.json │ │ │ ├── mpstat.json │ │ │ ├── mpstat.out │ │ │ ├── netstat-i.json │ │ │ ├── netstat-i.out │ │ │ ├── netstat-l.json │ │ │ ├── netstat-l.out │ │ │ ├── netstat-p.json │ │ │ ├── netstat-p.out │ │ │ ├── netstat-r.json │ │ │ ├── netstat-r.out │ │ │ ├── netstat-rne.json │ │ │ ├── netstat-rne.out │ │ │ ├── netstat-rnee.json │ │ │ ├── netstat-rnee.out │ │ │ ├── netstat-sudo-aeep.json │ │ │ ├── netstat-sudo-aeep.out │ │ │ ├── netstat-sudo-lnp.json │ │ │ ├── netstat-sudo-lnp.out │ │ │ ├── netstat.json │ │ │ ├── netstat.out │ │ │ ├── nmcli-connection-all.json │ │ │ ├── nmcli-connection-all.out │ │ │ ├── nmcli-connection-show-ens33.json │ │ │ ├── nmcli-connection-show-ens33.out │ │ │ ├── nmcli-connection.json │ │ │ ├── nmcli-connection.out │ │ │ ├── nmcli-device-all.json │ │ │ ├── nmcli-device-all.out │ │ │ ├── nmcli-device-show-ens33.json │ │ │ ├── nmcli-device-show-ens33.out │ │ │ ├── nmcli-device-show-lo.json │ │ │ ├── nmcli-device-show-lo.out │ │ │ ├── nmcli-device-show.json │ │ │ ├── nmcli-device-show.out │ │ │ ├── nmcli-device.json │ │ │ ├── nmcli-device.out │ │ │ ├── nmcli-general-all.json │ │ │ ├── nmcli-general-all.out │ │ │ ├── nmcli-general-permissions.json │ │ │ ├── nmcli-general-permissions.out │ │ │ ├── nmcli.out │ │ │ ├── ntpq-p.json │ │ │ ├── ntpq-p.out │ │ │ ├── ntpq-pn.json │ │ │ ├── ntpq-pn.out │ │ │ ├── passwd.json │ │ │ ├── passwd.out │ │ │ ├── pidstat-hdlrsuw-2-5-streaming.json │ │ │ ├── pidstat-hdlrsuw-2-5.json │ │ │ ├── pidstat-hdlrsuw-2-5.out │ │ │ ├── pidstat-hdlrsuw-streaming.json │ │ │ ├── pidstat-hdlrsuw.json │ │ │ ├── pidstat-hdlrsuw.out │ │ │ ├── pidstat-hl-streaming.json │ │ │ ├── pidstat-hl.json │ │ │ ├── pidstat-hl.out │ │ │ ├── pidstat.out │ │ │ ├── ping-hostname-O-D-p-s-streaming.json │ │ │ ├── ping-hostname-O-D-p-s.json │ │ │ ├── ping-hostname-O-D-p-s.out │ │ │ ├── ping-hostname-O-p-streaming.json │ │ │ ├── ping-hostname-O-p.json │ │ │ ├── ping-hostname-O-p.out │ │ │ ├── ping-hostname-O-streaming.json │ │ │ ├── ping-hostname-O.json │ │ │ ├── ping-hostname-O.out │ │ │ ├── ping-ip-O-D-streaming.json │ │ │ ├── ping-ip-O-D.json │ │ │ ├── ping-ip-O-D.out │ │ │ ├── ping-ip-O-streaming-ignore-exceptions.json │ │ │ ├── ping-ip-O-streaming.json │ │ │ ├── ping-ip-O-unparsedlines.json │ │ │ ├── ping-ip-O-unparsedlines.out │ │ │ ├── ping-ip-O.json │ │ │ ├── ping-ip-O.out │ │ │ ├── ping-ip-dup-streaming.json │ │ │ ├── ping-ip-dup.json │ │ │ ├── ping-ip-dup.out │ │ │ ├── ping-missing-hostname-streaming.json │ │ │ ├── ping-missing-hostname.json │ │ │ ├── ping-missing-hostname.out │ │ │ ├── ping6-hostname-O-D-p-s-streaming.json │ │ │ ├── ping6-hostname-O-D-p-s.json │ │ │ ├── ping6-hostname-O-D-p-s.out │ │ │ ├── ping6-hostname-O-p-streaming.json │ │ │ ├── ping6-hostname-O-p.json │ │ │ ├── ping6-hostname-O-p.out │ │ │ ├── ping6-ip-O-D-p-streaming.json │ │ │ ├── ping6-ip-O-D-p.json │ │ │ ├── ping6-ip-O-D-p.out │ │ │ ├── ping6-ip-O-p-streaming.json │ │ │ ├── ping6-ip-O-p-unparsable.json │ │ │ ├── ping6-ip-O-p-unparsable.out │ │ │ ├── ping6-ip-O-p.json │ │ │ ├── ping6-ip-O-p.out │ │ │ ├── ping6-ip-dup-streaming.json │ │ │ ├── ping6-ip-dup.json │ │ │ ├── ping6-ip-dup.out │ │ │ ├── pip-list.json │ │ │ ├── pip-list.out │ │ │ ├── pip-show.json │ │ │ ├── pip-show.out │ │ │ ├── ps-axu.json │ │ │ ├── ps-axu.out │ │ │ ├── ps-ef.json │ │ │ ├── ps-ef.out │ │ │ ├── route-6-n.json │ │ │ ├── route-6-n.out │ │ │ ├── route-6.json │ │ │ ├── route-6.out │ │ │ ├── route-vn.json │ │ │ ├── route-vn.out │ │ │ ├── route.json │ │ │ ├── route.out │ │ │ ├── rpm-qai.json │ │ │ ├── rpm-qai.out │ │ │ ├── rpm-qi-package.json │ │ │ ├── rpm-qi-package.out │ │ │ ├── rsync-i-logfile-streaming.json │ │ │ ├── rsync-i-logfile.json │ │ │ ├── rsync-i-logfile.out │ │ │ ├── rsync-i-streaming.json │ │ │ ├── rsync-i-v-logfile-streaming.json │ │ │ ├── rsync-i-v-logfile.json │ │ │ ├── rsync-i-v-logfile.out │ │ │ ├── rsync-i-vv-logfile-streaming.json │ │ │ ├── rsync-i-vv-logfile.json │ │ │ ├── rsync-i-vv-logfile.out │ │ │ ├── rsync-i-vvv-logfile-nochange-streaming.json │ │ │ ├── rsync-i-vvv-logfile-nochange.json │ │ │ ├── rsync-i-vvv-logfile-nochange.out │ │ │ ├── rsync-i-vvv-logfile-streaming.json │ │ │ ├── rsync-i-vvv-logfile.json │ │ │ ├── rsync-i-vvv-logfile.out │ │ │ ├── rsync-i.json │ │ │ ├── rsync-i.out │ │ │ ├── rsync-ivvv-nochange-streaming.json │ │ │ ├── rsync-ivvv-nochange.json │ │ │ ├── rsync-ivvv-nochange.out │ │ │ ├── rsync-ivvv-streaming.json │ │ │ ├── rsync-ivvv.json │ │ │ ├── rsync-ivvv.out │ │ │ ├── sfdisk-d-multi.json │ │ │ ├── sfdisk-d-multi.out │ │ │ ├── sfdisk-d.json │ │ │ ├── sfdisk-d.out │ │ │ ├── sfdisk-l-multi.json │ │ │ ├── sfdisk-l-multi.out │ │ │ ├── sfdisk-l.json │ │ │ ├── sfdisk-l.out │ │ │ ├── sfdisk-luB.json │ │ │ ├── sfdisk-luB.out │ │ │ ├── sfdisk-luM.json │ │ │ ├── sfdisk-luM.out │ │ │ ├── sfdisk-luS.json │ │ │ ├── sfdisk-luS.out │ │ │ ├── sha256sum.json │ │ │ ├── sha256sum.out │ │ │ ├── sha384sum.json │ │ │ ├── sha384sum.out │ │ │ ├── shadow.json │ │ │ ├── shadow.out │ │ │ ├── ss-sudo-a.json │ │ │ ├── ss-sudo-a.out │ │ │ ├── stat-streaming.json │ │ │ ├── stat.json │ │ │ ├── stat.out │ │ │ ├── sum.json │ │ │ ├── sum.out │ │ │ ├── sysctl-a.json │ │ │ ├── sysctl-a.out │ │ │ ├── systemctl-ls.json │ │ │ ├── systemctl-ls.out │ │ │ ├── systemctl-luf.json │ │ │ ├── systemctl-luf.out │ │ │ ├── systemctl.json │ │ │ ├── systemctl.out │ │ │ ├── timedatectl.json │ │ │ ├── timedatectl.out │ │ │ ├── top-b-n1-gib-allfields-w-streaming.json │ │ │ ├── top-b-n1-gib-allfields-w.json │ │ │ ├── top-b-n1-gib-allfields-w.out │ │ │ ├── top-b-n1-gib-streaming.json │ │ │ ├── top-b-n1-gib.json │ │ │ ├── top-b-n1-gib.out │ │ │ ├── top-b-n3-streaming.json │ │ │ ├── top-b-n3.json │ │ │ ├── top-b-n3.out │ │ │ ├── tracepath.json │ │ │ ├── tracepath.out │ │ │ ├── tracepath6.json │ │ │ ├── tracepath6.out │ │ │ ├── traceroute-streaming.json │ │ │ ├── traceroute.json │ │ │ ├── traceroute.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── uname.out │ │ │ ├── uptime.json │ │ │ ├── uptime.out │ │ │ ├── vmstat-a-streaming.json │ │ │ ├── vmstat-a.json │ │ │ ├── vmstat-a.out │ │ │ ├── vmstat-at-5-10-streaming.json │ │ │ ├── vmstat-at-5-10.json │ │ │ ├── vmstat-at-5-10.out │ │ │ ├── vmstat-awt-streaming.json │ │ │ ├── vmstat-awt.json │ │ │ ├── vmstat-awt.out │ │ │ ├── vmstat-d-streaming.json │ │ │ ├── vmstat-d.json │ │ │ ├── vmstat-d.out │ │ │ ├── vmstat-dt-streaming.json │ │ │ ├── vmstat-dt.json │ │ │ ├── vmstat-dt.out │ │ │ ├── vmstat-streaming.json │ │ │ ├── vmstat-w-streaming.json │ │ │ ├── vmstat-w.json │ │ │ ├── vmstat-w.out │ │ │ ├── vmstat.json │ │ │ ├── vmstat.out │ │ │ ├── w.json │ │ │ ├── w.out │ │ │ ├── wc.json │ │ │ ├── wc.out │ │ │ ├── who-a.json │ │ │ ├── who-a.out │ │ │ ├── who.json │ │ │ └── who.out │ │ ├── centos-8/ │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── sfdisk-F.json │ │ │ ├── sfdisk-F.out │ │ │ ├── sfdisk-l.json │ │ │ └── sfdisk-l.out │ │ ├── create_fixtures.sh │ │ ├── debian10/ │ │ │ ├── crontab-u.json │ │ │ ├── crontab-u.out │ │ │ ├── sfdisk-F.json │ │ │ ├── sfdisk-F.out │ │ │ ├── sfdisk-F2.json │ │ │ ├── sfdisk-F2.out │ │ │ ├── sfdisk-l.json │ │ │ ├── sfdisk-l.out │ │ │ ├── sfdisk-l2.json │ │ │ ├── sfdisk-l2.out │ │ │ ├── sfdisk-l3.json │ │ │ ├── sfdisk-l3.out │ │ │ ├── uname-a.json │ │ │ └── uname-a.out │ │ ├── debian13/ │ │ │ ├── who.json │ │ │ └── who.out │ │ ├── fedora32/ │ │ │ ├── dmidecode.json │ │ │ ├── dmidecode.out │ │ │ ├── last.json │ │ │ ├── last.out │ │ │ ├── netstat.json │ │ │ ├── netstat.out │ │ │ ├── nmcli-connection-show-ens33.json │ │ │ ├── nmcli-connection-show-ens33.out │ │ │ ├── nmcli-device-show-ens33.json │ │ │ ├── nmcli-device-show-ens33.out │ │ │ ├── nmcli-device-show.json │ │ │ ├── nmcli-device-show.out │ │ │ ├── ping-hostname-O-D-p-s-streaming.json │ │ │ ├── ping-hostname-O-D-p-s.json │ │ │ ├── ping-hostname-O-D-p-s.out │ │ │ ├── ping-hostname-O-p-streaming.json │ │ │ ├── ping-hostname-O-p.json │ │ │ ├── ping-hostname-O-p.out │ │ │ ├── ping-hostname-O-streaming.json │ │ │ ├── ping-hostname-O.json │ │ │ ├── ping-hostname-O.out │ │ │ ├── ping-ip-O-D-streaming.json │ │ │ ├── ping-ip-O-D.json │ │ │ ├── ping-ip-O-D.out │ │ │ ├── ping-ip-O-streaming.json │ │ │ ├── ping-ip-O.json │ │ │ ├── ping-ip-O.out │ │ │ ├── ping6-hostname-O-D-p-s-streaming.json │ │ │ ├── ping6-hostname-O-D-p-s.json │ │ │ ├── ping6-hostname-O-D-p-s.out │ │ │ ├── ping6-hostname-O-D-p.json │ │ │ ├── ping6-hostname-O-D-p.out │ │ │ ├── ping6-hostname-O-p-streaming.json │ │ │ ├── ping6-hostname-O-p.json │ │ │ ├── ping6-hostname-O-p.out │ │ │ ├── ping6-ip-O-D-p-streaming.json │ │ │ ├── ping6-ip-O-D-p.json │ │ │ ├── ping6-ip-O-D-p.out │ │ │ ├── ping6-ip-O-p-streaming.json │ │ │ ├── ping6-ip-O-p.json │ │ │ └── ping6-ip-O-p.out │ │ ├── freebsd12/ │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── ifconfig-extra-fields.json │ │ │ ├── ifconfig-extra-fields.out │ │ │ ├── ifconfig-extra-fields2.json │ │ │ ├── ifconfig-extra-fields2.out │ │ │ ├── ifconfig-extra-fields3.json │ │ │ ├── ifconfig-extra-fields3.out │ │ │ ├── ifconfig-extra-fields4.json │ │ │ ├── ifconfig-extra-fields4.out │ │ │ ├── last.json │ │ │ ├── last.out │ │ │ ├── netstat-Aa.json │ │ │ ├── netstat-Aa.out │ │ │ ├── netstat-AaT.json │ │ │ ├── netstat-AaT.out │ │ │ ├── netstat-AanP.json │ │ │ ├── netstat-AanP.out │ │ │ ├── netstat-Aax.json │ │ │ ├── netstat-Aax.out │ │ │ ├── netstat-aT.json │ │ │ ├── netstat-aT.out │ │ │ ├── netstat-an.json │ │ │ ├── netstat-an.out │ │ │ ├── netstat-i.json │ │ │ ├── netstat-i.out │ │ │ ├── netstat-ib.json │ │ │ ├── netstat-ib.out │ │ │ ├── netstat-r.json │ │ │ ├── netstat-r.out │ │ │ ├── ntpq-p.json │ │ │ ├── ntpq-p.out │ │ │ ├── ping-hostname-p-streaming.json │ │ │ ├── ping-hostname-p.json │ │ │ ├── ping-hostname-p.out │ │ │ ├── ping-hostname-s-streaming.json │ │ │ ├── ping-hostname-s.json │ │ │ ├── ping-hostname-s.out │ │ │ ├── ping-hostname-streaming.json │ │ │ ├── ping-hostname.json │ │ │ ├── ping-hostname.out │ │ │ ├── ping-ip-p-streaming.json │ │ │ ├── ping-ip-p.json │ │ │ ├── ping-ip-p.out │ │ │ ├── ping-ip-s-streaming.json │ │ │ ├── ping-ip-s.json │ │ │ ├── ping-ip-s.out │ │ │ ├── ping-ip-streaming.json │ │ │ ├── ping-ip.json │ │ │ ├── ping-ip.out │ │ │ ├── ping6-hostname-p-streaming.json │ │ │ ├── ping6-hostname-p.json │ │ │ ├── ping6-hostname-p.out │ │ │ ├── ping6-hostname-s-streaming.json │ │ │ ├── ping6-hostname-s.json │ │ │ ├── ping6-hostname-s.out │ │ │ ├── ping6-hostname-streaming.json │ │ │ ├── ping6-hostname.json │ │ │ ├── ping6-hostname.out │ │ │ ├── ping6-ip-p-streaming.json │ │ │ ├── ping6-ip-p.json │ │ │ ├── ping6-ip-p.out │ │ │ ├── ping6-ip-s-streaming.json │ │ │ ├── ping6-ip-s.json │ │ │ ├── ping6-ip-s.out │ │ │ ├── ping6-ip-streaming.json │ │ │ ├── ping6-ip.json │ │ │ ├── ping6-ip.out │ │ │ ├── stat-streaming.json │ │ │ ├── stat.json │ │ │ ├── stat.out │ │ │ ├── sysctl-a.json │ │ │ ├── sysctl-a.out │ │ │ ├── traceroute-streaming.json │ │ │ ├── traceroute.json │ │ │ ├── traceroute.out │ │ │ ├── traceroute6-streaming.json │ │ │ ├── traceroute6.json │ │ │ ├── traceroute6.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── uname-a2.json │ │ │ └── uname-a2.out │ │ ├── generic/ │ │ │ ├── acpi-V-never-fully-discharge.json │ │ │ ├── acpi-V-never-fully-discharge.out │ │ │ ├── acpi-V.json │ │ │ ├── acpi-V.out │ │ │ ├── acpi-V2.json │ │ │ ├── acpi-V2.out │ │ │ ├── acpi-V3.json │ │ │ ├── acpi-V3.out │ │ │ ├── acpi-V4.json │ │ │ ├── acpi-V4.out │ │ │ ├── acpi-not-charging.json │ │ │ ├── acpi-not-charging.out │ │ │ ├── apt_cache_show--standard.json │ │ │ ├── apt_cache_show--standard.out │ │ │ ├── apt_get_sqq--sample.json │ │ │ ├── apt_get_sqq--sample.out │ │ │ ├── bluetoothctl_controller.out │ │ │ ├── bluetoothctl_controller_2.out │ │ │ ├── bluetoothctl_controller_with_manufacturer.out │ │ │ ├── bluetoothctl_device.out │ │ │ ├── bluetoothctl_device_random.out │ │ │ ├── bluetoothctl_device_with_battery.out │ │ │ ├── cbt-multiple-columns.json │ │ │ ├── cbt-multiple-columns.out │ │ │ ├── cbt-multiple-rows-raw.json │ │ │ ├── cbt-multiple-rows.json │ │ │ ├── cbt-multiple-rows.out │ │ │ ├── cbt-single.json │ │ │ ├── cbt-single.out │ │ │ ├── cef-streaming.json │ │ │ ├── cef.json │ │ │ ├── cef.out │ │ │ ├── certbot-account.json │ │ │ ├── certbot-account.out │ │ │ ├── certbot-certs.json │ │ │ ├── certbot-certs.out │ │ │ ├── common-log-format-streaming.json │ │ │ ├── common-log-format.json │ │ │ ├── common-log-format.log │ │ │ ├── crontab-no-normal-entries.json │ │ │ ├── crontab-no-normal-entries.out │ │ │ ├── crontab-u-no-normal-entries.json │ │ │ ├── crontab-u-no-normal-entries.out │ │ │ ├── crontab-u-var-fix.json │ │ │ ├── crontab-u-var-fix.out │ │ │ ├── crontab-var-fix.json │ │ │ ├── crontab-var-fix.out │ │ │ ├── csv-10k-sales-records-streaming.json │ │ │ ├── csv-10k-sales-records.csv │ │ │ ├── csv-biostats-streaming.json │ │ │ ├── csv-biostats.csv │ │ │ ├── csv-biostats.json │ │ │ ├── csv-cities-streaming.json │ │ │ ├── csv-cities.csv │ │ │ ├── csv-cities.json │ │ │ ├── csv-deniro-streaming.json │ │ │ ├── csv-deniro.csv │ │ │ ├── csv-deniro.json │ │ │ ├── csv-doublequoted-streaming.json │ │ │ ├── csv-doublequoted.csv │ │ │ ├── csv-doublequoted.json │ │ │ ├── csv-example-streaming.json │ │ │ ├── csv-example.csv │ │ │ ├── csv-example.json │ │ │ ├── csv-flyrna-streaming.json │ │ │ ├── csv-flyrna.json │ │ │ ├── csv-flyrna.tsv │ │ │ ├── csv-flyrna2-streaming.json │ │ │ ├── csv-flyrna2.json │ │ │ ├── csv-flyrna2.tsv │ │ │ ├── csv-homes-pipe-streaming.json │ │ │ ├── csv-homes-pipe.csv │ │ │ ├── csv-homes-pipe.json │ │ │ ├── csv-homes-streaming.json │ │ │ ├── csv-homes.csv │ │ │ ├── csv-homes.json │ │ │ ├── csv-insurance.csv │ │ │ ├── csv-insurance.json │ │ │ ├── csv-utf-8-bom-streaming.json │ │ │ ├── csv-utf-8-bom.csv │ │ │ ├── csv-utf-8-bom.json │ │ │ ├── curl_head--ILvs-cnn-com.json │ │ │ ├── curl_head--ILvs-cnn-com.out │ │ │ ├── curl_head--ILvs-example-com.json │ │ │ ├── curl_head--ILvs-example-com.out │ │ │ ├── curl_head--ILvs-facebook-com.json │ │ │ ├── curl_head--ILvs-facebook-com.out │ │ │ ├── curl_head--ILvs-google-com.json │ │ │ ├── curl_head--ILvs-google-com.out │ │ │ ├── curl_head--ILvs-microsoft-com.json │ │ │ ├── curl_head--ILvs-microsoft-com.out │ │ │ ├── curl_head--ILvs-yahoo-com.json │ │ │ ├── curl_head--ILvs-yahoo-com.out │ │ │ ├── date-after-midnight.json │ │ │ ├── date-after-midnight.out │ │ │ ├── date-before-midnight.json │ │ │ ├── date-before-midnight.out │ │ │ ├── date.json │ │ │ ├── date.out │ │ │ ├── debconf-show.json │ │ │ ├── debconf-show.out │ │ │ ├── df-long-filesystem.json │ │ │ ├── df-long-filesystem.out │ │ │ ├── dig-additional.json │ │ │ ├── dig-additional.out │ │ │ ├── dig-additional2.json │ │ │ ├── dig-additional2.out │ │ │ ├── dig-additional3.json │ │ │ ├── dig-additional3.out │ │ │ ├── dig-answer-spaces.json │ │ │ ├── dig-answer-spaces.out │ │ │ ├── dig-edns.json │ │ │ ├── dig-edns.out │ │ │ ├── dig-edns2.json │ │ │ ├── dig-edns2.out │ │ │ ├── dig-edns3.json │ │ │ ├── dig-edns3.out │ │ │ ├── dig-nsid.json │ │ │ ├── dig-nsid.out │ │ │ ├── env-multiline-raw.json │ │ │ ├── env-multiline.json │ │ │ ├── env-multiline.out │ │ │ ├── ethtool--default1.json │ │ │ ├── ethtool--default1.out │ │ │ ├── ethtool--default2.json │ │ │ ├── ethtool--default2.out │ │ │ ├── ethtool--link-partner-advertised-link-modes.json │ │ │ ├── ethtool--link-partner-advertised-link-modes.out │ │ │ ├── ethtool--module-info-convert-units.json │ │ │ ├── ethtool--module-info-convert-units.out │ │ │ ├── ethtool--module-info.json │ │ │ ├── ethtool--module-info.out │ │ │ ├── git-log-blank-author-fix-streaming.json │ │ │ ├── git-log-blank-author-fix.json │ │ │ ├── git-log-blank-author-fix.out │ │ │ ├── git-log-full-shortstat-streaming.json │ │ │ ├── git-log-full-shortstat.json │ │ │ ├── git-log-full-shortstat.out │ │ │ ├── git-log-full-stat-streaming.json │ │ │ ├── git-log-full-stat.json │ │ │ ├── git-log-full-stat.out │ │ │ ├── git-log-full-streaming.json │ │ │ ├── git-log-full.json │ │ │ ├── git-log-full.out │ │ │ ├── git-log-fuller-shortstat-streaming.json │ │ │ ├── git-log-fuller-shortstat.json │ │ │ ├── git-log-fuller-shortstat.out │ │ │ ├── git-log-fuller-stat-streaming.json │ │ │ ├── git-log-fuller-stat.json │ │ │ ├── git-log-fuller-stat.out │ │ │ ├── git-log-fuller-streaming.json │ │ │ ├── git-log-fuller.json │ │ │ ├── git-log-fuller.out │ │ │ ├── git-log-hash-in-message-fix-streaming.json │ │ │ ├── git-log-hash-in-message-fix.json │ │ │ ├── git-log-hash-in-message-fix.out │ │ │ ├── git-log-is-hash-regex-fix-streaming.json │ │ │ ├── git-log-is-hash-regex-fix.json │ │ │ ├── git-log-is-hash-regex-fix.out │ │ │ ├── git-log-medium-shortstat-streaming.json │ │ │ ├── git-log-medium-shortstat.json │ │ │ ├── git-log-medium-shortstat.out │ │ │ ├── git-log-medium-stat-streaming.json │ │ │ ├── git-log-medium-stat.json │ │ │ ├── git-log-medium-stat.out │ │ │ ├── git-log-medium-streaming.json │ │ │ ├── git-log-medium.json │ │ │ ├── git-log-medium.out │ │ │ ├── git-log-oneline-shortstat-streaming.json │ │ │ ├── git-log-oneline-shortstat.json │ │ │ ├── git-log-oneline-shortstat.out │ │ │ ├── git-log-oneline-stat-streaming.json │ │ │ ├── git-log-oneline-stat.json │ │ │ ├── git-log-oneline-stat.out │ │ │ ├── git-log-oneline-streaming.json │ │ │ ├── git-log-oneline.json │ │ │ ├── git-log-oneline.out │ │ │ ├── git-log-short-shortstat-streaming.json │ │ │ ├── git-log-short-shortstat.json │ │ │ ├── git-log-short-shortstat.out │ │ │ ├── git-log-short-stat-streaming.json │ │ │ ├── git-log-short-stat.json │ │ │ ├── git-log-short-stat.out │ │ │ ├── git-log-short-streaming.json │ │ │ ├── git-log-short.json │ │ │ ├── git-log-short.out │ │ │ ├── git-log-streaming-ignore-exceptions.json │ │ │ ├── git-log-streaming.json │ │ │ ├── git-log.json │ │ │ ├── git-log.out │ │ │ ├── git-ls-remote-raw.json │ │ │ ├── git-ls-remote.json │ │ │ ├── git-ls-remote.out │ │ │ ├── gpg.json │ │ │ ├── gpg.out │ │ │ ├── host-google.json │ │ │ ├── host-google.out │ │ │ ├── host-sunet.json │ │ │ ├── host-sunet.out │ │ │ ├── http_headers--example-com.json │ │ │ ├── http_headers--example-com.out │ │ │ ├── http_headers--google-com.json │ │ │ ├── http_headers--google-com.out │ │ │ ├── ini-double-quote.ini │ │ │ ├── ini-double-quote.json │ │ │ ├── ini-dup-double-quote.json │ │ │ ├── ini-dup-iptelserver.json │ │ │ ├── ini-dup-mariadb.json │ │ │ ├── ini-dup-single-quote.json │ │ │ ├── ini-dup-test.json │ │ │ ├── ini-iptelserver.ini │ │ │ ├── ini-iptelserver.json │ │ │ ├── ini-mariadb.ini │ │ │ ├── ini-mariadb.json │ │ │ ├── ini-single-quote.ini │ │ │ ├── ini-single-quote.json │ │ │ ├── ini-test.ini │ │ │ ├── ini-test.json │ │ │ ├── iptables-no-jump.json │ │ │ ├── iptables-no-jump.out │ │ │ ├── iwconfig-many.json │ │ │ ├── iwconfig-many.out │ │ │ ├── iwconfig-raw.json │ │ │ ├── iwconfig-space-dash-ssid.json │ │ │ ├── iwconfig-space-dash-ssid.out │ │ │ ├── iwconfig.json │ │ │ ├── iwconfig.out │ │ │ ├── keyvalue-ifcfg.json │ │ │ ├── keyvalue-ifcfg.txt │ │ │ ├── keyvalue.json │ │ │ ├── keyvalue.txt │ │ │ ├── lsb_release-a.json │ │ │ ├── lsb_release-a.out │ │ │ ├── lsusb-binary-object-store.json │ │ │ ├── lsusb-binary-object-store.out │ │ │ ├── lsusb-cdc-mbim.json │ │ │ ├── lsusb-cdc-mbim.out │ │ │ ├── lsusb-device-qualifier.json │ │ │ ├── lsusb-device-qualifier.out │ │ │ ├── lsusb-extra-hub-port-status-info.json │ │ │ ├── lsusb-extra-hub-port-status-info.out │ │ │ ├── lsusb-t.out │ │ │ ├── lsusb-test-attributes.json │ │ │ ├── lsusb-test-attributes.out │ │ │ ├── lsusb-test-attributes2.json │ │ │ ├── lsusb-test-attributes2.out │ │ │ ├── m3u-dirty.json │ │ │ ├── m3u-dirty.m3u │ │ │ ├── m3u-example.json │ │ │ ├── m3u-example.m3u │ │ │ ├── mdadm-examine-container1.json │ │ │ ├── mdadm-examine-container1.out │ │ │ ├── mdadm-examine-container2-dev1.json │ │ │ ├── mdadm-examine-container2-dev1.out │ │ │ ├── mdadm-examine-container2-dev2.json │ │ │ ├── mdadm-examine-container2-dev2.out │ │ │ ├── mdadm-examine-raid0-offline.json │ │ │ ├── mdadm-examine-raid0-offline.out │ │ │ ├── mdadm-examine-raid0-ok.json │ │ │ ├── mdadm-examine-raid0-ok.out │ │ │ ├── mdadm-examine-raid1-0-90-ok.json │ │ │ ├── mdadm-examine-raid1-0-90-ok.out │ │ │ ├── mdadm-examine-raid1-checking.json │ │ │ ├── mdadm-examine-raid1-checking.out │ │ │ ├── mdadm-examine-raid1-failfast.json │ │ │ ├── mdadm-examine-raid1-failfast.out │ │ │ ├── mdadm-examine-raid1-faulty1.json │ │ │ ├── mdadm-examine-raid1-faulty1.out │ │ │ ├── mdadm-examine-raid1-faulty2.json │ │ │ ├── mdadm-examine-raid1-faulty2.out │ │ │ ├── mdadm-examine-raid1-moreflags.json │ │ │ ├── mdadm-examine-raid1-moreflags.out │ │ │ ├── mdadm-examine-raid1-ok.json │ │ │ ├── mdadm-examine-raid1-ok.out │ │ │ ├── mdadm-examine-raid1-replacing.json │ │ │ ├── mdadm-examine-raid1-replacing.out │ │ │ ├── mdadm-examine-raid1-resync.json │ │ │ ├── mdadm-examine-raid1-resync.out │ │ │ ├── mdadm-examine-raid1-spare.json │ │ │ ├── mdadm-examine-raid1-spare.out │ │ │ ├── mdadm-examine-raid1-syncing.json │ │ │ ├── mdadm-examine-raid1-syncing.out │ │ │ ├── mdadm-examine-raid5-homehost.json │ │ │ ├── mdadm-examine-raid5-homehost.out │ │ │ ├── mdadm-examine-raid5-meta09.json │ │ │ ├── mdadm-examine-raid5-meta09.out │ │ │ ├── mdadm-examine-raid5-ok.json │ │ │ ├── mdadm-examine-raid5-ok.out │ │ │ ├── mdadm-examine.json │ │ │ ├── mdadm-examine.out │ │ │ ├── mdadm-query-container1-member.json │ │ │ ├── mdadm-query-container1-member.out │ │ │ ├── mdadm-query-container1-root.json │ │ │ ├── mdadm-query-container1-root.out │ │ │ ├── mdadm-query-container2-member.json │ │ │ ├── mdadm-query-container2-member.out │ │ │ ├── mdadm-query-container2-root.json │ │ │ ├── mdadm-query-container2-root.out │ │ │ ├── mdadm-query-detail.json │ │ │ ├── mdadm-query-detail.out │ │ │ ├── mdadm-query-raid0-ok.json │ │ │ ├── mdadm-query-raid0-ok.out │ │ │ ├── mdadm-query-raid1-failed-and-flags.json │ │ │ ├── mdadm-query-raid1-failed-and-flags.out │ │ │ ├── mdadm-query-raid1-faulty-and-removed.json │ │ │ ├── mdadm-query-raid1-faulty-and-removed.out │ │ │ ├── mdadm-query-raid1-faulty-with-spare.json │ │ │ ├── mdadm-query-raid1-faulty-with-spare.out │ │ │ ├── mdadm-query-raid1-faulty.json │ │ │ ├── mdadm-query-raid1-faulty.out │ │ │ ├── mdadm-query-raid1-ok-0-9.json │ │ │ ├── mdadm-query-raid1-ok-0-9.out │ │ │ ├── mdadm-query-raid1-ok-failfast.json │ │ │ ├── mdadm-query-raid1-ok-failfast.out │ │ │ ├── mdadm-query-raid1-ok-spare.json │ │ │ ├── mdadm-query-raid1-ok-spare.out │ │ │ ├── mdadm-query-raid1-ok.json │ │ │ ├── mdadm-query-raid1-ok.out │ │ │ ├── mdadm-query-raid1-rebuild-failfast.json │ │ │ ├── mdadm-query-raid1-rebuild-failfast.out │ │ │ ├── mdadm-query-raid1-spare-writem-rebuild.json │ │ │ ├── mdadm-query-raid1-spare-writem-rebuild.out │ │ │ ├── mdadm-query-raid1-syncing.json │ │ │ ├── mdadm-query-raid1-syncing.out │ │ │ ├── mdadm-query-raid5-homehost.json │ │ │ ├── mdadm-query-raid5-homehost.out │ │ │ ├── mdadm-query-raid5-meta09.json │ │ │ ├── mdadm-query-raid5-meta09.out │ │ │ ├── mdadm-query-raid5-ok.json │ │ │ ├── mdadm-query-raid5-ok.out │ │ │ ├── mount-parens-in-filesystem.json │ │ │ ├── mount-parens-in-filesystem.out │ │ │ ├── mount-spaces-in-filename.json │ │ │ ├── mount-spaces-in-filename.out │ │ │ ├── mount-spaces-in-mountpoint.json │ │ │ ├── mount-spaces-in-mountpoint.out │ │ │ ├── needrestart--extralines.json │ │ │ ├── needrestart--extralines.out │ │ │ ├── needrestart--pid.json │ │ │ ├── needrestart--pid.out │ │ │ ├── needrestart--standard.json │ │ │ ├── needrestart--standard.out │ │ │ ├── netstat-no-state.json │ │ │ ├── netstat-no-state.out │ │ │ ├── netstat-old.json │ │ │ ├── netstat-old.out │ │ │ ├── nmcli-team-and-team-port-config.json │ │ │ ├── nmcli-team-and-team-port-config.out │ │ │ ├── nmcli-team-config-blank.json │ │ │ ├── nmcli-team-config-blank.out │ │ │ ├── nmcli-team-config.json │ │ │ ├── nmcli-team-config.out │ │ │ ├── nmcli-team-port-config-blank.json │ │ │ ├── nmcli-team-port-config-blank.out │ │ │ ├── nmcli-team-port-config.json │ │ │ ├── nmcli-team-port-config.out │ │ │ ├── nsd_control-cookie_secrets.json │ │ │ ├── nsd_control-cookie_secrets.out │ │ │ ├── nsd_control-stats.json │ │ │ ├── nsd_control-stats.out │ │ │ ├── nsd_control-status.json │ │ │ ├── nsd_control-status.out │ │ │ ├── nsd_control-tsig.json │ │ │ ├── nsd_control-tsig.out │ │ │ ├── nsd_control-zonestatus.json │ │ │ ├── nsd_control-zonestatus.out │ │ │ ├── nsd_control.json │ │ │ ├── nsd_control.out │ │ │ ├── openvpn-status.json │ │ │ ├── openvpn-status.log │ │ │ ├── os-release-centos │ │ │ ├── os-release-centos.json │ │ │ ├── os-release-ubuntu │ │ │ ├── os-release-ubuntu.json │ │ │ ├── pacman--packages.json │ │ │ ├── pacman--packages.out │ │ │ ├── pacman--qii-zstd.json │ │ │ ├── pacman--qii-zstd.out │ │ │ ├── pacman--si-graphicsmagick.json │ │ │ ├── pacman--si-graphicsmagick.out │ │ │ ├── path--long.json │ │ │ ├── path--long.out │ │ │ ├── path--one.json │ │ │ ├── path--one.out │ │ │ ├── path--windows.json │ │ │ ├── path--windows.out │ │ │ ├── path--with-spaces.json │ │ │ ├── path--with-spaces.out │ │ │ ├── path_list--long.json │ │ │ ├── path_list--long.out │ │ │ ├── path_list--one.json │ │ │ ├── path_list--one.out │ │ │ ├── path_list--two.json │ │ │ ├── path_list--two.out │ │ │ ├── path_list--windows-environment.json │ │ │ ├── path_list--windows-environment.out │ │ │ ├── path_list--windows-long.json │ │ │ ├── path_list--windows-long.out │ │ │ ├── path_list--windows.json │ │ │ ├── path_list--windows.out │ │ │ ├── path_list--with-spaces.json │ │ │ ├── path_list--with-spaces.out │ │ │ ├── pci.ids │ │ │ ├── pci.ids.json │ │ │ ├── pgpass.json │ │ │ ├── pgpass.txt │ │ │ ├── pidstat-ht-streaming.json │ │ │ ├── pidstat-ht.json │ │ │ ├── pidstat-ht.out │ │ │ ├── pip-show-multiline-license-first-blank.json │ │ │ ├── pip-show-multiline-license-first-blank.out │ │ │ ├── pip-show-multiline-license.json │ │ │ ├── pip-show-multiline-license.out │ │ │ ├── pkg-index-apk-raw.json │ │ │ ├── pkg-index-apk.json │ │ │ ├── pkg-index-apk.out │ │ │ ├── pkg-index-deb.json │ │ │ ├── pkg-index-deb.out │ │ │ ├── plist-alltypes-bin.json │ │ │ ├── plist-alltypes-bin.plist │ │ │ ├── plist-alltypes.json │ │ │ ├── plist-alltypes.plist │ │ │ ├── plist-garageband-info.json │ │ │ ├── plist-garageband-info.plist │ │ │ ├── plist-nextstep.json │ │ │ ├── plist-nextstep.plist │ │ │ ├── plist-nextstep2.json │ │ │ ├── plist-nextstep2.plist │ │ │ ├── plist-safari-info.json │ │ │ ├── plist-safari-info.plist │ │ │ ├── postconf-M.json │ │ │ ├── postconf-M.out │ │ │ ├── resolve.conf-1 │ │ │ ├── resolve.conf-1.json │ │ │ ├── resolve.conf-2 │ │ │ ├── resolve.conf-2.json │ │ │ ├── resolve.conf-3 │ │ │ ├── resolve.conf-3.json │ │ │ ├── resolve.conf-4 │ │ │ ├── resolve.conf-4.json │ │ │ ├── rsync-i-streaming.json │ │ │ ├── rsync-i.json │ │ │ ├── rsync-i.out │ │ │ ├── srt-attack_of_the_clones.json │ │ │ ├── srt-attack_of_the_clones.srt │ │ │ ├── srt-attack_of_the_clones_raw.json │ │ │ ├── srt-complex.json │ │ │ ├── srt-complex.srt │ │ │ ├── ss-wide.json │ │ │ ├── ss-wide.out │ │ │ ├── ssh_config1 │ │ │ ├── ssh_config1.json │ │ │ ├── ssh_config2 │ │ │ ├── ssh_config2.json │ │ │ ├── ssh_config3 │ │ │ ├── ssh_config3.json │ │ │ ├── ssh_config4 │ │ │ ├── ssh_config4.json │ │ │ ├── ssh_config5 │ │ │ ├── ssh_config5.json │ │ │ ├── sshd-T-2.json │ │ │ ├── sshd-T-2.out │ │ │ ├── sshd-T.json │ │ │ ├── sshd-T.out │ │ │ ├── sshd_config │ │ │ ├── sshd_config.json │ │ │ ├── swapon-all-v1.json │ │ │ ├── swapon-all-v1.out │ │ │ ├── swapon-all-v2.json │ │ │ ├── swapon-all-v2.out │ │ │ ├── syslog-3164-streaming.json │ │ │ ├── syslog-3164.json │ │ │ ├── syslog-3164.out │ │ │ ├── syslog-5424-streaming.json │ │ │ ├── syslog-5424.json │ │ │ ├── syslog-5424.out │ │ │ ├── timedatectl-rtc-local.json │ │ │ ├── timedatectl-rtc-local.out │ │ │ ├── timedatectl-timesync-status.json │ │ │ ├── timedatectl-timesync-status.out │ │ │ ├── toml-example.json │ │ │ ├── toml-example.toml │ │ │ ├── toml-example2.json │ │ │ ├── toml-example2.toml │ │ │ ├── traceroute-long-ipv6-streaming.json │ │ │ ├── traceroute-long-ipv6.json │ │ │ ├── traceroute-long-ipv6.out │ │ │ ├── traceroute-n-ipv4-streaming.json │ │ │ ├── traceroute-n-ipv4.json │ │ │ ├── traceroute-n-ipv4.out │ │ │ ├── traceroute-n-ipv6-streaming.json │ │ │ ├── traceroute-n-ipv6.json │ │ │ ├── traceroute-n-ipv6.out │ │ │ ├── traceroute-n-q1-ipv4-streaming.json │ │ │ ├── traceroute-n-q1-ipv4.json │ │ │ ├── traceroute-n-q1-ipv4.out │ │ │ ├── traceroute1-streaming.json │ │ │ ├── traceroute1.json │ │ │ ├── traceroute1.out │ │ │ ├── traceroute2-streaming.json │ │ │ ├── traceroute2.json │ │ │ ├── traceroute2.out │ │ │ ├── traceroute3-streaming.json │ │ │ ├── traceroute3.json │ │ │ ├── traceroute3.out │ │ │ ├── traceroute4-streaming.json │ │ │ ├── traceroute4.json │ │ │ ├── traceroute4.out │ │ │ ├── traceroute5-streaming.json │ │ │ ├── traceroute5.json │ │ │ ├── traceroute5.out │ │ │ ├── traceroute6-streaming.json │ │ │ ├── traceroute6.json │ │ │ ├── traceroute6.out │ │ │ ├── traceroute7-streaming.json │ │ │ ├── traceroute7.json │ │ │ ├── traceroute7.out │ │ │ ├── traceroute8-streaming.json │ │ │ ├── traceroute8.json │ │ │ ├── traceroute8.out │ │ │ ├── tune2fs-l.json │ │ │ ├── tune2fs-l.out │ │ │ ├── udevadm.json │ │ │ ├── udevadm.out │ │ │ ├── ufw-appinfo-msn.json │ │ │ ├── ufw-appinfo-msn.out │ │ │ ├── ufw-appinfo-multiline-description.json │ │ │ ├── ufw-appinfo-multiline-description.out │ │ │ ├── ufw-appinfo-test.json │ │ │ ├── ufw-appinfo-test.out │ │ │ ├── ufw-appinfo-test2.json │ │ │ ├── ufw-appinfo-test2.out │ │ │ ├── ufw-appinfo-test3.json │ │ │ ├── ufw-appinfo-test3.out │ │ │ ├── ufw-inactive.json │ │ │ ├── ufw-inactive.out │ │ │ ├── ufw-numbered.json │ │ │ ├── ufw-numbered.out │ │ │ ├── ufw-numbered2.json │ │ │ ├── ufw-numbered2.out │ │ │ ├── ufw.json │ │ │ ├── ufw.out │ │ │ ├── uname-a-different-proc.json │ │ │ ├── uname-a-different-proc.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── update-alternatives-get-selections.json │ │ │ ├── update-alternatives-get-selections.out │ │ │ ├── update-alternatives-query.json │ │ │ ├── update-alternatives-query.out │ │ │ ├── update-alternatives-query2.json │ │ │ ├── update-alternatives-query2.out │ │ │ ├── upower-i-c-locale.json │ │ │ ├── upower-i-c-locale.out │ │ │ ├── upower-i-non-utc.json │ │ │ ├── upower-i-non-utc.out │ │ │ ├── upower-i-utc.json │ │ │ ├── upower-i-utc.out │ │ │ ├── veracrypt_verbose_list_volumes.out │ │ │ ├── veracrypt_verbose_list_volumes_unknown_fields.out │ │ │ ├── vmstat-extra-wide-streaming.json │ │ │ ├── vmstat-extra-wide.json │ │ │ ├── vmstat-extra-wide.out │ │ │ ├── who-login-screen.json │ │ │ ├── who-login-screen.out │ │ │ ├── x509-ca-cert.der │ │ │ ├── x509-ca-cert.json │ │ │ ├── x509-cert-and-key.json │ │ │ ├── x509-cert-and-key.pem │ │ │ ├── x509-cert-bad-email.json │ │ │ ├── x509-cert-bad-email.pem │ │ │ ├── x509-cert-bad-email2.der │ │ │ ├── x509-cert-bad-email2.json │ │ │ ├── x509-cert-superfluous-bits.json │ │ │ ├── x509-cert-superfluous-bits.pem │ │ │ ├── x509-crl-der.json │ │ │ ├── x509-crl.der │ │ │ ├── x509-crl.json │ │ │ ├── x509-crl.pem │ │ │ ├── x509-csr-der.json │ │ │ ├── x509-csr-windows.json │ │ │ ├── x509-csr-windows.pem │ │ │ ├── x509-csr.der │ │ │ ├── x509-csr.json │ │ │ ├── x509-csr.pem │ │ │ ├── x509-letsencrypt.json │ │ │ ├── x509-letsencrypt.pem │ │ │ ├── x509-multi-cert.json │ │ │ ├── x509-multi-cert.pem │ │ │ ├── x509-negative-serial.json │ │ │ ├── x509-negative-serial.pem │ │ │ ├── x509-string-serialnumber.der │ │ │ ├── x509-string-serialnumber.json │ │ │ ├── xml-cd_catalog.json │ │ │ ├── xml-cd_catalog.xml │ │ │ ├── xml-foodmenu.json │ │ │ ├── xml-foodmenu.xml │ │ │ ├── xml-nmap-nocomment.json │ │ │ ├── xml-nmap-raw-nocomment.json │ │ │ ├── xml-nmap-raw.json │ │ │ ├── xml-nmap.json │ │ │ ├── xml-nmap.xml │ │ │ ├── xrandr.json │ │ │ ├── xrandr.out │ │ │ ├── xrandr_2.json │ │ │ ├── xrandr_2.out │ │ │ ├── xrandr_3.json │ │ │ ├── xrandr_3.out │ │ │ ├── xrandr_device.out │ │ │ ├── xrandr_extra_hv_lines.json │ │ │ ├── xrandr_extra_hv_lines.out │ │ │ ├── xrandr_issue_525.out │ │ │ ├── xrandr_properties.out │ │ │ ├── xrandr_properties_1.json │ │ │ ├── xrandr_properties_1.out │ │ │ ├── xrandr_simple.json │ │ │ ├── xrandr_simple.out │ │ │ ├── yaml-istio-sc.json │ │ │ ├── yaml-istio-sc.yaml │ │ │ ├── yaml-istio-sidecar.json │ │ │ ├── yaml-istio-sidecar.yaml │ │ │ ├── zpool-iostat-v.json │ │ │ ├── zpool-iostat-v.out │ │ │ ├── zpool-iostat.json │ │ │ ├── zpool-iostat.out │ │ │ ├── zpool-status-spares.json │ │ │ ├── zpool-status-spares.out │ │ │ ├── zpool-status-v.json │ │ │ ├── zpool-status-v.out │ │ │ ├── zpool-status-v2.json │ │ │ ├── zpool-status-v2.out │ │ │ ├── zpool-status-v3.json │ │ │ ├── zpool-status-v3.out │ │ │ ├── zpool-status-v4.json │ │ │ └── zpool-status-v4.out │ │ ├── linux-proc/ │ │ │ ├── buddyinfo │ │ │ ├── buddyinfo.json │ │ │ ├── consoles │ │ │ ├── consoles.json │ │ │ ├── consoles2 │ │ │ ├── consoles2.json │ │ │ ├── cpuinfo │ │ │ ├── cpuinfo.json │ │ │ ├── cpuinfo2 │ │ │ ├── cpuinfo2.json │ │ │ ├── crypto │ │ │ ├── crypto.json │ │ │ ├── devices │ │ │ ├── devices.json │ │ │ ├── diskstats │ │ │ ├── diskstats.json │ │ │ ├── driver_rtc │ │ │ ├── driver_rtc.json │ │ │ ├── filesystems │ │ │ ├── filesystems.json │ │ │ ├── interrupts │ │ │ ├── interrupts.json │ │ │ ├── iomem │ │ │ ├── iomem.json │ │ │ ├── ioports │ │ │ ├── ioports.json │ │ │ ├── loadavg │ │ │ ├── loadavg.json │ │ │ ├── locks │ │ │ ├── locks.json │ │ │ ├── meminfo │ │ │ ├── meminfo.json │ │ │ ├── modules │ │ │ ├── modules.json │ │ │ ├── mtrr │ │ │ ├── mtrr.json │ │ │ ├── net_arp │ │ │ ├── net_arp.json │ │ │ ├── net_dev │ │ │ ├── net_dev.json │ │ │ ├── net_dev_mcast │ │ │ ├── net_dev_mcast.json │ │ │ ├── net_if_inet6 │ │ │ ├── net_if_inet6.json │ │ │ ├── net_igmp │ │ │ ├── net_igmp.json │ │ │ ├── net_igmp6 │ │ │ ├── net_igmp6.json │ │ │ ├── net_igmp_more │ │ │ ├── net_igmp_more.json │ │ │ ├── net_ipv6_route │ │ │ ├── net_ipv6_route.json │ │ │ ├── net_netlink │ │ │ ├── net_netlink.json │ │ │ ├── net_netstat │ │ │ ├── net_netstat.json │ │ │ ├── net_packet │ │ │ ├── net_packet.json │ │ │ ├── net_protocols │ │ │ ├── net_protocols.json │ │ │ ├── net_route │ │ │ ├── net_route.json │ │ │ ├── net_tcp │ │ │ ├── net_tcp.json │ │ │ ├── net_tcp6 │ │ │ ├── net_tcp6.json │ │ │ ├── net_unix │ │ │ ├── net_unix.json │ │ │ ├── pagetypeinfo │ │ │ ├── pagetypeinfo.json │ │ │ ├── partitions │ │ │ ├── partitions.json │ │ │ ├── pid_fdinfo │ │ │ ├── pid_fdinfo.json │ │ │ ├── pid_fdinfo_dma │ │ │ ├── pid_fdinfo_dma.json │ │ │ ├── pid_fdinfo_epoll │ │ │ ├── pid_fdinfo_epoll.json │ │ │ ├── pid_fdinfo_fanotify │ │ │ ├── pid_fdinfo_fanotify.json │ │ │ ├── pid_fdinfo_inotify │ │ │ ├── pid_fdinfo_inotify.json │ │ │ ├── pid_fdinfo_timerfd │ │ │ ├── pid_fdinfo_timerfd.json │ │ │ ├── pid_io │ │ │ ├── pid_io.json │ │ │ ├── pid_maps │ │ │ ├── pid_maps.json │ │ │ ├── pid_mountinfo │ │ │ ├── pid_mountinfo.json │ │ │ ├── pid_numa_maps │ │ │ ├── pid_numa_maps.json │ │ │ ├── pid_smaps │ │ │ ├── pid_smaps.json │ │ │ ├── pid_stat │ │ │ ├── pid_stat.json │ │ │ ├── pid_stat_hack │ │ │ ├── pid_stat_hack.json │ │ │ ├── pid_stat_w_space_and_nl_in_comm │ │ │ ├── pid_stat_w_space_and_nl_in_comm.json │ │ │ ├── pid_statm │ │ │ ├── pid_statm.json │ │ │ ├── pid_status │ │ │ ├── pid_status.json │ │ │ ├── scsi_device_info │ │ │ ├── scsi_scsi │ │ │ ├── slabinfo │ │ │ ├── slabinfo.json │ │ │ ├── softirqs │ │ │ ├── softirqs.json │ │ │ ├── stat │ │ │ ├── stat.json │ │ │ ├── stat2 │ │ │ ├── stat2.json │ │ │ ├── swaps │ │ │ ├── swaps.json │ │ │ ├── uptime │ │ │ ├── uptime.json │ │ │ ├── version │ │ │ ├── version.json │ │ │ ├── version2 │ │ │ ├── version2.json │ │ │ ├── version3 │ │ │ ├── version3.json │ │ │ ├── vmallocinfo │ │ │ ├── vmallocinfo.json │ │ │ ├── vmstat │ │ │ ├── vmstat.json │ │ │ ├── zoneinfo │ │ │ ├── zoneinfo.json │ │ │ ├── zoneinfo2 │ │ │ └── zoneinfo2.json │ │ ├── nixos/ │ │ │ ├── route-ee.json │ │ │ ├── route-ee.out │ │ │ ├── w.json │ │ │ └── w.out │ │ ├── opensuse-leap-15.5/ │ │ │ ├── efibootmgr-v.json │ │ │ ├── efibootmgr-v.out │ │ │ ├── efibootmgr.json │ │ │ └── efibootmgr.out │ │ ├── osx-10.11.6/ │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── df-h.json │ │ │ ├── df-h.out │ │ │ ├── df.json │ │ │ ├── df.out │ │ │ ├── dig-aaaa.json │ │ │ ├── dig-aaaa.out │ │ │ ├── dig-x.json │ │ │ ├── dig-x.out │ │ │ ├── dig.json │ │ │ ├── dig.out │ │ │ ├── du.json │ │ │ ├── du.out │ │ │ ├── ifconfig.json │ │ │ ├── ifconfig.out │ │ │ ├── ifconfig2.json │ │ │ ├── ifconfig2.out │ │ │ ├── ls-al.json │ │ │ ├── ls-al.out │ │ │ ├── ls-alh.json │ │ │ ├── ls-alh.out │ │ │ ├── ls.json │ │ │ ├── ls.out │ │ │ ├── pip-list.json │ │ │ ├── pip-list.out │ │ │ ├── pip-show.json │ │ │ ├── pip-show.out │ │ │ ├── ps-axu.json │ │ │ ├── ps-axu.out │ │ │ ├── ps-ef.json │ │ │ ├── ps-ef.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── uptime.json │ │ │ ├── uptime.out │ │ │ ├── w.json │ │ │ └── w.out │ │ ├── osx-10.14.6/ │ │ │ ├── airport-I.json │ │ │ ├── airport-I.out │ │ │ ├── airport-s.json │ │ │ ├── airport-s.out │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── arp-a2.json │ │ │ ├── arp-a2.out │ │ │ ├── cksum.json │ │ │ ├── cksum.out │ │ │ ├── df-h.json │ │ │ ├── df-h.out │ │ │ ├── df-hh.json │ │ │ ├── df-hh.out │ │ │ ├── df.json │ │ │ ├── df.out │ │ │ ├── dig-aaaa.json │ │ │ ├── dig-aaaa.out │ │ │ ├── dig-axfr.json │ │ │ ├── dig-axfr.out │ │ │ ├── dig-noall-answer.json │ │ │ ├── dig-noall-answer.out │ │ │ ├── dig-x.json │ │ │ ├── dig-x.out │ │ │ ├── dig.json │ │ │ ├── dig.out │ │ │ ├── du.json │ │ │ ├── du.out │ │ │ ├── file.json │ │ │ ├── file.out │ │ │ ├── file2.json │ │ │ ├── file2.out │ │ │ ├── file3.json │ │ │ ├── file3.out │ │ │ ├── finger.json │ │ │ ├── finger.out │ │ │ ├── group.json │ │ │ ├── group.out │ │ │ ├── id.json │ │ │ ├── id.out │ │ │ ├── ifconfig.json │ │ │ ├── ifconfig.out │ │ │ ├── ifconfig2.json │ │ │ ├── ifconfig2.out │ │ │ ├── last.json │ │ │ ├── last.out │ │ │ ├── ls-R-newlines.json │ │ │ ├── ls-R-newlines.out │ │ │ ├── ls-R.json │ │ │ ├── ls-R.out │ │ │ ├── ls-al-streaming.json │ │ │ ├── ls-al.json │ │ │ ├── ls-al.out │ │ │ ├── ls-alR-streaming.json │ │ │ ├── ls-alR.json │ │ │ ├── ls-alR.out │ │ │ ├── ls-alh-streaming.json │ │ │ ├── ls-alh.json │ │ │ ├── ls-alh.out │ │ │ ├── ls-glob.json │ │ │ ├── ls-glob.out │ │ │ ├── ls-l-newlines.json │ │ │ ├── ls-l-newlines.out │ │ │ ├── ls-lR-empty-folder-streaming.json │ │ │ ├── ls-lR-empty-folder.json │ │ │ ├── ls-lR-empty-folder.out │ │ │ ├── ls-lR-newlines.json │ │ │ ├── ls-lR-newlines.out │ │ │ ├── ls-newlines.json │ │ │ ├── ls-newlines.out │ │ │ ├── ls.json │ │ │ ├── ls.out │ │ │ ├── md5.json │ │ │ ├── md5.out │ │ │ ├── mount.json │ │ │ ├── mount.out │ │ │ ├── mount2.json │ │ │ ├── mount2.out │ │ │ ├── netstat-Abn.json │ │ │ ├── netstat-Abn.out │ │ │ ├── netstat-An.json │ │ │ ├── netstat-An.out │ │ │ ├── netstat-i.json │ │ │ ├── netstat-i.out │ │ │ ├── netstat-r.json │ │ │ ├── netstat-r.out │ │ │ ├── netstat-rnl.json │ │ │ ├── netstat-rnl.out │ │ │ ├── netstat.json │ │ │ ├── netstat.out │ │ │ ├── passwd.json │ │ │ ├── passwd.out │ │ │ ├── ping-hostname-p-streaming.json │ │ │ ├── ping-hostname-p.json │ │ │ ├── ping-hostname-p.out │ │ │ ├── ping-hostname-s-streaming.json │ │ │ ├── ping-hostname-s.json │ │ │ ├── ping-hostname-s.out │ │ │ ├── ping-hostname-streaming.json │ │ │ ├── ping-hostname.json │ │ │ ├── ping-hostname.out │ │ │ ├── ping-ip-dup-streaming.json │ │ │ ├── ping-ip-dup.json │ │ │ ├── ping-ip-dup.out │ │ │ ├── ping-ip-p-streaming.json │ │ │ ├── ping-ip-p.json │ │ │ ├── ping-ip-p.out │ │ │ ├── ping-ip-s-streaming.json │ │ │ ├── ping-ip-s.json │ │ │ ├── ping-ip-s.out │ │ │ ├── ping-ip-streaming.json │ │ │ ├── ping-ip-unknown-errors.json │ │ │ ├── ping-ip-unknown-errors.out │ │ │ ├── ping-ip-unreachable-streaming.json │ │ │ ├── ping-ip-unreachable.json │ │ │ ├── ping-ip-unreachable.out │ │ │ ├── ping-ip.json │ │ │ ├── ping-ip.out │ │ │ ├── ping6-hostname-p-streaming.json │ │ │ ├── ping6-hostname-p.json │ │ │ ├── ping6-hostname-p.out │ │ │ ├── ping6-hostname-s-streaming.json │ │ │ ├── ping6-hostname-s.json │ │ │ ├── ping6-hostname-s.out │ │ │ ├── ping6-hostname-streaming.json │ │ │ ├── ping6-hostname.json │ │ │ ├── ping6-hostname.out │ │ │ ├── ping6-ip-dup-streaming.json │ │ │ ├── ping6-ip-dup.json │ │ │ ├── ping6-ip-dup.out │ │ │ ├── ping6-ip-p-streaming.json │ │ │ ├── ping6-ip-p.json │ │ │ ├── ping6-ip-p.out │ │ │ ├── ping6-ip-s-streaming.json │ │ │ ├── ping6-ip-s.json │ │ │ ├── ping6-ip-s.out │ │ │ ├── ping6-ip-streaming.json │ │ │ ├── ping6-ip-unparsable.json │ │ │ ├── ping6-ip-unparsable.out │ │ │ ├── ping6-ip.json │ │ │ ├── ping6-ip.out │ │ │ ├── pip-list.json │ │ │ ├── pip-list.out │ │ │ ├── pip-show.json │ │ │ ├── pip-show.out │ │ │ ├── ps-axu.json │ │ │ ├── ps-axu.out │ │ │ ├── ps-ef.json │ │ │ ├── ps-ef.out │ │ │ ├── rsync-i-vvv-logfile-nochange-streaming.json │ │ │ ├── rsync-i-vvv-logfile-nochange.json │ │ │ ├── rsync-i-vvv-logfile-nochange.out │ │ │ ├── rsync-i-vvv-nochange-streaming.json │ │ │ ├── rsync-i-vvv-nochange.json │ │ │ ├── rsync-i-vvv-nochange.out │ │ │ ├── rsync-i-vvv-streaming.json │ │ │ ├── rsync-i-vvv.json │ │ │ ├── rsync-i-vvv.out │ │ │ ├── shasum.json │ │ │ ├── shasum.out │ │ │ ├── stat-filename-with-spaces-streaming.json │ │ │ ├── stat-filename-with-spaces.json │ │ │ ├── stat-filename-with-spaces.out │ │ │ ├── stat-streaming.json │ │ │ ├── stat.json │ │ │ ├── stat.out │ │ │ ├── sum.json │ │ │ ├── sum.out │ │ │ ├── sysctl-a.json │ │ │ ├── sysctl-a.out │ │ │ ├── time-l.json │ │ │ ├── time-l.out │ │ │ ├── time-lp.json │ │ │ ├── time-lp.out │ │ │ ├── time-p.json │ │ │ ├── time-p.out │ │ │ ├── time.json │ │ │ ├── time.out │ │ │ ├── traceroute-asn-streaming.json │ │ │ ├── traceroute-asn.json │ │ │ ├── traceroute-asn.out │ │ │ ├── traceroute-mult-addresses-streaming.json │ │ │ ├── traceroute-mult-addresses.json │ │ │ ├── traceroute-mult-addresses.out │ │ │ ├── traceroute-no-header-streaming.json │ │ │ ├── traceroute-no-header.json │ │ │ ├── traceroute-no-header.out │ │ │ ├── traceroute-q-streaming.json │ │ │ ├── traceroute-q.json │ │ │ ├── traceroute-q.out │ │ │ ├── traceroute-streaming.json │ │ │ ├── traceroute.json │ │ │ ├── traceroute.out │ │ │ ├── traceroute6-mult-addresses-streaming.json │ │ │ ├── traceroute6-mult-addresses.json │ │ │ ├── traceroute6-mult-addresses.out │ │ │ ├── traceroute6-streaming.json │ │ │ ├── traceroute6.json │ │ │ ├── traceroute6.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── uname.out │ │ │ ├── uptime.json │ │ │ ├── uptime.out │ │ │ ├── w.json │ │ │ ├── w.out │ │ │ ├── wc-stdin.json │ │ │ ├── wc-stdin.out │ │ │ ├── wc.json │ │ │ ├── wc.out │ │ │ ├── who-a.json │ │ │ ├── who-a.out │ │ │ ├── who.json │ │ │ ├── who.out │ │ │ ├── zipinfo-multi.json │ │ │ └── zipinfo-multi.out │ │ ├── pi/ │ │ │ ├── ping-ip-O-D-streaming.json │ │ │ ├── ping-ip-O-D.json │ │ │ ├── ping-ip-O-D.out │ │ │ ├── ping-ip-O-streaming.json │ │ │ ├── ping-ip-O.json │ │ │ └── ping-ip-O.out │ │ ├── rhel-8/ │ │ │ ├── MANIFEST.MF.MULTI.json │ │ │ ├── MANIFEST.MF.MULTI.out │ │ │ ├── MANIFEST.MF.json │ │ │ ├── MANIFEST.MF.out │ │ │ ├── zipinfo-space-in-name.json │ │ │ ├── zipinfo-space-in-name.out │ │ │ ├── zipinfo.json │ │ │ └── zipinfo.out │ │ ├── ubuntu-16.04/ │ │ │ ├── ifconfig.json │ │ │ └── ifconfig.out │ │ ├── ubuntu-18.04/ │ │ │ ├── acpi-V.json │ │ │ ├── acpi-V.out │ │ │ ├── arp-a.json │ │ │ ├── arp-a.out │ │ │ ├── arp-v.json │ │ │ ├── arp-v.out │ │ │ ├── arp.json │ │ │ ├── arp.out │ │ │ ├── blkid-ip-multi.json │ │ │ ├── blkid-ip-multi.out │ │ │ ├── blkid-ip-udev-multi.json │ │ │ ├── blkid-ip-udev-multi.out │ │ │ ├── blkid-ip-udev.json │ │ │ ├── blkid-ip-udev.out │ │ │ ├── blkid-sda2.json │ │ │ ├── blkid-sda2.out │ │ │ ├── blkid.json │ │ │ ├── blkid.out │ │ │ ├── crontab-u.json │ │ │ ├── crontab-u.out │ │ │ ├── df-h.json │ │ │ ├── df-h.out │ │ │ ├── df.json │ │ │ ├── df.out │ │ │ ├── dig-aaaa.json │ │ │ ├── dig-aaaa.out │ │ │ ├── dig-axfr.json │ │ │ ├── dig-axfr.out │ │ │ ├── dig-x.json │ │ │ ├── dig-x.out │ │ │ ├── dig.json │ │ │ ├── dig.out │ │ │ ├── dmidecode.json │ │ │ ├── dmidecode.out │ │ │ ├── dpkg-l-codes.json │ │ │ ├── dpkg-l-codes.out │ │ │ ├── dpkg-l-columns500.json │ │ │ ├── dpkg-l-columns500.out │ │ │ ├── dpkg-l.json │ │ │ ├── dpkg-l.out │ │ │ ├── du.json │ │ │ ├── du.out │ │ │ ├── env.json │ │ │ ├── env.out │ │ │ ├── file.json │ │ │ ├── file.out │ │ │ ├── find.json │ │ │ ├── find.out │ │ │ ├── finger.json │ │ │ ├── finger.out │ │ │ ├── free-h.json │ │ │ ├── free-h.out │ │ │ ├── free-w.json │ │ │ ├── free-w.out │ │ │ ├── free.json │ │ │ ├── free.out │ │ │ ├── fstab.json │ │ │ ├── fstab.out │ │ │ ├── group.json │ │ │ ├── group.out │ │ │ ├── gshadow.json │ │ │ ├── gshadow.out │ │ │ ├── history.json │ │ │ ├── history.out │ │ │ ├── hosts.json │ │ │ ├── hosts.out │ │ │ ├── ifconfig.json │ │ │ ├── ifconfig.out │ │ │ ├── iostat-1-streaming.json │ │ │ ├── iostat-1.json │ │ │ ├── iostat-1.out │ │ │ ├── iostat-m-streaming.json │ │ │ ├── iostat-m.json │ │ │ ├── iostat-m.out │ │ │ ├── iostat-mx-streaming.json │ │ │ ├── iostat-mx.json │ │ │ ├── iostat-mx.out │ │ │ ├── iostat-streaming.json │ │ │ ├── iostat-x-streaming.json │ │ │ ├── iostat-x.json │ │ │ ├── iostat-x.out │ │ │ ├── iostat.json │ │ │ ├── iostat.out │ │ │ ├── ip_route.json │ │ │ ├── ip_route.out │ │ │ ├── iptables-filter-line-numbers.json │ │ │ ├── iptables-filter-line-numbers.out │ │ │ ├── iptables-filter-nv.json │ │ │ ├── iptables-filter-nv.out │ │ │ ├── iptables-filter.json │ │ │ ├── iptables-filter.out │ │ │ ├── iptables-mangle.json │ │ │ ├── iptables-mangle.out │ │ │ ├── iptables-nat.json │ │ │ ├── iptables-nat.out │ │ │ ├── iptables-raw.json │ │ │ ├── iptables-raw.out │ │ │ ├── jobs.json │ │ │ ├── jobs.out │ │ │ ├── last-w.json │ │ │ ├── last-w.out │ │ │ ├── last.json │ │ │ ├── last.out │ │ │ ├── lastb.json │ │ │ ├── lastb.out │ │ │ ├── ls-R-newlines.json │ │ │ ├── ls-R-newlines.out │ │ │ ├── ls-R.json │ │ │ ├── ls-R.out │ │ │ ├── ls-al-streaming.json │ │ │ ├── ls-al.json │ │ │ ├── ls-al.out │ │ │ ├── ls-alR-streaming.json │ │ │ ├── ls-alR.json │ │ │ ├── ls-alR.out │ │ │ ├── ls-alh-streaming.json │ │ │ ├── ls-alh.json │ │ │ ├── ls-alh.out │ │ │ ├── ls-glob.json │ │ │ ├── ls-glob.out │ │ │ ├── ls-l-iso-streaming.json │ │ │ ├── ls-l-iso.json │ │ │ ├── ls-l-iso.out │ │ │ ├── ls-l-newlines.json │ │ │ ├── ls-l-newlines.out │ │ │ ├── ls-lR-newlines.json │ │ │ ├── ls-lR-newlines.out │ │ │ ├── ls-newlines.json │ │ │ ├── ls-newlines.out │ │ │ ├── ls.json │ │ │ ├── ls.out │ │ │ ├── lsblk-allcols.json │ │ │ ├── lsblk-allcols.out │ │ │ ├── lsblk.json │ │ │ ├── lsblk.out │ │ │ ├── lsmod.json │ │ │ ├── lsmod.out │ │ │ ├── lsof-sudo.json │ │ │ ├── lsof-sudo.out │ │ │ ├── lsof.json │ │ │ ├── lsof.out │ │ │ ├── mount.json │ │ │ ├── mount.out │ │ │ ├── mpstat-A-streaming.json │ │ │ ├── mpstat-A.json │ │ │ ├── mpstat-A.out │ │ │ ├── netstat-i.json │ │ │ ├── netstat-i.out │ │ │ ├── netstat-l.json │ │ │ ├── netstat-l.out │ │ │ ├── netstat-p.json │ │ │ ├── netstat-p.out │ │ │ ├── netstat-r.json │ │ │ ├── netstat-r.out │ │ │ ├── netstat-rne.json │ │ │ ├── netstat-rne.out │ │ │ ├── netstat-rnee.json │ │ │ ├── netstat-rnee.out │ │ │ ├── netstat-sudo-aeep.json │ │ │ ├── netstat-sudo-aeep.out │ │ │ ├── netstat-sudo-lnp-space.json │ │ │ ├── netstat-sudo-lnp-space.out │ │ │ ├── netstat-sudo-lnp.json │ │ │ ├── netstat-sudo-lnp.out │ │ │ ├── netstat.json │ │ │ ├── netstat.out │ │ │ ├── ntpq-p.json │ │ │ ├── ntpq-p.out │ │ │ ├── ntpq-p2.json │ │ │ ├── ntpq-p2.out │ │ │ ├── ntpq-pn.json │ │ │ ├── ntpq-pn.out │ │ │ ├── ntqp-p.out │ │ │ ├── passwd.json │ │ │ ├── passwd.out │ │ │ ├── ping-hostname-O-D-p-s-streaming.json │ │ │ ├── ping-hostname-O-D-p-s.json │ │ │ ├── ping-hostname-O-D-p-s.out │ │ │ ├── ping-hostname-O-p-streaming.json │ │ │ ├── ping-hostname-O-p.json │ │ │ ├── ping-hostname-O-p.out │ │ │ ├── ping-hostname-O-streaming.json │ │ │ ├── ping-hostname-O.json │ │ │ ├── ping-hostname-O.out │ │ │ ├── ping-ip-O-D-streaming.json │ │ │ ├── ping-ip-O-D.json │ │ │ ├── ping-ip-O-D.out │ │ │ ├── ping-ip-O-streaming.json │ │ │ ├── ping-ip-O.json │ │ │ ├── ping-ip-O.out │ │ │ ├── ping6-hostname-O-D-p-s-streaming.json │ │ │ ├── ping6-hostname-O-D-p-s.json │ │ │ ├── ping6-hostname-O-D-p-s.out │ │ │ ├── ping6-hostname-O-D-p.json │ │ │ ├── ping6-hostname-O-D-p.out │ │ │ ├── ping6-hostname-O-p-streaming.json │ │ │ ├── ping6-hostname-O-p.json │ │ │ ├── ping6-hostname-O-p.out │ │ │ ├── ping6-ip-O-D-p-streaming.json │ │ │ ├── ping6-ip-O-D-p.json │ │ │ ├── ping6-ip-O-D-p.out │ │ │ ├── ping6-ip-O-p-streaming.json │ │ │ ├── ping6-ip-O-p.json │ │ │ ├── ping6-ip-O-p.out │ │ │ ├── pip-list-legacy.json │ │ │ ├── pip-list-legacy.out │ │ │ ├── pip-list.json │ │ │ ├── pip-list.out │ │ │ ├── pip-show.json │ │ │ ├── pip-show.out │ │ │ ├── ps-axu.json │ │ │ ├── ps-axu.out │ │ │ ├── ps-ef.json │ │ │ ├── ps-ef.out │ │ │ ├── route-vn.json │ │ │ ├── route-vn.out │ │ │ ├── route.json │ │ │ ├── route.out │ │ │ ├── shadow.json │ │ │ ├── shadow.out │ │ │ ├── ss-sudo-a.json │ │ │ ├── ss-sudo-a.out │ │ │ ├── ss-sudo-tulpen.json │ │ │ ├── ss-sudo-tulpen.out │ │ │ ├── stat-streaming.json │ │ │ ├── stat.json │ │ │ ├── stat.out │ │ │ ├── sysctl-a.json │ │ │ ├── sysctl-a.out │ │ │ ├── systemctl-lj.json │ │ │ ├── systemctl-lj.out │ │ │ ├── systemctl-ls.json │ │ │ ├── systemctl-ls.out │ │ │ ├── systemctl-luf.json │ │ │ ├── systemctl-luf.out │ │ │ ├── systemctl.json │ │ │ ├── systemctl.out │ │ │ ├── time-p.json │ │ │ ├── time-p.out │ │ │ ├── time-verbose.json │ │ │ ├── time-verbose.out │ │ │ ├── time.json │ │ │ ├── time.out │ │ │ ├── time2.json │ │ │ ├── time2.out │ │ │ ├── timedatectl.json │ │ │ ├── timedatectl.out │ │ │ ├── ufw-appinfo-all.json │ │ │ ├── ufw-appinfo-all.out │ │ │ ├── ufw-numbered.json │ │ │ ├── ufw-numbered.out │ │ │ ├── ufw-verbose.json │ │ │ ├── ufw-verbose.out │ │ │ ├── uname-a.json │ │ │ ├── uname-a.out │ │ │ ├── upower-d-clocale.json │ │ │ ├── upower-d-clocale.out │ │ │ ├── upower-d.json │ │ │ ├── upower-d.out │ │ │ ├── upower-i.json │ │ │ ├── upower-i.out │ │ │ ├── uptime.json │ │ │ ├── uptime.out │ │ │ ├── vmstat-1-long-streaming.json │ │ │ ├── vmstat-1-long.json │ │ │ ├── vmstat-1-long.out │ │ │ ├── w.json │ │ │ ├── w.out │ │ │ ├── who-a.json │ │ │ ├── who-a.out │ │ │ ├── who.json │ │ │ └── who.out │ │ ├── ubuntu-20.04/ │ │ │ ├── date.json │ │ │ ├── date.out │ │ │ ├── date2.json │ │ │ ├── date2.out │ │ │ ├── hciconfig-a.json │ │ │ ├── hciconfig-a.out │ │ │ ├── hciconfig.json │ │ │ ├── hciconfig.out │ │ │ ├── last-F.json │ │ │ ├── last-F.out │ │ │ ├── lsattr-R.json │ │ │ ├── lsattr-R.out │ │ │ ├── lsattr-error.json │ │ │ ├── lsattr-error.out │ │ │ ├── lsattr.json │ │ │ ├── lsattr.out │ │ │ ├── stat-missing-data.json │ │ │ └── stat-missing-data.out │ │ ├── ubuntu-20.10/ │ │ │ ├── iftop-b-n1-noport.json │ │ │ ├── iftop-b-n1-noport.out │ │ │ ├── iftop-b-n1.json │ │ │ ├── iftop-b-n1.out │ │ │ ├── iftop-b-n3.json │ │ │ ├── iftop-b-n3.out │ │ │ ├── iostat-m-streaming.json │ │ │ ├── iostat-m.json │ │ │ ├── iostat-m.out │ │ │ ├── iostat-mx-streaming.json │ │ │ ├── iostat-mx.json │ │ │ ├── iostat-mx.out │ │ │ ├── iostat-streaming.json │ │ │ ├── iostat-x-streaming.json │ │ │ ├── iostat-x.json │ │ │ ├── iostat-x.out │ │ │ ├── iostat.json │ │ │ ├── iostat.out │ │ │ ├── lspci-mmv.json │ │ │ ├── lspci-mmv.out │ │ │ ├── lspci-nmmv.json │ │ │ ├── lspci-nmmv.out │ │ │ ├── lspci-nnmmv.json │ │ │ ├── lspci-nnmmv.out │ │ │ ├── top-b-allfields-streaming.json │ │ │ ├── top-b-allfields.json │ │ │ ├── top-b-allfields.out │ │ │ ├── top-b-n1-streaming.json │ │ │ ├── top-b-n1.json │ │ │ └── top-b-n1.out │ │ ├── ubuntu-22.04/ │ │ │ ├── amixer-control-capture-processed.json │ │ │ ├── amixer-control-capture.json │ │ │ ├── amixer-control-capture.out │ │ │ ├── amixer-control-headphone-processed.json │ │ │ ├── amixer-control-headphone.json │ │ │ ├── amixer-control-headphone.out │ │ │ ├── amixer-control-master-processed.json │ │ │ ├── amixer-control-master.json │ │ │ ├── amixer-control-master.out │ │ │ ├── amixer-control-speakers-processed.json │ │ │ ├── amixer-control-speakers.json │ │ │ ├── amixer-control-speakers.out │ │ │ ├── ping-dest-unreachable-streaming.json │ │ │ ├── ping-dest-unreachable.json │ │ │ ├── ping-dest-unreachable.out │ │ │ ├── ping-hostname-source-ip-streaming.json │ │ │ ├── ping-hostname-source-ip.json │ │ │ ├── ping-hostname-source-ip.out │ │ │ ├── ping-ip-source-ip-streaming.json │ │ │ ├── ping-ip-source-ip.json │ │ │ ├── ping-ip-source-ip.out │ │ │ ├── ping6-hostname-source-ip-streaming.json │ │ │ ├── ping6-hostname-source-ip.json │ │ │ ├── ping6-hostname-source-ip.out │ │ │ ├── ping6-ip-source-ip-streaming.json │ │ │ ├── ping6-ip-source-ip.json │ │ │ ├── ping6-ip-source-ip.out │ │ │ ├── wg_show--one_device.json │ │ │ ├── wg_show--one_device.out │ │ │ ├── wg_show--two_devices.json │ │ │ └── wg_show--two_devices.out │ │ ├── windows/ │ │ │ ├── windows-10/ │ │ │ │ ├── ipconfig.json │ │ │ │ ├── ipconfig.out │ │ │ │ ├── net_localgroup.administrators.json │ │ │ │ ├── net_localgroup.administrators.out │ │ │ │ ├── net_localgroup.json │ │ │ │ ├── net_localgroup.out │ │ │ │ ├── net_user.administrator.json │ │ │ │ ├── net_user.administrator.out │ │ │ │ ├── net_user.json │ │ │ │ ├── net_user.out │ │ │ │ ├── netstat-an.json │ │ │ │ ├── netstat-an.out │ │ │ │ ├── netstat-aon.json │ │ │ │ ├── netstat-aon.out │ │ │ │ ├── netstat-aonb.json │ │ │ │ ├── netstat-aonb.out │ │ │ │ ├── netstat.json │ │ │ │ ├── netstat.out │ │ │ │ ├── route.json │ │ │ │ ├── route.out │ │ │ │ ├── route_print.json │ │ │ │ ├── route_print.out │ │ │ │ ├── systeminfo-hyperv-utc.json │ │ │ │ ├── systeminfo-hyperv-utc.out │ │ │ │ ├── systeminfo-hyperv.json │ │ │ │ ├── systeminfo-hyperv.out │ │ │ │ ├── systeminfo.json │ │ │ │ ├── systeminfo.out │ │ │ │ ├── wg_show.json │ │ │ │ └── wg_show.out │ │ │ ├── windows-11/ │ │ │ │ ├── ipconfig.json │ │ │ │ ├── ipconfig.out │ │ │ │ ├── net_localgroup.administrators.json │ │ │ │ ├── net_localgroup.administrators.out │ │ │ │ ├── net_localgroup.json │ │ │ │ ├── net_localgroup.out │ │ │ │ ├── net_user.administrator.json │ │ │ │ ├── net_user.administrator.out │ │ │ │ ├── net_user.json │ │ │ │ ├── net_user.out │ │ │ │ ├── route_print.json │ │ │ │ └── route_print.out │ │ │ ├── windows-2008/ │ │ │ │ ├── ipconfig.json │ │ │ │ ├── ipconfig.out │ │ │ │ ├── net_localgroup.administrators.json │ │ │ │ ├── net_localgroup.administrators.out │ │ │ │ ├── net_localgroup.json │ │ │ │ ├── net_localgroup.out │ │ │ │ ├── net_user.administrator.json │ │ │ │ ├── net_user.administrator.out │ │ │ │ ├── net_user.json │ │ │ │ ├── net_user.out │ │ │ │ ├── route_print.json │ │ │ │ └── route_print.out │ │ │ ├── windows-2012r2/ │ │ │ │ ├── systeminfo.json │ │ │ │ └── systeminfo.out │ │ │ ├── windows-2016/ │ │ │ │ ├── ipconfig.json │ │ │ │ ├── ipconfig.out │ │ │ │ ├── net_localgroup.administrators.json │ │ │ │ ├── net_localgroup.administrators.out │ │ │ │ ├── net_localgroup.json │ │ │ │ ├── net_localgroup.out │ │ │ │ ├── net_user.administrator.json │ │ │ │ ├── net_user.administrators.json │ │ │ │ ├── net_user.administrators.out │ │ │ │ ├── net_user.json │ │ │ │ ├── net_user.out │ │ │ │ ├── route_print.json │ │ │ │ └── route_print.out │ │ │ ├── windows-7/ │ │ │ │ ├── ipconfig.json │ │ │ │ ├── ipconfig.out │ │ │ │ ├── net_localgroup.administrators.json │ │ │ │ ├── net_localgroup.administrators.out │ │ │ │ ├── net_localgroup.json │ │ │ │ ├── net_localgroup.out │ │ │ │ ├── net_user.administrator.json │ │ │ │ ├── net_user.administrator.out │ │ │ │ ├── net_user.json │ │ │ │ ├── net_user.out │ │ │ │ ├── route_print.json │ │ │ │ ├── route_print.out │ │ │ │ ├── systeminfo.json │ │ │ │ └── systeminfo.out │ │ │ └── windows-xp/ │ │ │ ├── ipconfig.json │ │ │ ├── ipconfig.out │ │ │ ├── net_localgroup.administrators.json │ │ │ ├── net_localgroup.administrators.out │ │ │ ├── net_localgroup.json │ │ │ ├── net_localgroup.out │ │ │ ├── net_user.administrator.json │ │ │ ├── net_user.administrator.out │ │ │ ├── net_user.json │ │ │ ├── net_user.out │ │ │ ├── route_print.json │ │ │ └── route_print.out │ │ └── windows-10/ │ │ ├── dir-C.json │ │ ├── dir-C.out │ │ ├── dir-ODTC.json │ │ ├── dir-ODTC.out │ │ ├── dir-S.json │ │ ├── dir-S.out │ │ ├── dir-dirs.json │ │ ├── dir-dirs.out │ │ ├── dir-files.json │ │ ├── dir-files.out │ │ ├── dir-mix.json │ │ ├── dir-mix.out │ │ ├── dir.json │ │ └── dir.out │ ├── templates/ │ │ ├── _test_foo.py │ │ ├── _test_foo_s.py │ │ └── _test_foo_simple.py │ ├── test_acpi.py │ ├── test_airport.py │ ├── test_airport_s.py │ ├── test_amixer.py │ ├── test_apt_cache_show.py │ ├── test_apt_get_sqq.py │ ├── test_arp.py │ ├── test_asciitable.py │ ├── test_asciitable_m.py │ ├── test_blkid.py │ ├── test_bluetoothctl.py │ ├── test_cbt.py │ ├── test_cef.py │ ├── test_cef_s.py │ ├── test_certbot.py │ ├── test_chage.py │ ├── test_cksum.py │ ├── test_clf.py │ ├── test_clf_s.py │ ├── test_crontab.py │ ├── test_crontab_u.py │ ├── test_csv.py │ ├── test_csv_s.py │ ├── test_curl_head.py │ ├── test_date.py │ ├── test_datetime_iso.py │ ├── test_debconf_show.py │ ├── test_df.py │ ├── test_dig.py │ ├── test_dir.py │ ├── test_dmidecode.py │ ├── test_dpkg_l.py │ ├── test_du.py │ ├── test_efibootmgr.py │ ├── test_email_address.py │ ├── test_env.py │ ├── test_ethtool.py │ ├── test_file.py │ ├── test_find.py │ ├── test_findmnt.py │ ├── test_finger.py │ ├── test_free.py │ ├── test_fstab.py │ ├── test_git_log.py │ ├── test_git_log_s.py │ ├── test_git_ls_remote.py │ ├── test_gpg.py │ ├── test_group.py │ ├── test_gshadow.py │ ├── test_hash.py │ ├── test_hashsum.py │ ├── test_hciconfig.py │ ├── test_history.py │ ├── test_host.py │ ├── test_hosts.py │ ├── test_http_headers.py │ ├── test_id.py │ ├── test_ifconfig.py │ ├── test_iftop.py │ ├── test_ini.py │ ├── test_ini_dup.py │ ├── test_iostat.py │ ├── test_iostat_s.py │ ├── test_ip_address.py │ ├── test_ip_route.py │ ├── test_ipconfig.py │ ├── test_iptables.py │ ├── test_iw_scan.py │ ├── test_iwconfig.py │ ├── test_jar_manifest.py │ ├── test_jc.py │ ├── test_jc_cli.py │ ├── test_jc_lib.py │ ├── test_jc_streaming.py │ ├── test_jc_utils.py │ ├── test_jobs.py │ ├── test_jwt.py │ ├── test_kv.py │ ├── test_kv_dup.py │ ├── test_last.py │ ├── test_ls.py │ ├── test_ls_s.py │ ├── test_lsattr.py │ ├── test_lsb_release.py │ ├── test_lsblk.py │ ├── test_lsmod.py │ ├── test_lsof.py │ ├── test_lspci.py │ ├── test_lsusb.py │ ├── test_m3u.py │ ├── test_mdadm.py │ ├── test_mount.py │ ├── test_mpstat.py │ ├── test_mpstat_s.py │ ├── test_needrestart.py │ ├── test_net_localgroup.py │ ├── test_net_user.py │ ├── test_netstat.py │ ├── test_nmcli.py │ ├── test_nsd_control.py │ ├── test_ntpq.py │ ├── test_openvpn.py │ ├── test_os_prober.py │ ├── test_os_release.py │ ├── test_pacman.py │ ├── test_passwd.py │ ├── test_path.py │ ├── test_path_list.py │ ├── test_pci_ids.py │ ├── test_pgpass.py │ ├── test_pidstat.py │ ├── test_pidstat_s.py │ ├── test_ping.py │ ├── test_ping_s.py │ ├── test_pip_list.py │ ├── test_pip_show.py │ ├── test_pkg_index_apk.py │ ├── test_pkg_index_deb.py │ ├── test_plist.py │ ├── test_postconf.py │ ├── test_proc.py │ ├── test_proc_buddyinfo.py │ ├── test_proc_cmdline.py │ ├── test_proc_consoles.py │ ├── test_proc_cpuinfo.py │ ├── test_proc_crypto.py │ ├── test_proc_devices.py │ ├── test_proc_diskstats.py │ ├── test_proc_driver_rtc.py │ ├── test_proc_filesystems.py │ ├── test_proc_interrupts.py │ ├── test_proc_iomem.py │ ├── test_proc_ioports.py │ ├── test_proc_loadavg.py │ ├── test_proc_locks.py │ ├── test_proc_meminfo.py │ ├── test_proc_modules.py │ ├── test_proc_mtrr.py │ ├── test_proc_net_arp.py │ ├── test_proc_net_dev.py │ ├── test_proc_net_dev_mcast.py │ ├── test_proc_net_if_inet6.py │ ├── test_proc_net_igmp.py │ ├── test_proc_net_igmp6.py │ ├── test_proc_net_ipv6_route.py │ ├── test_proc_net_netlink.py │ ├── test_proc_net_netstat.py │ ├── test_proc_net_packet.py │ ├── test_proc_net_protocols.py │ ├── test_proc_net_route.py │ ├── test_proc_net_tcp.py │ ├── test_proc_net_unix.py │ ├── test_proc_pagetypeinfo.py │ ├── test_proc_partitions.py │ ├── test_proc_pid_fdinfo.py │ ├── test_proc_pid_io.py │ ├── test_proc_pid_maps.py │ ├── test_proc_pid_mountinfo.py │ ├── test_proc_pid_numa_maps.py │ ├── test_proc_pid_smaps.py │ ├── test_proc_pid_stat.py │ ├── test_proc_pid_statm.py │ ├── test_proc_pid_status.py │ ├── test_proc_slabinfo.py │ ├── test_proc_softirqs.py │ ├── test_proc_stat.py │ ├── test_proc_swaps.py │ ├── test_proc_uptime.py │ ├── test_proc_version.py │ ├── test_proc_vmallocinfo.py │ ├── test_proc_vmstat.py │ ├── test_proc_zoneinfo.py │ ├── test_ps.py │ ├── test_resolve_conf.py │ ├── test_route.py │ ├── test_route_print.py │ ├── test_rpm_qai.py │ ├── test_rsync.py │ ├── test_rsync_s.py │ ├── test_semver.py │ ├── test_sfdisk.py │ ├── test_shadow.py │ ├── test_srt.py │ ├── test_ss.py │ ├── test_ssh_conf.py │ ├── test_sshd_conf.py │ ├── test_stat.py │ ├── test_stat_s.py │ ├── test_swapon.py │ ├── test_sysctl.py │ ├── test_syslog.py │ ├── test_syslog_bsd.py │ ├── test_syslog_bsd_s.py │ ├── test_syslog_s.py │ ├── test_systemctl.py │ ├── test_systemctl_lj.py │ ├── test_systemctl_ls.py │ ├── test_systemctl_luf.py │ ├── test_systeminfo.py │ ├── test_time.py │ ├── test_timedatectl.py │ ├── test_timestamp.py │ ├── test_toml.py │ ├── test_top.py │ ├── test_top_s.py │ ├── test_tracepath.py │ ├── test_traceroute.py │ ├── test_traceroute_s.py │ ├── test_tune2fs.py │ ├── test_udevadm.py │ ├── test_ufw.py │ ├── test_ufw_appinfo.py │ ├── test_uname.py │ ├── test_update_alt_gs.py │ ├── test_update_alt_q.py │ ├── test_upower.py │ ├── test_uptime.py │ ├── test_url.py │ ├── test_ver.py │ ├── test_veracrypt.py │ ├── test_vmstat.py │ ├── test_vmstat_s.py │ ├── test_w.py │ ├── test_wc.py │ ├── test_wg_show.py │ ├── test_who.py │ ├── test_x509_cert.py │ ├── test_x509_crl.py │ ├── test_x509_csr.py │ ├── test_xml.py │ ├── test_xrandr.py │ ├── test_yaml.py │ ├── test_zipinfo.py │ ├── test_zpool_iostat.py │ ├── test_zpool_status.py │ └── utils_for_test.py └── updatedocs.sh
Showing preview only (310K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4033 symbols across 522 files)
FILE: jc/appdirs.py
function user_data_dir (line 66) | def user_data_dir(appname=None, appauthor=None, version=None, roaming=Fa...
function site_data_dir (line 121) | def site_data_dir(appname=None, appauthor=None, version=None, multipath=...
function user_config_dir (line 187) | def user_config_dir(appname=None, appauthor=None, version=None, roaming=...
function site_config_dir (line 231) | def site_config_dir(appname=None, appauthor=None, version=None, multipat...
function user_cache_dir (line 286) | def user_cache_dir(appname=None, appauthor=None, version=None, opinion=T...
function user_state_dir (line 343) | def user_state_dir(appname=None, appauthor=None, version=None, roaming=F...
function user_log_dir (line 385) | def user_log_dir(appname=None, appauthor=None, version=None, opinion=True):
class AppDirs (line 436) | class AppDirs(object):
method __init__ (line 438) | def __init__(self, appname=None, appauthor=None, version=None,
method user_data_dir (line 447) | def user_data_dir(self):
method site_data_dir (line 452) | def site_data_dir(self):
method user_config_dir (line 457) | def user_config_dir(self):
method site_config_dir (line 462) | def site_config_dir(self):
method user_cache_dir (line 467) | def user_cache_dir(self):
method user_state_dir (line 472) | def user_state_dir(self):
method user_log_dir (line 477) | def user_log_dir(self):
function _get_win_folder_from_registry (line 484) | def _get_win_folder_from_registry(csidl_name):
function _get_win_folder_with_ctypes (line 505) | def _get_win_folder_with_ctypes(csidl_name):
function _get_win_folder_with_jna (line 531) | def _get_win_folder_with_jna(csidl_name):
FILE: jc/cli.py
class info (line 49) | class info():
class JcCli (line 68) | class JcCli():
method __init__ (line 81) | def __init__(self) -> None:
method set_custom_colors (line 132) | def set_custom_colors(self) -> None:
method set_mono (line 179) | def set_mono(self) -> None:
method parser_shortname (line 198) | def parser_shortname(parser_arg: str) -> str:
method parsers_text (line 203) | def parsers_text(self) -> str:
method parser_categories_text (line 217) | def parser_categories_text(self) -> str:
method options_text (line 254) | def options_text(self) -> str:
method about_jc (line 270) | def about_jc() -> JSONDictType:
method helptext (line 291) | def helptext(self) -> str:
method help_doc (line 298) | def help_doc(self) -> None:
method versiontext (line 338) | def versiontext() -> str:
method yaml_out (line 351) | def yaml_out(self) -> str:
method json_out (line 393) | def json_out(self) -> str:
method safe_print_out (line 424) | def safe_print_out(self) -> None:
method magic_parser (line 440) | def magic_parser(self) -> None:
method open_text_file (line 511) | def open_text_file(path_string: str) -> str:
method run_user_command (line 515) | def run_user_command(self) -> None:
method do_magic (line 534) | def do_magic(self) -> None:
method set_parser_module_and_parser_name (line 616) | def set_parser_module_and_parser_name(self) -> None:
method add_metadata_to_output (line 639) | def add_metadata_to_output(self) -> None:
method slicer (line 686) | def slicer(self) -> None:
method create_slurp_output (line 697) | def create_slurp_output(self) -> None:
method create_normal_output (line 757) | def create_normal_output(self) -> None:
method streaming_parse_and_print (line 770) | def streaming_parse_and_print(self) -> None:
method standard_parse_and_print (line 791) | def standard_parse_and_print(self) -> None:
method exit_clean (line 812) | def exit_clean(self) -> None:
method exit_error (line 817) | def exit_error(self) -> None:
method _run (line 822) | def _run(self) -> None:
method run (line 950) | def run(self) -> None:
function main (line 969) | def main():
FILE: jc/exceptions.py
class ParseError (line 4) | class ParseError(Exception):
class LibraryNotInstalled (line 8) | class LibraryNotInstalled(Exception):
FILE: jc/lib.py
function _cliname_to_modname (line 247) | def _cliname_to_modname(parser_cli_name: str) -> str:
function _modname_to_cliname (line 251) | def _modname_to_cliname(parser_mod_name: str) -> str:
function _is_valid_parser_plugin (line 255) | def _is_valid_parser_plugin(name: str, local_parsers_dir: str) -> bool:
function _parser_argument (line 291) | def _parser_argument(parser_mod_name: str) -> str:
function get_parser (line 296) | def get_parser(parser_mod_name: Union[str, ModuleType]) -> ModuleType:
function _get_parser (line 335) | def _get_parser(parser_mod_name: str) -> ModuleType:
function _parser_is_slurpable (line 352) | def _parser_is_slurpable(parser: ModuleType) -> bool:
function _parser_is_streaming (line 365) | def _parser_is_streaming(parser: ModuleType) -> bool:
function _parser_is_hidden (line 376) | def _parser_is_hidden(parser: ModuleType) -> bool:
function _parser_is_deprecated (line 387) | def _parser_is_deprecated(parser: ModuleType) -> bool:
function parse (line 398) | def parse(
function parser_mod_list (line 507) | def parser_mod_list(
function plugin_parser_mod_list (line 526) | def plugin_parser_mod_list(
function standard_parser_mod_list (line 548) | def standard_parser_mod_list(
function streaming_parser_mod_list (line 573) | def streaming_parser_mod_list(
function slurpable_parser_mod_list (line 597) | def slurpable_parser_mod_list(
function parser_info (line 621) | def parser_info(
function all_parser_info (line 661) | def all_parser_info(
function get_help (line 695) | def get_help(parser_mod_name: Union[str, ModuleType]) -> None:
FILE: jc/parsers/acpi.py
class info (line 228) | class info():
function _process (line 242) | def _process(proc_data):
function parse (line 291) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/airport.py
class info (line 81) | class info():
function _process (line 95) | def _process(proc_data):
function parse (line 117) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/airport_s.py
class info (line 110) | class info():
function _process (line 124) | def _process(proc_data):
function parse (line 153) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/amixer.py
class info (line 95) | class info():
function _process (line 109) | def _process(proc_data: Dict) -> Dict:
function parse (line 148) | def parse(
FILE: jc/parsers/apt_cache_show.py
class info (line 153) | class info():
function parse (line 168) | def parse(
FILE: jc/parsers/apt_get_sqq.py
class info (line 175) | class info():
function _process (line 189) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 214) | def parse(
FILE: jc/parsers/arp.py
class info (line 120) | class info():
function _process (line 134) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 160) | def parse(
FILE: jc/parsers/asciitable.py
class info (line 126) | class info():
function _process (line 139) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _remove_ansi (line 160) | def _remove_ansi(string: str) -> str:
function _lstrip (line 165) | def _lstrip(string: str) -> str:
function _rstrip (line 174) | def _rstrip(string: str) -> str:
function _strip (line 183) | def _strip(string: str) -> str:
function _is_separator (line 189) | def _is_separator(line: str) -> bool:
function _snake_case (line 238) | def _snake_case(line: str) -> str:
function _normalize_rows (line 248) | def _normalize_rows(table: str) -> List[str]:
function _fixup_headers (line 307) | def _fixup_headers(table: List[Dict]) -> List[Dict]:
function parse (line 325) | def parse(
FILE: jc/parsers/asciitable_m.py
class info (line 111) | class info():
function _process (line 124) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _remove_ansi (line 145) | def _remove_ansi(string: str) -> str:
function _lstrip (line 150) | def _lstrip(string: str) -> str:
function _rstrip (line 159) | def _rstrip(string: str) -> str:
function _strip (line 168) | def _strip(string: str) -> str:
function _table_sniff (line 174) | def _table_sniff(string: str) -> str:
function _is_separator (line 205) | def _is_separator(line: str) -> bool:
function _snake_case (line 244) | def _snake_case(line: str) -> str:
function _fixup_separators (line 253) | def _fixup_separators(line: str) -> str:
function _normalize_rows (line 277) | def _normalize_rows(table_lines: Iterable[str]) -> List[Tuple[int, List[...
function _get_headers (line 334) | def _get_headers(table: Iterable[Tuple[int, List]]) -> List[List[str]]:
function _get_data (line 349) | def _get_data(table: Iterable[Tuple[int, List]]) -> List[List[List[str]]]:
function _collapse_headers (line 377) | def _collapse_headers(table: List[List[str]]) -> List[str]:
function _collapse_data (line 395) | def _collapse_data(table: List[List[List[str]]], quiet=False) -> List[Li...
function _create_table_dict (line 420) | def _create_table_dict(header: List[str], data: List[List[str]]) -> List...
function _parse_pretty (line 434) | def _parse_pretty(string: str, quiet: bool =False) -> List[Dict[str, Opt...
function parse (line 447) | def parse(
FILE: jc/parsers/asn1crypto/__init__.py
function load_order (line 13) | def load_order():
FILE: jc/parsers/asn1crypto/_errors.py
class APIException (line 16) | class APIException(Exception):
function unwrap (line 24) | def unwrap(string, *params):
FILE: jc/parsers/asn1crypto/_inet.py
function inet_ntop (line 11) | def inet_ntop(address_family, packed_ip):
function inet_pton (line 84) | def inet_pton(address_family, ip_string):
FILE: jc/parsers/asn1crypto/_int.py
function fill_width (line 5) | def fill_width(bytes_, width):
FILE: jc/parsers/asn1crypto/_iri.py
function iri_to_uri (line 28) | def iri_to_uri(value, normalize=False):
function uri_to_iri (line 99) | def uri_to_iri(value):
function _iri_utf8_errors_handler (line 151) | def _iri_utf8_errors_handler(exc):
function _urlquote (line 172) | def _urlquote(string, safe=''):
function _urlunquote (line 224) | def _urlunquote(byte_string, remap=None, preserve=None):
FILE: jc/parsers/asn1crypto/_teletex_codec.py
class TeletexCodec (line 14) | class TeletexCodec(codecs.Codec):
method encode (line 16) | def encode(self, input_, errors='strict'):
method decode (line 19) | def decode(self, input_, errors='strict'):
class TeletexIncrementalEncoder (line 23) | class TeletexIncrementalEncoder(codecs.IncrementalEncoder):
method encode (line 25) | def encode(self, input_, final=False):
class TeletexIncrementalDecoder (line 29) | class TeletexIncrementalDecoder(codecs.IncrementalDecoder):
method decode (line 31) | def decode(self, input_, final=False):
class TeletexStreamWriter (line 35) | class TeletexStreamWriter(TeletexCodec, codecs.StreamWriter):
class TeletexStreamReader (line 40) | class TeletexStreamReader(TeletexCodec, codecs.StreamReader):
function teletex_search_function (line 45) | def teletex_search_function(name):
function register (line 64) | def register():
FILE: jc/parsers/asn1crypto/_types.py
function chr_cls (line 7) | def chr_cls(num):
function type_name (line 11) | def type_name(value):
FILE: jc/parsers/asn1crypto/algos.py
class AlgorithmIdentifier (line 43) | class AlgorithmIdentifier(Sequence):
class _ForceNullParameters (line 50) | class _ForceNullParameters(object):
method _parameters_spec (line 74) | def _parameters_spec(self):
method __setitem__ (line 95) | def __setitem__(self, key, value):
class HmacAlgorithmId (line 107) | class HmacAlgorithmId(ObjectIdentifier):
class HmacAlgorithm (line 124) | class HmacAlgorithm(Sequence):
class DigestAlgorithmId (line 131) | class DigestAlgorithmId(ObjectIdentifier):
class DigestAlgorithm (line 153) | class DigestAlgorithm(_ForceNullParameters, Sequence):
class DigestInfo (line 161) | class DigestInfo(Sequence):
class MaskGenAlgorithmId (line 168) | class MaskGenAlgorithmId(ObjectIdentifier):
class MaskGenAlgorithm (line 174) | class MaskGenAlgorithm(Sequence):
class TrailerField (line 186) | class TrailerField(Integer):
class RSASSAPSSParams (line 192) | class RSASSAPSSParams(Sequence):
class SignedDigestAlgorithmId (line 232) | class SignedDigestAlgorithmId(ObjectIdentifier):
class SignedDigestAlgorithm (line 297) | class SignedDigestAlgorithm(_ForceNullParameters, Sequence):
method signature_algo (line 309) | def signature_algo(self):
method hash_algo (line 356) | def hash_algo(self):
class Pbkdf2Salt (line 398) | class Pbkdf2Salt(Choice):
class Pbkdf2Params (line 405) | class Pbkdf2Params(Sequence):
class KdfAlgorithmId (line 414) | class KdfAlgorithmId(ObjectIdentifier):
class KdfAlgorithm (line 420) | class KdfAlgorithm(Sequence):
class DHParameters (line 431) | class DHParameters(Sequence):
class KeyExchangeAlgorithmId (line 444) | class KeyExchangeAlgorithmId(ObjectIdentifier):
class KeyExchangeAlgorithm (line 450) | class KeyExchangeAlgorithm(Sequence):
class Rc2Params (line 461) | class Rc2Params(Sequence):
class Rc5ParamVersion (line 468) | class Rc5ParamVersion(Integer):
class Rc5Params (line 474) | class Rc5Params(Sequence):
class Pbes1Params (line 483) | class Pbes1Params(Sequence):
class CcmParams (line 490) | class CcmParams(Sequence):
class PSourceAlgorithmId (line 499) | class PSourceAlgorithmId(ObjectIdentifier):
class PSourceAlgorithm (line 505) | class PSourceAlgorithm(Sequence):
class RSAESOAEPParams (line 517) | class RSAESOAEPParams(Sequence):
class DSASignature (line 552) | class DSASignature(Sequence):
method from_p1363 (line 568) | def from_p1363(cls, data):
method to_p1363 (line 584) | def to_p1363(self):
class EncryptionAlgorithmId (line 603) | class EncryptionAlgorithmId(ObjectIdentifier):
class EncryptionAlgorithm (line 656) | class EncryptionAlgorithm(_ForceNullParameters, Sequence):
method kdf (line 697) | def kdf(self):
method kdf_hmac (line 738) | def kdf_hmac(self):
method kdf_salt (line 774) | def kdf_salt(self):
method kdf_iterations (line 819) | def kdf_iterations(self):
method key_length (line 853) | def key_length(self):
method encryption_mode (line 948) | def encryption_mode(self):
method encryption_cipher (line 982) | def encryption_cipher(self):
method encryption_block_size (line 1031) | def encryption_block_size(self):
method encryption_iv (line 1082) | def encryption_iv(self):
class Pbes2Params (line 1130) | class Pbes2Params(Sequence):
class Pbmac1Params (line 1137) | class Pbmac1Params(Sequence):
class Pkcs5MacId (line 1144) | class Pkcs5MacId(ObjectIdentifier):
class Pkcs5MacAlgorithm (line 1150) | class Pkcs5MacAlgorithm(Sequence):
class AnyAlgorithmId (line 1165) | class AnyAlgorithmId(ObjectIdentifier):
method _setup (line 1168) | def _setup(self):
class AnyAlgorithmIdentifier (line 1175) | class AnyAlgorithmIdentifier(_ForceNullParameters, Sequence):
method _setup (line 1184) | def _setup(self):
FILE: jc/parsers/asn1crypto/cms.py
class ExtendedCertificateInfo (line 65) | class ExtendedCertificateInfo(Sequence):
class ExtendedCertificate (line 73) | class ExtendedCertificate(Sequence):
class CMSVersion (line 87) | class CMSVersion(Integer):
class CMSAttributeType (line 98) | class CMSAttributeType(ObjectIdentifier):
class Time (line 123) | class Time(Choice):
class ContentType (line 130) | class ContentType(ObjectIdentifier):
class CMSAlgorithmProtection (line 144) | class CMSAlgorithmProtection(Sequence):
class SetOfContentType (line 152) | class SetOfContentType(SetOf):
class SetOfOctetString (line 156) | class SetOfOctetString(SetOf):
class SetOfTime (line 160) | class SetOfTime(SetOf):
class SetOfAny (line 164) | class SetOfAny(SetOf):
class SetOfCMSAlgorithmProtection (line 168) | class SetOfCMSAlgorithmProtection(SetOf):
class CMSAttribute (line 172) | class CMSAttribute(Sequence):
method _values_spec (line 180) | def _values_spec(self):
class CMSAttributes (line 188) | class CMSAttributes(SetOf):
class IssuerSerial (line 192) | class IssuerSerial(Sequence):
class AttCertVersion (line 200) | class AttCertVersion(Integer):
class AttCertSubject (line 207) | class AttCertSubject(Choice):
class AttCertValidityPeriod (line 214) | class AttCertValidityPeriod(Sequence):
class AttributeCertificateInfoV1 (line 221) | class AttributeCertificateInfoV1(Sequence):
class AttributeCertificateV1 (line 235) | class AttributeCertificateV1(Sequence):
class DigestedObjectType (line 243) | class DigestedObjectType(Enumerated):
class ObjectDigestInfo (line 251) | class ObjectDigestInfo(Sequence):
class Holder (line 260) | class Holder(Sequence):
class V2Form (line 268) | class V2Form(Sequence):
class AttCertIssuer (line 276) | class AttCertIssuer(Choice):
class IetfAttrValue (line 283) | class IetfAttrValue(Choice):
class IetfAttrValues (line 291) | class IetfAttrValues(SequenceOf):
class IetfAttrSyntax (line 295) | class IetfAttrSyntax(Sequence):
class SetOfIetfAttrSyntax (line 302) | class SetOfIetfAttrSyntax(SetOf):
class SvceAuthInfo (line 306) | class SvceAuthInfo(Sequence):
class SetOfSvceAuthInfo (line 314) | class SetOfSvceAuthInfo(SetOf):
class RoleSyntax (line 318) | class RoleSyntax(Sequence):
class SetOfRoleSyntax (line 325) | class SetOfRoleSyntax(SetOf):
class ClassList (line 329) | class ClassList(BitString):
class SecurityCategory (line 340) | class SecurityCategory(Sequence):
class SetOfSecurityCategory (line 347) | class SetOfSecurityCategory(SetOf):
class Clearance (line 351) | class Clearance(Sequence):
class SetOfClearance (line 359) | class SetOfClearance(SetOf):
class BigTime (line 363) | class BigTime(Sequence):
class LeapData (line 371) | class LeapData(Sequence):
class SetOfLeapData (line 378) | class SetOfLeapData(SetOf):
class TimingMetrics (line 382) | class TimingMetrics(Sequence):
class SetOfTimingMetrics (line 392) | class SetOfTimingMetrics(SetOf):
class TimingPolicy (line 396) | class TimingPolicy(Sequence):
class SetOfTimingPolicy (line 404) | class SetOfTimingPolicy(SetOf):
class AttCertAttributeType (line 408) | class AttCertAttributeType(ObjectIdentifier):
class AttCertAttribute (line 421) | class AttCertAttribute(Sequence):
method _values_spec (line 438) | def _values_spec(self):
class AttCertAttributes (line 446) | class AttCertAttributes(SequenceOf):
class AttributeCertificateInfoV2 (line 450) | class AttributeCertificateInfoV2(Sequence):
class AttributeCertificateV2 (line 464) | class AttributeCertificateV2(Sequence):
class OtherCertificateFormat (line 475) | class OtherCertificateFormat(Sequence):
class CertificateChoices (line 482) | class CertificateChoices(Choice):
method validate (line 491) | def validate(self, class_, tag, contents):
class CertificateSet (line 517) | class CertificateSet(SetOf):
class ContentInfo (line 521) | class ContentInfo(Sequence):
class SetOfContentInfo (line 531) | class SetOfContentInfo(SetOf):
class EncapsulatedContentInfo (line 535) | class EncapsulatedContentInfo(Sequence):
class IssuerAndSerialNumber (line 545) | class IssuerAndSerialNumber(Sequence):
class SignerIdentifier (line 552) | class SignerIdentifier(Choice):
class DigestAlgorithms (line 559) | class DigestAlgorithms(SetOf):
class CertificateRevocationLists (line 563) | class CertificateRevocationLists(SetOf):
class SCVPReqRes (line 567) | class SCVPReqRes(Sequence):
class OtherRevInfoFormatId (line 574) | class OtherRevInfoFormatId(ObjectIdentifier):
class OtherRevocationInfoFormat (line 581) | class OtherRevocationInfoFormat(Sequence):
class RevocationInfoChoice (line 594) | class RevocationInfoChoice(Choice):
class RevocationInfoChoices (line 601) | class RevocationInfoChoices(SetOf):
class SignerInfo (line 605) | class SignerInfo(Sequence):
class SignerInfos (line 617) | class SignerInfos(SetOf):
class SignedData (line 621) | class SignedData(Sequence):
method _encap_content_info_spec (line 631) | def _encap_content_info_spec(self):
class OriginatorInfo (line 650) | class OriginatorInfo(Sequence):
class RecipientIdentifier (line 657) | class RecipientIdentifier(Choice):
class KeyEncryptionAlgorithmId (line 664) | class KeyEncryptionAlgorithmId(ObjectIdentifier):
class KeyEncryptionAlgorithm (line 689) | class KeyEncryptionAlgorithm(_ForceNullParameters, Sequence):
class KeyTransRecipientInfo (line 701) | class KeyTransRecipientInfo(Sequence):
class OriginatorIdentifierOrKey (line 710) | class OriginatorIdentifierOrKey(Choice):
class OtherKeyAttribute (line 718) | class OtherKeyAttribute(Sequence):
class RecipientKeyIdentifier (line 725) | class RecipientKeyIdentifier(Sequence):
class KeyAgreementRecipientIdentifier (line 733) | class KeyAgreementRecipientIdentifier(Choice):
class RecipientEncryptedKey (line 740) | class RecipientEncryptedKey(Sequence):
class RecipientEncryptedKeys (line 747) | class RecipientEncryptedKeys(SequenceOf):
class KeyAgreeRecipientInfo (line 751) | class KeyAgreeRecipientInfo(Sequence):
class KEKIdentifier (line 761) | class KEKIdentifier(Sequence):
class KEKRecipientInfo (line 769) | class KEKRecipientInfo(Sequence):
class PasswordRecipientInfo (line 778) | class PasswordRecipientInfo(Sequence):
class OtherRecipientInfo (line 787) | class OtherRecipientInfo(Sequence):
class RecipientInfo (line 794) | class RecipientInfo(Choice):
class RecipientInfos (line 804) | class RecipientInfos(SetOf):
class EncryptedContentInfo (line 808) | class EncryptedContentInfo(Sequence):
class EnvelopedData (line 816) | class EnvelopedData(Sequence):
class SignedAndEnvelopedData (line 826) | class SignedAndEnvelopedData(Sequence):
class DigestedData (line 838) | class DigestedData(Sequence):
method _encap_content_info_spec (line 846) | def _encap_content_info_spec(self):
class EncryptedData (line 865) | class EncryptedData(Sequence):
class AuthenticatedData (line 873) | class AuthenticatedData(Sequence):
class AuthEnvelopedData (line 889) | class AuthEnvelopedData(Sequence):
class CompressionAlgorithmId (line 901) | class CompressionAlgorithmId(ObjectIdentifier):
class CompressionAlgorithm (line 907) | class CompressionAlgorithm(Sequence):
class CompressedData (line 914) | class CompressedData(Sequence):
method decompressed (line 924) | def decompressed(self):
class RecipientKeyIdentifier (line 932) | class RecipientKeyIdentifier(Sequence):
class SMIMEEncryptionKeyPreference (line 940) | class SMIMEEncryptionKeyPreference(Choice):
class SMIMEEncryptionKeyPreferences (line 948) | class SMIMEEncryptionKeyPreferences(SetOf):
class SMIMECapabilityIdentifier (line 952) | class SMIMECapabilityIdentifier(Sequence):
class SMIMECapabilites (line 959) | class SMIMECapabilites(SequenceOf):
class SetOfSMIMECapabilites (line 963) | class SetOfSMIMECapabilites(SetOf):
FILE: jc/parsers/asn1crypto/core.py
function load (line 105) | def load(encoded_data, strict=False):
class Asn1Value (line 159) | class Asn1Value(object):
method load (line 198) | def load(cls, encoded_data, strict=False, **kwargs):
method __init__ (line 223) | def __init__(self, explicit=None, implicit=None, no_explicit=False, ta...
method __str__ (line 429) | def __str__(self):
method __repr__ (line 440) | def __repr__(self):
method __bytes__ (line 448) | def __bytes__(self):
method __unicode__ (line 458) | def __unicode__(self):
method _new_instance (line 468) | def _new_instance(self):
method __copy__ (line 483) | def __copy__(self):
method __deepcopy__ (line 495) | def __deepcopy__(self, memo):
method copy (line 511) | def copy(self):
method retag (line 521) | def retag(self, tagging, tag=None):
method untag (line 543) | def untag(self):
method _copy (line 555) | def _copy(self, other, copy_func):
method debug (line 579) | def debug(self, nest_level=1):
method dump (line 598) | def dump(self, force=False):
class ValueMap (line 632) | class ValueMap():
method _setup (line 646) | def _setup(self):
class Castable (line 659) | class Castable(object):
method cast (line 666) | def cast(self, other_class):
class Constructable (line 703) | class Constructable(object):
method _merge_chunks (line 713) | def _merge_chunks(self):
method _as_chunk (line 739) | def _as_chunk(self):
method _setable_native (line 751) | def _setable_native(self):
method _copy (line 765) | def _copy(self, other, copy_func):
class Void (line 784) | class Void(Asn1Value):
method __eq__ (line 792) | def __eq__(self, other):
method __nonzero__ (line 803) | def __nonzero__(self):
method __len__ (line 806) | def __len__(self):
method __iter__ (line 809) | def __iter__(self):
method native (line 813) | def native(self):
method dump (line 823) | def dump(self, force=False):
class Any (line 841) | class Any(Asn1Value):
method __init__ (line 852) | def __init__(self, value=None, **kwargs):
method native (line 881) | def native(self):
method parsed (line 895) | def parsed(self):
method parse (line 908) | def parse(self, spec=None, spec_params=None):
method _copy (line 958) | def _copy(self, other, copy_func):
method dump (line 973) | def dump(self, force=False):
class Choice (line 991) | class Choice(Asn1Value):
method load (line 1027) | def load(cls, encoded_data, strict=False, **kwargs):
method _setup (line 1048) | def _setup(self):
method __init__ (line 1064) | def __init__(self, name=None, value=None, **kwargs):
method contents (line 1149) | def contents(self):
method contents (line 1161) | def contents(self, value):
method name (line 1170) | def name(self):
method parse (line 1179) | def parse(self):
method chosen (line 1198) | def chosen(self):
method native (line 1207) | def native(self):
method validate (line 1217) | def validate(self, class_, tag, contents):
method _format_class_tag (line 1281) | def _format_class_tag(self, class_, tag):
method _copy (line 1289) | def _copy(self, other, copy_func):
method dump (line 1306) | def dump(self, force=False):
class Concat (line 1331) | class Concat(object):
method load (line 1345) | def load(cls, encoded_data, strict=False):
method __init__ (line 1362) | def __init__(self, value=None, contents=None, strict=False):
method __str__ (line 1407) | def __str__(self):
method __bytes__ (line 1415) | def __bytes__(self):
method __unicode__ (line 1422) | def __unicode__(self):
method __repr__ (line 1430) | def __repr__(self):
method __copy__ (line 1438) | def __copy__(self):
method __deepcopy__ (line 1450) | def __deepcopy__(self, memo):
method copy (line 1466) | def copy(self):
method _copy (line 1476) | def _copy(self, other, copy_func):
method debug (line 1499) | def debug(self, nest_level=1):
method dump (line 1510) | def dump(self, force=False):
method contents (line 1528) | def contents(self):
method __len__ (line 1536) | def __len__(self):
method __getitem__ (line 1544) | def __getitem__(self, key):
method __setitem__ (line 1569) | def __setitem__(self, key, value):
method __iter__ (line 1605) | def __iter__(self):
class Primitive (line 1614) | class Primitive(Asn1Value):
method __init__ (line 1623) | def __init__(self, value=None, default=None, contents=None, **kwargs):
method set (line 1654) | def set(self, value):
method dump (line 1677) | def dump(self, force=False):
method __ne__ (line 1700) | def __ne__(self, other):
method __eq__ (line 1703) | def __eq__(self, other):
class AbstractString (line 1741) | class AbstractString(Constructable, Primitive):
method set (line 1754) | def set(self, value):
method __unicode__ (line 1780) | def __unicode__(self):
method _copy (line 1792) | def _copy(self, other, copy_func):
method native (line 1808) | def native(self):
class Boolean (line 1822) | class Boolean(Primitive):
method set (line 1829) | def set(self, value):
method __nonzero__ (line 1844) | def __nonzero__(self):
method __bool__ (line 1851) | def __bool__(self):
method native (line 1859) | def native(self):
class Integer (line 1875) | class Integer(Primitive, ValueMap):
method set (line 1882) | def set(self, value):
method __int__ (line 1930) | def __int__(self):
method native (line 1938) | def native(self):
class _IntegerBitString (line 1956) | class _IntegerBitString(object):
method _as_chunk (line 1964) | def _as_chunk(self):
method _chunks_to_int (line 2003) | def _chunks_to_int(self):
method _copy (line 2034) | def _copy(self, other, copy_func):
method unused_bits (line 2050) | def unused_bits(self):
class BitString (line 2064) | class BitString(_IntegerBitString, Constructable, Castable, Primitive, V...
method _setup (line 2073) | def _setup(self):
method set (line 2084) | def set(self, value):
method __getitem__ (line 2183) | def __getitem__(self, key):
method __setitem__ (line 2230) | def __setitem__(self, key, value):
method native (line 2288) | def native(self):
class OctetBitString (line 2319) | class OctetBitString(Constructable, Castable, Primitive):
method set (line 2332) | def set(self, value):
method __bytes__ (line 2363) | def __bytes__(self):
method _copy (line 2386) | def _copy(self, other, copy_func):
method _as_chunk (line 2402) | def _as_chunk(self):
method native (line 2437) | def native(self):
method unused_bits (line 2451) | def unused_bits(self):
class IntegerBitString (line 2465) | class IntegerBitString(_IntegerBitString, Constructable, Castable, Primi...
method set (line 2472) | def set(self, value):
method native (line 2513) | def native(self):
class OctetString (line 2530) | class OctetString(Constructable, Castable, Primitive):
method set (line 2540) | def set(self, value):
method __bytes__ (line 2566) | def __bytes__(self):
method _copy (line 2578) | def _copy(self, other, copy_func):
method native (line 2594) | def native(self):
class IntegerOctetString (line 2608) | class IntegerOctetString(Constructable, Castable, Primitive):
method set (line 2621) | def set(self, value):
method native (line 2660) | def native(self):
method set_encoded_width (line 2675) | def set_encoded_width(self, width):
class ParsableOctetString (line 2689) | class ParsableOctetString(Constructable, Castable, Primitive):
method __init__ (line 2698) | def __init__(self, value=None, parsed=None, **kwargs):
method set (line 2722) | def set(self, value):
method parse (line 2748) | def parse(self, spec=None, spec_params=None):
method __bytes__ (line 2771) | def __bytes__(self):
method _setable_native (line 2783) | def _setable_native(self):
method _copy (line 2793) | def _copy(self, other, copy_func):
method native (line 2810) | def native(self):
method parsed (line 2827) | def parsed(self):
method dump (line 2840) | def dump(self, force=False):
class ParsableOctetBitString (line 2867) | class ParsableOctetBitString(ParsableOctetString):
method set (line 2871) | def set(self, value):
method _as_chunk (line 2901) | def _as_chunk(self):
class Null (line 2919) | class Null(Primitive):
method set (line 2928) | def set(self, value):
method native (line 2939) | def native(self):
class ObjectIdentifier (line 2950) | class ObjectIdentifier(Primitive, ValueMap):
method map (line 2962) | def map(cls, value):
method unmap (line 2996) | def unmap(cls, value):
method set (line 3045) | def set(self, value):
method __unicode__ (line 3110) | def __unicode__(self):
method dotted (line 3119) | def dotted(self):
method native (line 3153) | def native(self):
class ObjectDescriptor (line 3173) | class ObjectDescriptor(Primitive):
class InstanceOf (line 3181) | class InstanceOf(Primitive):
class Real (line 3189) | class Real(Primitive):
class Enumerated (line 3197) | class Enumerated(Integer):
method set (line 3205) | def set(self, value):
method native (line 3249) | def native(self):
class UTF8String (line 3265) | class UTF8String(AbstractString):
class RelativeOid (line 3274) | class RelativeOid(ObjectIdentifier):
class Sequence (line 3283) | class Sequence(Asn1Value):
method __init__ (line 3340) | def __init__(self, value=None, default=None, **kwargs):
method contents (line 3406) | def contents(self):
method contents (line 3421) | def contents(self, value):
method _is_mutated (line 3429) | def _is_mutated(self):
method _lazy_child (line 3444) | def _lazy_child(self, index):
method __len__ (line 3454) | def __len__(self):
method __getitem__ (line 3465) | def __getitem__(self, key):
method __setitem__ (line 3511) | def __setitem__(self, key, value):
method __delitem__ (line 3566) | def __delitem__(self, key):
method __iter__ (line 3611) | def __iter__(self):
method _set_contents (line 3620) | def _set_contents(self, force=False):
method _setup (line 3657) | def _setup(self):
method _determine_spec (line 3684) | def _determine_spec(self, index):
method _make_value (line 3731) | def _make_value(self, field_name, field_spec, value_spec, field_params...
method _parse_children (line 3827) | def _parse_children(self, recurse=False):
method spec (line 3963) | def spec(self, field_name):
method native (line 4003) | def native(self):
method _copy (line 4036) | def _copy(self, other, copy_func):
method debug (line 4057) | def debug(self, nest_level=1):
method dump (line 4073) | def dump(self, force=False):
class SequenceOf (line 4112) | class SequenceOf(Asn1Value):
method __init__ (line 4136) | def __init__(self, value=None, default=None, contents=None, spec=None,...
method contents (line 4180) | def contents(self):
method contents (line 4195) | def contents(self, value):
method _is_mutated (line 4203) | def _is_mutated(self):
method _lazy_child (line 4218) | def _lazy_child(self, index):
method _make_value (line 4229) | def _make_value(self, value):
method __len__ (line 4284) | def __len__(self):
method __getitem__ (line 4295) | def __getitem__(self, key):
method __setitem__ (line 4309) | def __setitem__(self, key, value):
method __delitem__ (line 4340) | def __delitem__(self, key):
method __iter__ (line 4358) | def __iter__(self):
method __contains__ (line 4371) | def __contains__(self, item):
method append (line 4400) | def append(self, value):
method _set_contents (line 4420) | def _set_contents(self, force=False):
method _parse_children (line 4440) | def _parse_children(self, recurse=False):
method spec (line 4476) | def spec(self):
method native (line 4488) | def native(self):
method _copy (line 4511) | def _copy(self, other, copy_func):
method debug (line 4532) | def debug(self, nest_level=1):
method dump (line 4545) | def dump(self, force=False):
class Set (line 4567) | class Set(Sequence):
method _setup (line 4581) | def _setup(self):
method _parse_children (line 4608) | def _parse_children(self, recurse=False):
method _set_contents (line 4719) | def _set_contents(self, force=False):
class SetOf (line 4753) | class SetOf(SequenceOf):
method _set_contents (line 4761) | def _set_contents(self, force=False):
class EmbeddedPdv (line 4786) | class EmbeddedPdv(Sequence):
class NumericString (line 4794) | class NumericString(AbstractString):
class PrintableString (line 4803) | class PrintableString(AbstractString):
class TeletexString (line 4812) | class TeletexString(AbstractString):
class VideotexString (line 4821) | class VideotexString(OctetString):
class IA5String (line 4829) | class IA5String(AbstractString):
class AbstractTime (line 4838) | class AbstractTime(AbstractString):
method _parsed_time (line 4844) | def _parsed_time(self):
method native (line 4908) | def native(self):
class UTCTime (line 4936) | class UTCTime(AbstractTime):
method set (line 4972) | def set(self, value):
method _get_datetime (line 5000) | def _get_datetime(self, parsed):
class GeneralizedTime (line 5020) | class GeneralizedTime(AbstractTime):
method set (line 5066) | def set(self, value):
method _get_datetime (line 5097) | def _get_datetime(self, parsed):
class GraphicString (line 5113) | class GraphicString(AbstractString):
class VisibleString (line 5123) | class VisibleString(AbstractString):
class GeneralString (line 5132) | class GeneralString(AbstractString):
class UniversalString (line 5142) | class UniversalString(AbstractString):
class CharacterString (line 5151) | class CharacterString(AbstractString):
class BMPString (line 5161) | class BMPString(AbstractString):
function _basic_debug (line 5170) | def _basic_debug(prefix, self):
function _tag_type_to_explicit_implicit (line 5217) | def _tag_type_to_explicit_implicit(params):
function _fix_tagging (line 5236) | def _fix_tagging(value, params):
function _build_id_tuple (line 5276) | def _build_id_tuple(params, spec):
function _int_to_bit_tuple (line 5321) | def _int_to_bit_tuple(value, bits):
function _build (line 5377) | def _build(class_, method, tag, header, contents, trailer, spec=None, sp...
function _parse_build (line 5610) | def _parse_build(encoded_data, pointer=0, spec=None, spec_params=None, s...
FILE: jc/parsers/asn1crypto/crl.py
class Version (line 43) | class Version(Integer):
class IssuingDistributionPoint (line 51) | class IssuingDistributionPoint(Sequence):
class TBSCertListExtensionId (line 62) | class TBSCertListExtensionId(ObjectIdentifier):
class TBSCertListExtension (line 74) | class TBSCertListExtension(Sequence):
class TBSCertListExtensions (line 93) | class TBSCertListExtensions(SequenceOf):
class CRLReason (line 97) | class CRLReason(Enumerated):
method human_friendly (line 112) | def human_friendly(self):
class CRLEntryExtensionId (line 135) | class CRLEntryExtensionId(ObjectIdentifier):
class CRLEntryExtension (line 144) | class CRLEntryExtension(Sequence):
class CRLEntryExtensions (line 160) | class CRLEntryExtensions(SequenceOf):
class RevokedCertificate (line 164) | class RevokedCertificate(Sequence):
method _set_extensions (line 178) | def _set_extensions(self):
method critical_extensions (line 197) | def critical_extensions(self):
method crl_reason_value (line 211) | def crl_reason_value(self):
method invalidity_date_value (line 224) | def invalidity_date_value(self):
method certificate_issuer_value (line 240) | def certificate_issuer_value(self):
method issuer_name (line 255) | def issuer_name(self):
class RevokedCertificates (line 271) | class RevokedCertificates(SequenceOf):
class TbsCertList (line 275) | class TbsCertList(Sequence):
class CertificateList (line 287) | class CertificateList(Sequence):
method _set_extensions (line 308) | def _set_extensions(self):
method critical_extensions (line 327) | def critical_extensions(self):
method issuer_alt_name_value (line 341) | def issuer_alt_name_value(self):
method crl_number_value (line 355) | def crl_number_value(self):
method delta_crl_indicator_value (line 369) | def delta_crl_indicator_value(self):
method issuing_distribution_point_value (line 383) | def issuing_distribution_point_value(self):
method authority_key_identifier_value (line 397) | def authority_key_identifier_value(self):
method freshest_crl_value (line 411) | def freshest_crl_value(self):
method authority_information_access_value (line 425) | def authority_information_access_value(self):
method issuer (line 439) | def issuer(self):
method authority_key_identifier (line 448) | def authority_key_identifier(self):
method issuer_cert_urls (line 461) | def issuer_cert_urls(self):
method delta_crl_distribution_points (line 483) | def delta_crl_distribution_points(self):
method signature (line 508) | def signature(self):
method sha1 (line 517) | def sha1(self):
method sha256 (line 528) | def sha256(self):
FILE: jc/parsers/asn1crypto/csr.py
class Version (line 34) | class Version(Integer):
class CSRAttributeType (line 40) | class CSRAttributeType(ObjectIdentifier):
class SetOfDirectoryString (line 54) | class SetOfDirectoryString(SetOf):
class Attribute (line 58) | class Attribute(Sequence):
class SetOfAttributes (line 65) | class SetOfAttributes(SetOf):
class SetOfExtensions (line 69) | class SetOfExtensions(SetOf):
class MicrosoftEnrollmentCSProvider (line 73) | class MicrosoftEnrollmentCSProvider(Sequence):
class SetOfMicrosoftEnrollmentCSProvider (line 81) | class SetOfMicrosoftEnrollmentCSProvider(SetOf):
class MicrosoftRequestClientInfo (line 85) | class MicrosoftRequestClientInfo(Sequence):
class SetOfMicrosoftRequestClientInfo (line 94) | class SetOfMicrosoftRequestClientInfo(SetOf):
class CRIAttribute (line 98) | class CRIAttribute(Sequence):
class CRIAttributes (line 115) | class CRIAttributes(SetOf):
class CertificationRequestInfo (line 119) | class CertificationRequestInfo(Sequence):
class CertificationRequest (line 128) | class CertificationRequest(Sequence):
FILE: jc/parsers/asn1crypto/keys.py
class OtherPrimeInfo (line 45) | class OtherPrimeInfo(Sequence):
class OtherPrimeInfos (line 57) | class OtherPrimeInfos(SequenceOf):
class RSAPrivateKeyVersion (line 65) | class RSAPrivateKeyVersion(Integer):
class RSAPrivateKey (line 77) | class RSAPrivateKey(Sequence):
class RSAPublicKey (line 96) | class RSAPublicKey(Sequence):
class DSAPrivateKey (line 107) | class DSAPrivateKey(Sequence):
class _ECPoint (line 127) | class _ECPoint():
method from_coords (line 136) | def from_coords(cls, x, y):
method to_coords (line 162) | def to_coords(self):
class ECPoint (line 197) | class ECPoint(OctetString, _ECPoint):
class ECPointBitString (line 202) | class ECPointBitString(OctetBitString, _ECPoint):
class SpecifiedECDomainVersion (line 207) | class SpecifiedECDomainVersion(Integer):
class FieldType (line 218) | class FieldType(ObjectIdentifier):
class CharacteristicTwoBasis (line 230) | class CharacteristicTwoBasis(ObjectIdentifier):
class Pentanomial (line 243) | class Pentanomial(Sequence):
class CharacteristicTwo (line 255) | class CharacteristicTwo(Sequence):
class FieldID (line 275) | class FieldID(Sequence):
class Curve (line 292) | class Curve(Sequence):
class SpecifiedECDomain (line 304) | class SpecifiedECDomain(Sequence):
class NamedCurve (line 320) | class NamedCurve(ObjectIdentifier):
method register (line 492) | def register(cls, name, oid, key_size):
class ECDomainParameters (line 514) | class ECDomainParameters(Choice):
method key_size (line 526) | def key_size(self):
class ECPrivateKeyVersion (line 551) | class ECPrivateKeyVersion(Integer):
class ECPrivateKey (line 562) | class ECPrivateKey(Sequence):
method __setitem__ (line 578) | def __setitem__(self, key, value):
method set_key_size (line 597) | def set_key_size(self, key_size):
method _update_key_size (line 608) | def _update_key_size(self):
class DSAParams (line 617) | class DSAParams(Sequence):
class Attribute (line 632) | class Attribute(Sequence):
class Attributes (line 643) | class Attributes(SetOf):
class PrivateKeyAlgorithmId (line 651) | class PrivateKeyAlgorithmId(ObjectIdentifier):
class PrivateKeyAlgorithm (line 677) | class PrivateKeyAlgorithm(_ForceNullParameters, Sequence):
class PrivateKeyInfo (line 696) | class PrivateKeyInfo(Sequence):
method _private_key_spec (line 708) | def _private_key_spec(self):
method wrap (line 733) | def wrap(cls, private_key, algorithm):
method __setitem__ (line 802) | def __setitem__(self, key, value):
method unwrap (line 819) | def unwrap(self):
method curve (line 833) | def curve(self):
method hash_algo (line 867) | def hash_algo(self):
method algorithm (line 893) | def algorithm(self):
method bit_size (line 904) | def bit_size(self):
method byte_size (line 924) | def byte_size(self):
method public_key (line 933) | def public_key(self):
method public_key_info (line 945) | def public_key_info(self):
method fingerprint (line 956) | def fingerprint(self):
class EncryptedPrivateKeyInfo (line 974) | class EncryptedPrivateKeyInfo(Sequence):
class ValidationParms (line 987) | class ValidationParms(Sequence):
class DomainParameters (line 998) | class DomainParameters(Sequence):
class PublicKeyAlgorithmId (line 1012) | class PublicKeyAlgorithmId(ObjectIdentifier):
class PublicKeyAlgorithm (line 1039) | class PublicKeyAlgorithm(_ForceNullParameters, Sequence):
class PublicKeyInfo (line 1060) | class PublicKeyInfo(Sequence):
method _public_key_spec (line 1071) | def _public_key_spec(self):
method wrap (line 1101) | def wrap(cls, public_key, algorithm):
method unwrap (line 1143) | def unwrap(self):
method curve (line 1157) | def curve(self):
method hash_algo (line 1191) | def hash_algo(self):
method algorithm (line 1222) | def algorithm(self):
method bit_size (line 1233) | def bit_size(self):
method byte_size (line 1255) | def byte_size(self):
method sha1 (line 1264) | def sha1(self):
method sha256 (line 1275) | def sha256(self):
method fingerprint (line 1286) | def fingerprint(self):
FILE: jc/parsers/asn1crypto/ocsp.py
class Version (line 40) | class Version(Integer):
class CertId (line 46) | class CertId(Sequence):
class ServiceLocator (line 55) | class ServiceLocator(Sequence):
class RequestExtensionId (line 62) | class RequestExtensionId(ObjectIdentifier):
class RequestExtension (line 68) | class RequestExtension(Sequence):
class RequestExtensions (line 81) | class RequestExtensions(SequenceOf):
class Request (line 85) | class Request(Sequence):
method _set_extensions (line 95) | def _set_extensions(self):
method critical_extensions (line 114) | def critical_extensions(self):
method service_locator_value (line 128) | def service_locator_value(self):
class Requests (line 142) | class Requests(SequenceOf):
class ResponseType (line 146) | class ResponseType(ObjectIdentifier):
class AcceptableResponses (line 152) | class AcceptableResponses(SequenceOf):
class PreferredSignatureAlgorithm (line 156) | class PreferredSignatureAlgorithm(Sequence):
class PreferredSignatureAlgorithms (line 163) | class PreferredSignatureAlgorithms(SequenceOf):
class TBSRequestExtensionId (line 167) | class TBSRequestExtensionId(ObjectIdentifier):
class TBSRequestExtension (line 175) | class TBSRequestExtension(Sequence):
class TBSRequestExtensions (line 190) | class TBSRequestExtensions(SequenceOf):
class TBSRequest (line 194) | class TBSRequest(Sequence):
class Certificates (line 203) | class Certificates(SequenceOf):
class Signature (line 207) | class Signature(Sequence):
class OCSPRequest (line 215) | class OCSPRequest(Sequence):
method _set_extensions (line 227) | def _set_extensions(self):
method critical_extensions (line 246) | def critical_extensions(self):
method nonce_value (line 260) | def nonce_value(self):
method acceptable_responses_value (line 274) | def acceptable_responses_value(self):
method preferred_signature_algorithms_value (line 289) | def preferred_signature_algorithms_value(self):
class OCSPResponseStatus (line 305) | class OCSPResponseStatus(Enumerated):
class ResponderId (line 316) | class ResponderId(Choice):
class StatusGood (line 324) | class StatusGood(Null):
method set (line 325) | def set(self, value):
method native (line 344) | def native(self):
class StatusUnknown (line 349) | class StatusUnknown(Null):
method set (line 350) | def set(self, value):
method native (line 369) | def native(self):
class RevokedInfo (line 373) | class RevokedInfo(Sequence):
class CertStatus (line 380) | class CertStatus(Choice):
class CrlId (line 388) | class CrlId(Sequence):
class SingleResponseExtensionId (line 396) | class SingleResponseExtensionId(ObjectIdentifier):
class SingleResponseExtension (line 410) | class SingleResponseExtension(Sequence):
class SingleResponseExtensions (line 428) | class SingleResponseExtensions(SequenceOf):
class SingleResponse (line 432) | class SingleResponse(Sequence):
method _set_extensions (line 449) | def _set_extensions(self):
method critical_extensions (line 468) | def critical_extensions(self):
method crl_value (line 482) | def crl_value(self):
method archive_cutoff_value (line 496) | def archive_cutoff_value(self):
method crl_reason_value (line 510) | def crl_reason_value(self):
method invalidity_date_value (line 523) | def invalidity_date_value(self):
method certificate_issuer_value (line 539) | def certificate_issuer_value(self):
class Responses (line 552) | class Responses(SequenceOf):
class ResponseDataExtensionId (line 556) | class ResponseDataExtensionId(ObjectIdentifier):
class ResponseDataExtension (line 563) | class ResponseDataExtension(Sequence):
class ResponseDataExtensions (line 577) | class ResponseDataExtensions(SequenceOf):
class ResponseData (line 581) | class ResponseData(Sequence):
class BasicOCSPResponse (line 591) | class BasicOCSPResponse(Sequence):
class ResponseBytes (line 600) | class ResponseBytes(Sequence):
class OCSPResponse (line 612) | class OCSPResponse(Sequence):
method _set_extensions (line 623) | def _set_extensions(self):
method critical_extensions (line 642) | def critical_extensions(self):
method nonce_value (line 656) | def nonce_value(self):
method extended_revoke_value (line 670) | def extended_revoke_value(self):
method basic_ocsp_response (line 684) | def basic_ocsp_response(self):
method response_data (line 695) | def response_data(self):
FILE: jc/parsers/asn1crypto/parser.py
function emit (line 25) | def emit(class_, method, tag, contents):
function parse (line 74) | def parse(contents, strict=False):
function peek (line 113) | def peek(contents):
function _parse (line 139) | def _parse(encoded_data, data_len, pointer=0, lengths_only=False, depth=0):
function _dump_header (line 245) | def _dump_header(class_, method, tag, contents):
FILE: jc/parsers/asn1crypto/pdf.py
class AdobeArchiveRevInfo (line 31) | class AdobeArchiveRevInfo(Sequence):
class AdobeTimestamp (line 37) | class AdobeTimestamp(Sequence):
class OtherRevInfo (line 45) | class OtherRevInfo(Sequence):
class SequenceOfCertificateList (line 52) | class SequenceOfCertificateList(SequenceOf):
class SequenceOfOCSPResponse (line 56) | class SequenceOfOCSPResponse(SequenceOf):
class SequenceOfOtherRevInfo (line 60) | class SequenceOfOtherRevInfo(SequenceOf):
class RevocationInfoArchival (line 64) | class RevocationInfoArchival(Sequence):
class SetOfRevocationInfoArchival (line 72) | class SetOfRevocationInfoArchival(SetOf):
FILE: jc/parsers/asn1crypto/pem.py
function detect (line 23) | def detect(byte_string):
function armor (line 46) | def armor(type_name, der_bytes, headers=None):
function _unarmor (line 108) | def _unarmor(pem_bytes):
function unarmor (line 192) | def unarmor(pem_bytes, multiple=False):
FILE: jc/parsers/asn1crypto/pkcs12.py
class MacData (line 36) | class MacData(Sequence):
class Version (line 44) | class Version(Integer):
class AttributeType (line 50) | class AttributeType(ObjectIdentifier):
class SetOfAny (line 63) | class SetOfAny(SetOf):
class SetOfBMPString (line 67) | class SetOfBMPString(SetOf):
class SetOfOctetString (line 71) | class SetOfOctetString(SetOf):
class SetOfKeyPurposeId (line 75) | class SetOfKeyPurposeId(SetOf):
class Attribute (line 79) | class Attribute(Sequence):
method _values_spec (line 92) | def _values_spec(self):
class Attributes (line 100) | class Attributes(SetOf):
class Pfx (line 104) | class Pfx(Sequence):
method authenticated_safe (line 114) | def authenticated_safe(self):
class AuthenticatedSafe (line 123) | class AuthenticatedSafe(SequenceOf):
class BagId (line 127) | class BagId(ObjectIdentifier):
class CertId (line 138) | class CertId(ObjectIdentifier):
class CertBag (line 145) | class CertBag(Sequence):
class CrlBag (line 157) | class CrlBag(Sequence):
class SecretBag (line 164) | class SecretBag(Sequence):
class SafeContents (line 171) | class SafeContents(SequenceOf):
class SafeBag (line 175) | class SafeBag(Sequence):
FILE: jc/parsers/asn1crypto/tsp.py
class Version (line 56) | class Version(Integer):
class MessageImprint (line 67) | class MessageImprint(Sequence):
class Accuracy (line 74) | class Accuracy(Sequence):
class Extension (line 82) | class Extension(Sequence):
class Extensions (line 90) | class Extensions(SequenceOf):
class TSTInfo (line 94) | class TSTInfo(Sequence):
class TimeStampReq (line 109) | class TimeStampReq(Sequence):
class PKIStatus (line 120) | class PKIStatus(Integer):
class PKIFreeText (line 131) | class PKIFreeText(SequenceOf):
class PKIFailureInfo (line 135) | class PKIFailureInfo(BitString):
class PKIStatusInfo (line 148) | class PKIStatusInfo(Sequence):
class TimeStampResp (line 156) | class TimeStampResp(Sequence):
class MetaData (line 163) | class MetaData(Sequence):
class TimeStampAndCRL (line 172) | class TimeStampAndCRL(Sequence):
class TimeStampTokenEvidence (line 179) | class TimeStampTokenEvidence(SequenceOf):
class DigestAlgorithms (line 183) | class DigestAlgorithms(SequenceOf):
class EncryptionInfo (line 187) | class EncryptionInfo(Sequence):
class PartialHashtree (line 194) | class PartialHashtree(SequenceOf):
class PartialHashtrees (line 198) | class PartialHashtrees(SequenceOf):
class ArchiveTimeStamp (line 202) | class ArchiveTimeStamp(Sequence):
class ArchiveTimeStampSequence (line 211) | class ArchiveTimeStampSequence(SequenceOf):
class EvidenceRecord (line 215) | class EvidenceRecord(Sequence):
class OtherEvidence (line 225) | class OtherEvidence(Sequence):
class Evidence (line 232) | class Evidence(Choice):
class TimeStampedData (line 240) | class TimeStampedData(Sequence):
class IssuerSerial (line 250) | class IssuerSerial(Sequence):
class ESSCertID (line 257) | class ESSCertID(Sequence):
class ESSCertIDs (line 264) | class ESSCertIDs(SequenceOf):
class SigningCertificate (line 268) | class SigningCertificate(Sequence):
class SetOfSigningCertificates (line 275) | class SetOfSigningCertificates(SetOf):
class ESSCertIDv2 (line 279) | class ESSCertIDv2(Sequence):
class ESSCertIDv2s (line 287) | class ESSCertIDv2s(SequenceOf):
class SigningCertificateV2 (line 291) | class SigningCertificateV2(Sequence):
class SetOfSigningCertificatesV2 (line 298) | class SetOfSigningCertificatesV2(SetOf):
FILE: jc/parsers/asn1crypto/util.py
function int_to_bytes (line 37) | def int_to_bytes(value, signed=False, width=None):
function int_from_bytes (line 68) | def int_from_bytes(value, signed=False):
function _format_offset (line 85) | def _format_offset(off):
class _UtcWithDst (line 97) | class _UtcWithDst(tzinfo):
method tzname (line 102) | def tzname(self, dt):
method utcoffset (line 105) | def utcoffset(self, dt):
method dst (line 108) | def dst(self, dt):
function create_timezone (line 117) | def create_timezone(offset):
class extended_date (line 136) | class extended_date(object):
method __init__ (line 146) | def __init__(self, year, month, day):
method year (line 164) | def year(self):
method month (line 173) | def month(self):
method day (line 182) | def day(self):
method strftime (line 190) | def strftime(self, format):
method isoformat (line 208) | def isoformat(self):
method replace (line 219) | def replace(self, year=None, month=None, day=None):
method __str__ (line 246) | def __str__(self):
method __eq__ (line 254) | def __eq__(self, other):
method __ne__ (line 270) | def __ne__(self, other):
method _comparison_error (line 283) | def _comparison_error(self, other):
method __cmp__ (line 292) | def __cmp__(self, other):
method __lt__ (line 316) | def __lt__(self, other):
method __le__ (line 319) | def __le__(self, other):
method __gt__ (line 322) | def __gt__(self, other):
method __ge__ (line 325) | def __ge__(self, other):
class extended_datetime (line 329) | class extended_datetime(object):
method __init__ (line 343) | def __init__(self, year, *args, **kwargs):
method year (line 361) | def year(self):
method month (line 370) | def month(self):
method day (line 379) | def day(self):
method hour (line 388) | def hour(self):
method minute (line 397) | def minute(self):
method second (line 406) | def second(self):
method microsecond (line 415) | def microsecond(self):
method tzinfo (line 424) | def tzinfo(self):
method utcoffset (line 432) | def utcoffset(self):
method time (line 440) | def time(self):
method date (line 448) | def date(self):
method strftime (line 456) | def strftime(self, format):
method isoformat (line 473) | def isoformat(self, sep='T'):
method replace (line 492) | def replace(self, year=None, *args, **kwargs):
method astimezone (line 515) | def astimezone(self, tz):
method timestamp (line 528) | def timestamp(self):
method __str__ (line 538) | def __str__(self):
method __eq__ (line 546) | def __eq__(self, other):
method __ne__ (line 567) | def __ne__(self, other):
method _comparison_error (line 580) | def _comparison_error(self, other):
method __cmp__ (line 598) | def __cmp__(self, other):
method __lt__ (line 623) | def __lt__(self, other):
method __le__ (line 626) | def __le__(self, other):
method __gt__ (line 629) | def __gt__(self, other):
method __ge__ (line 632) | def __ge__(self, other):
method __add__ (line 635) | def __add__(self, other):
method __sub__ (line 648) | def __sub__(self, other):
method __rsub__ (line 671) | def __rsub__(self, other):
method from_y2k (line 675) | def from_y2k(cls, value):
FILE: jc/parsers/asn1crypto/x509.py
class DNSName (line 71) | class DNSName(IA5String):
method __ne__ (line 76) | def __ne__(self, other):
method __eq__ (line 79) | def __eq__(self, other):
method set (line 95) | def set(self, value):
class URI (line 124) | class URI(IA5String):
method set (line 126) | def set(self, value):
method __ne__ (line 149) | def __ne__(self, other):
method __eq__ (line 152) | def __eq__(self, other):
method __unicode__ (line 168) | def __unicode__(self):
class EmailAddress (line 181) | class EmailAddress(IA5String):
method contents (line 192) | def contents(self):
method contents (line 201) | def contents(self, value):
method set (line 210) | def set(self, value):
method __unicode__ (line 240) | def __unicode__(self):
method __ne__ (line 268) | def __ne__(self, other):
method __eq__ (line 271) | def __eq__(self, other):
class IPAddress (line 305) | class IPAddress(OctetString):
method parse (line 306) | def parse(self, spec=None, spec_params=None):
method set (line 317) | def set(self, value):
method native (line 389) | def native(self):
method __ne__ (line 420) | def __ne__(self, other):
method __eq__ (line 423) | def __eq__(self, other):
class Attribute (line 438) | class Attribute(Sequence):
class Attributes (line 445) | class Attributes(SequenceOf):
class KeyUsage (line 449) | class KeyUsage(BitString):
class PrivateKeyUsagePeriod (line 463) | class PrivateKeyUsagePeriod(Sequence):
class NotReallyTeletexString (line 470) | class NotReallyTeletexString(TeletexString):
method __unicode__ (line 481) | def __unicode__(self):
function strict_teletex (line 495) | def strict_teletex():
class DirectoryString (line 503) | class DirectoryString(Choice):
class NameType (line 515) | class NameType(ObjectIdentifier):
method preferred_ordinal (line 599) | def preferred_ordinal(cls, attr_name):
method human_friendly (line 619) | def human_friendly(self):
class NameTypeAndValue (line 663) | class NameTypeAndValue(Sequence):
method prepped_value (line 712) | def prepped_value(self):
method __ne__ (line 725) | def __ne__(self, other):
method __eq__ (line 728) | def __eq__(self, other):
method _ldap_string_prep (line 747) | def _ldap_string_prep(self, string):
class RelativeDistinguishedName (line 856) | class RelativeDistinguishedName(SetOf):
method hashable (line 860) | def hashable(self):
method __ne__ (line 875) | def __ne__(self, other):
method __eq__ (line 878) | def __eq__(self, other):
method _get_types (line 910) | def _get_types(self, rdn):
method _get_values (line 924) | def _get_values(self, rdn):
class RDNSequence (line 941) | class RDNSequence(SequenceOf):
method hashable (line 945) | def hashable(self):
method __ne__ (line 956) | def __ne__(self, other):
method __eq__ (line 959) | def __eq__(self, other):
class Name (line 983) | class Name(Choice):
method build (line 993) | def build(cls, name_dict, use_printable=False):
method hashable (line 1054) | def hashable(self):
method __len__ (line 1062) | def __len__(self):
method __ne__ (line 1065) | def __ne__(self, other):
method __eq__ (line 1068) | def __eq__(self, other):
method native (line 1084) | def native(self):
method human_friendly (line 1100) | def human_friendly(self):
method _recursive_humanize (line 1138) | def _recursive_humanize(self, value):
method sha1 (line 1156) | def sha1(self):
method sha256 (line 1167) | def sha256(self):
class AnotherName (line 1178) | class AnotherName(Sequence):
class CountryName (line 1185) | class CountryName(Choice):
class AdministrationDomainName (line 1195) | class AdministrationDomainName(Choice):
class PrivateDomainName (line 1205) | class PrivateDomainName(Choice):
class PersonalName (line 1212) | class PersonalName(Set):
class TeletexPersonalName (line 1221) | class TeletexPersonalName(Set):
class OrganizationalUnitNames (line 1230) | class OrganizationalUnitNames(SequenceOf):
class TeletexOrganizationalUnitNames (line 1234) | class TeletexOrganizationalUnitNames(SequenceOf):
class BuiltInStandardAttributes (line 1238) | class BuiltInStandardAttributes(Sequence):
class BuiltInDomainDefinedAttribute (line 1252) | class BuiltInDomainDefinedAttribute(Sequence):
class BuiltInDomainDefinedAttributes (line 1259) | class BuiltInDomainDefinedAttributes(SequenceOf):
class TeletexDomainDefinedAttribute (line 1263) | class TeletexDomainDefinedAttribute(Sequence):
class TeletexDomainDefinedAttributes (line 1270) | class TeletexDomainDefinedAttributes(SequenceOf):
class PhysicalDeliveryCountryName (line 1274) | class PhysicalDeliveryCountryName(Choice):
class PostalCode (line 1281) | class PostalCode(Choice):
class PDSParameter (line 1288) | class PDSParameter(Set):
class PrintableAddress (line 1295) | class PrintableAddress(SequenceOf):
class UnformattedPostalAddress (line 1299) | class UnformattedPostalAddress(Set):
class E1634Address (line 1306) | class E1634Address(Sequence):
class NAddresses (line 1313) | class NAddresses(SetOf):
class PresentationAddress (line 1317) | class PresentationAddress(Sequence):
class ExtendedNetworkAddress (line 1326) | class ExtendedNetworkAddress(Choice):
class TerminalType (line 1333) | class TerminalType(Integer):
class ExtensionAttributeType (line 1344) | class ExtensionAttributeType(Integer):
class ExtensionAttribute (line 1372) | class ExtensionAttribute(Sequence):
class ExtensionAttributes (line 1406) | class ExtensionAttributes(SequenceOf):
class ORAddress (line 1410) | class ORAddress(Sequence):
class EDIPartyName (line 1418) | class EDIPartyName(Sequence):
class GeneralName (line 1425) | class GeneralName(Choice):
method __ne__ (line 1438) | def __ne__(self, other):
method __eq__ (line 1441) | def __eq__(self, other):
class GeneralNames (line 1475) | class GeneralNames(SequenceOf):
class Time (line 1479) | class Time(Choice):
class Validity (line 1486) | class Validity(Sequence):
class BasicConstraints (line 1493) | class BasicConstraints(Sequence):
class AuthorityKeyIdentifier (line 1500) | class AuthorityKeyIdentifier(Sequence):
class DistributionPointName (line 1508) | class DistributionPointName(Choice):
class ReasonFlags (line 1515) | class ReasonFlags(BitString):
class GeneralSubtree (line 1529) | class GeneralSubtree(Sequence):
class GeneralSubtrees (line 1537) | class GeneralSubtrees(SequenceOf):
class NameConstraints (line 1541) | class NameConstraints(Sequence):
class DistributionPoint (line 1548) | class DistributionPoint(Sequence):
method url (line 1558) | def url(self):
class CRLDistributionPoints (line 1585) | class CRLDistributionPoints(SequenceOf):
class DisplayText (line 1589) | class DisplayText(Choice):
class NoticeNumbers (line 1598) | class NoticeNumbers(SequenceOf):
class NoticeReference (line 1602) | class NoticeReference(Sequence):
class UserNotice (line 1609) | class UserNotice(Sequence):
class PolicyQualifierId (line 1616) | class PolicyQualifierId(ObjectIdentifier):
class PolicyQualifierInfo (line 1623) | class PolicyQualifierInfo(Sequence):
class PolicyQualifierInfos (line 1636) | class PolicyQualifierInfos(SequenceOf):
class PolicyIdentifier (line 1640) | class PolicyIdentifier(ObjectIdentifier):
class PolicyInformation (line 1646) | class PolicyInformation(Sequence):
class CertificatePolicies (line 1653) | class CertificatePolicies(SequenceOf):
class PolicyMapping (line 1657) | class PolicyMapping(Sequence):
class PolicyMappings (line 1664) | class PolicyMappings(SequenceOf):
class PolicyConstraints (line 1668) | class PolicyConstraints(Sequence):
class KeyPurposeId (line 1675) | class KeyPurposeId(ObjectIdentifier):
class ExtKeyUsageSyntax (line 1787) | class ExtKeyUsageSyntax(SequenceOf):
class AccessMethod (line 1791) | class AccessMethod(ObjectIdentifier):
class AccessDescription (line 1800) | class AccessDescription(Sequence):
class AuthorityInfoAccessSyntax (line 1807) | class AuthorityInfoAccessSyntax(SequenceOf):
class SubjectInfoAccessSyntax (line 1811) | class SubjectInfoAccessSyntax(SequenceOf):
class Features (line 1816) | class Features(SequenceOf):
class EntrustVersionInfo (line 1820) | class EntrustVersionInfo(Sequence):
class NetscapeCertificateType (line 1827) | class NetscapeCertificateType(BitString):
class Version (line 1840) | class Version(Integer):
class TPMSpecification (line 1848) | class TPMSpecification(Sequence):
class SetOfTPMSpecification (line 1856) | class SetOfTPMSpecification(SetOf):
class TCGSpecificationVersion (line 1860) | class TCGSpecificationVersion(Sequence):
class TCGPlatformSpecification (line 1868) | class TCGPlatformSpecification(Sequence):
class SetOfTCGPlatformSpecification (line 1875) | class SetOfTCGPlatformSpecification(SetOf):
class EKGenerationType (line 1879) | class EKGenerationType(Enumerated):
class EKGenerationLocation (line 1888) | class EKGenerationLocation(Enumerated):
class EKCertificateGenerationLocation (line 1896) | class EKCertificateGenerationLocation(Enumerated):
class EvaluationAssuranceLevel (line 1904) | class EvaluationAssuranceLevel(Enumerated):
class EvaluationStatus (line 1916) | class EvaluationStatus(Enumerated):
class StrengthOfFunction (line 1924) | class StrengthOfFunction(Enumerated):
class URIReference (line 1932) | class URIReference(Sequence):
class CommonCriteriaMeasures (line 1940) | class CommonCriteriaMeasures(Sequence):
class SecurityLevel (line 1954) | class SecurityLevel(Enumerated):
class FIPSLevel (line 1963) | class FIPSLevel(Sequence):
class TPMSecurityAssertions (line 1971) | class TPMSecurityAssertions(Sequence):
class SetOfTPMSecurityAssertions (line 1985) | class SetOfTPMSecurityAssertions(SetOf):
class SubjectDirectoryAttributeId (line 1989) | class SubjectDirectoryAttributeId(ObjectIdentifier):
class SetOfGeneralizedTime (line 2008) | class SetOfGeneralizedTime(SetOf):
class SetOfDirectoryString (line 2012) | class SetOfDirectoryString(SetOf):
class SetOfPrintableString (line 2016) | class SetOfPrintableString(SetOf):
class SupportedAlgorithm (line 2020) | class SupportedAlgorithm(Sequence):
class SetOfSupportedAlgorithm (line 2028) | class SetOfSupportedAlgorithm(SetOf):
class SubjectDirectoryAttribute (line 2032) | class SubjectDirectoryAttribute(Sequence):
method _values_spec (line 2051) | def _values_spec(self):
class SubjectDirectoryAttributes (line 2062) | class SubjectDirectoryAttributes(SequenceOf):
class ExtensionId (line 2066) | class ExtensionId(ObjectIdentifier):
class Extension (line 2098) | class Extension(Sequence):
class Extensions (line 2136) | class Extensions(SequenceOf):
class TbsCertificate (line 2140) | class TbsCertificate(Sequence):
class Certificate (line 2155) | class Certificate(Sequence):
method _set_extensions (line 2195) | def _set_extensions(self):
method critical_extensions (line 2214) | def critical_extensions(self):
method private_key_usage_period_value (line 2228) | def private_key_usage_period_value(self):
method subject_directory_attributes_value (line 2242) | def subject_directory_attributes_value(self):
method key_identifier_value (line 2256) | def key_identifier_value(self):
method key_usage_value (line 2271) | def key_usage_value(self):
method subject_alt_name_value (line 2285) | def subject_alt_name_value(self):
method issuer_alt_name_value (line 2301) | def issuer_alt_name_value(self):
method basic_constraints_value (line 2315) | def basic_constraints_value(self):
method name_constraints_value (line 2330) | def name_constraints_value(self):
method crl_distribution_points_value (line 2344) | def crl_distribution_points_value(self):
method certificate_policies_value (line 2358) | def certificate_policies_value(self):
method policy_mappings_value (line 2374) | def policy_mappings_value(self):
method authority_key_identifier_value (line 2389) | def authority_key_identifier_value(self):
method policy_constraints_value (line 2403) | def policy_constraints_value(self):
method freshest_crl_value (line 2417) | def freshest_crl_value(self):
method inhibit_any_policy_value (line 2430) | def inhibit_any_policy_value(self):
method extended_key_usage_value (line 2444) | def extended_key_usage_value(self):
method authority_information_access_value (line 2458) | def authority_information_access_value(self):
method subject_information_access_value (line 2472) | def subject_information_access_value(self):
method tls_feature_value (line 2486) | def tls_feature_value(self):
method ocsp_no_check_value (line 2500) | def ocsp_no_check_value(self):
method signature (line 2515) | def signature(self):
method signature_algo (line 2524) | def signature_algo(self):
method hash_algo (line 2533) | def hash_algo(self):
method public_key (line 2543) | def public_key(self):
method subject (line 2552) | def subject(self):
method issuer (line 2561) | def issuer(self):
method serial_number (line 2570) | def serial_number(self):
method key_identifier (line 2579) | def key_identifier(self):
method issuer_serial (line 2592) | def issuer_serial(self):
method not_valid_after (line 2605) | def not_valid_after(self):
method not_valid_before (line 2613) | def not_valid_before(self):
method authority_key_identifier (line 2621) | def authority_key_identifier(self):
method authority_issuer_serial (line 2634) | def authority_issuer_serial(self):
method crl_distribution_points (line 2656) | def crl_distribution_points(self):
method delta_crl_distribution_points (line 2669) | def delta_crl_distribution_points(self):
method _get_http_crl_distribution_points (line 2681) | def _get_http_crl_distribution_points(self, crl_distribution_points):
method ocsp_urls (line 2713) | def ocsp_urls(self):
method valid_domains (line 2735) | def valid_domains(self):
method valid_ips (line 2770) | def valid_ips(self):
method ca (line 2787) | def ca(self):
method max_path_length (line 2796) | def max_path_length(self):
method self_issued (line 2807) | def self_issued(self):
method self_signed (line 2819) | def self_signed(self):
method sha1 (line 2845) | def sha1(self):
method sha1_fingerprint (line 2856) | def sha1_fingerprint(self):
method sha256 (line 2866) | def sha256(self):
method sha256_fingerprint (line 2878) | def sha256_fingerprint(self):
method is_valid_domain_ip (line 2887) | def is_valid_domain_ip(self, domain_ip):
method _is_wildcard_domain (line 2953) | def _is_wildcard_domain(self, domain):
method _is_wildcard_match (line 2986) | def _is_wildcard_match(self, domain_labels, valid_domain_labels):
class KeyPurposeIdentifiers (line 3028) | class KeyPurposeIdentifiers(SequenceOf):
class SequenceOfAlgorithmIdentifiers (line 3032) | class SequenceOfAlgorithmIdentifiers(SequenceOf):
class CertificateAux (line 3036) | class CertificateAux(Sequence):
class TrustedCertificate (line 3046) | class TrustedCertificate(Concat):
FILE: jc/parsers/blkid.py
class info (line 122) | class info():
function _process (line 136) | def _process(proc_data):
function parse (line 166) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/bluetoothctl.py
class info (line 114) | class info():
function _parse_controller (line 200) | def _parse_controller(next_lines: List[str]) -> Optional[Controller]:
function _parse_device (line 311) | def _parse_device(next_lines: List[str], quiet: bool) -> Optional[Device]:
function parse (line 422) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[JSO...
FILE: jc/parsers/broken_parser.py
class info (line 4) | class info():
function parse (line 17) | def parse(
FILE: jc/parsers/cbt.py
class info (line 101) | class info():
function _process (line 115) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 142) | def parse(
FILE: jc/parsers/cef.py
class info (line 124) | class info():
function _pycef_parse (line 163) | def _pycef_parse(str_input):
function _process (line 232) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 389) | def parse(
FILE: jc/parsers/cef_s.py
class info (line 98) | class info():
function _process (line 113) | def _process(proc_data: Dict) -> Dict:
function parse (line 270) | def parse(
FILE: jc/parsers/certbot.py
class info (line 139) | class info():
function _process (line 153) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 175) | def parse(
FILE: jc/parsers/chage.py
class info (line 58) | class info():
function _process (line 72) | def _process(proc_data: Dict) -> Dict:
function parse (line 94) | def parse(
FILE: jc/parsers/cksum.py
class info (line 55) | class info():
function _process (line 69) | def _process(proc_data):
function parse (line 91) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/clf.py
class info (line 175) | class info():
function _process (line 188) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 222) | def parse(
FILE: jc/parsers/clf_s.py
class info (line 91) | class info():
function _process (line 105) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 139) | def parse(
FILE: jc/parsers/crontab.py
class info (line 174) | class info():
function _process (line 188) | def _process(proc_data):
function parse (line 214) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/crontab_u.py
class info (line 171) | class info():
function _process (line 184) | def _process(proc_data):
function parse (line 210) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/csv.py
class info (line 81) | class info():
function _process (line 95) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 113) | def parse(
FILE: jc/parsers/csv_s.py
class info (line 64) | class info():
function _process (line 79) | def _process(proc_data):
function parse (line 97) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/curl_head.py
class info (line 283) | class info():
function _remove_extra_chars (line 298) | def _remove_extra_chars(data: str, verbose: bool) -> str:
function parse (line 309) | def parse(
FILE: jc/parsers/date.py
class info (line 79) | class info():
function _process (line 93) | def _process(proc_data):
function parse (line 109) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/datetime_iso.py
class info (line 70) | class info():
class _ParseError (line 168) | class _ParseError(ValueError):
function _FixedOffset (line 175) | def _FixedOffset(
function _parse_timezone (line 183) | def _parse_timezone(
function _parse_date (line 206) | def _parse_date(
function _process (line 255) | def _process(proc_data):
function parse (line 271) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/debconf_show.py
class info (line 80) | class info():
function _process (line 94) | def _process(proc_data: JSONDictType) -> List[JSONDictType]:
function parse (line 109) | def parse(
FILE: jc/parsers/df.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data):
function _long_filesystem_hash (line 174) | def _long_filesystem_hash(header, line):
function parse (line 200) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/dig.py
class info (line 324) | class info():
function _process (line 338) | def _process(proc_data):
function _parse_header (line 392) | def _parse_header(header):
function _parse_flags_line (line 404) | def _parse_flags_line(flagsline):
function _parse_opt_pseudosection (line 428) | def _parse_opt_pseudosection(optline):
function _parse_question (line 461) | def _parse_question(question):
function _parse_answer (line 473) | def _parse_answer(answer):
function _parse_axfr (line 493) | def _parse_axfr(axfr):
function _parse_footer (line 512) | def _parse_footer(footer):
function parse (line 534) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/dir.py
class info (line 122) | class info():
function _process (line 135) | def _process(proc_data):
function parse (line 164) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/disabled_parser.py
class info (line 7) | class info():
function parse (line 20) | def parse(
FILE: jc/parsers/dmidecode.py
class info (line 126) | class info():
function _process (line 140) | def _process(proc_data):
function parse (line 165) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/dpkg_l.py
class info (line 133) | class info():
function _process (line 147) | def _process(proc_data):
function parse (line 198) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/du.py
class info (line 93) | class info():
function _process (line 107) | def _process(proc_data):
function parse (line 129) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/efibootmgr.py
class info (line 78) | class info():
function _process (line 90) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 110) | def parse(
FILE: jc/parsers/email_address.py
class info (line 43) | class info():
function _process (line 56) | def _process(proc_data: Dict) -> Dict:
function parse (line 71) | def parse(
FILE: jc/parsers/env.py
class info (line 74) | class info():
function _process (line 89) | def _process(proc_data):
function parse (line 111) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ethtool.py
class info (line 173) | class info():
function _process (line 187) | def _process(proc_data: JSONDictType) -> JSONDictType:
function _parse_default (line 245) | def _parse_default(data: str) -> JSONDictType:
function _parse_module_info (line 379) | def _parse_module_info(data: str) -> JSONDictType:
function parse (line 429) | def parse(data: str, raw: bool = False, quiet: bool = False) -> JSONDict...
FILE: jc/parsers/file.py
class info (line 64) | class info():
function _process (line 78) | def _process(proc_data):
function parse (line 94) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/find.py
class info (line 56) | class info():
function _process (line 69) | def _process(proc_data):
function parse (line 111) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/findmnt.py
class info (line 94) | class info():
function _process (line 108) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function _replace (line 144) | def _replace(matchobj):
function parse (line 151) | def parse(
FILE: jc/parsers/finger.py
class info (line 93) | class info():
function _process (line 107) | def _process(proc_data):
function parse (line 155) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/foo.py
class info (line 41) | class info():
function _process (line 64) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 85) | def parse(
FILE: jc/parsers/foo_s.py
class info (line 52) | class info():
function _process (line 77) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 99) | def parse(
FILE: jc/parsers/free.py
class info (line 76) | class info():
function _process (line 90) | def _process(proc_data):
function parse (line 112) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/fstab.py
class info (line 86) | class info():
function _process (line 99) | def _process(proc_data):
function parse (line 121) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/git_log.py
class info (line 224) | class info():
function _process (line 238) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _is_commit_hash (line 273) | def _is_commit_hash(hash_string: str) -> bool:
function _parse_name_email (line 283) | def _parse_name_email(line):
function parse (line 306) | def parse(
FILE: jc/parsers/git_log_s.py
class info (line 95) | class info():
function _process (line 109) | def _process(proc_data: Dict) -> Dict:
function _is_commit_hash (line 143) | def _is_commit_hash(hash_string: str) -> bool:
function parse (line 155) | def parse(
FILE: jc/parsers/git_ls_remote.py
class info (line 67) | class info():
function _process (line 81) | def _process(proc_data: List[JSONDictType]) -> JSONDictType:
function parse (line 105) | def parse(
FILE: jc/parsers/gpg.py
class info (line 121) | class info():
function _process (line 135) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _list_get (line 150) | def _list_get(my_list: List, index: int, default_val=None) -> Optional[s...
function parse (line 158) | def parse(
FILE: jc/parsers/group.py
class info (line 110) | class info():
function _process (line 123) | def _process(proc_data):
function parse (line 148) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/gshadow.py
class info (line 78) | class info():
function _process (line 91) | def _process(proc_data):
function parse (line 113) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/hash.py
class info (line 39) | class info():
function _process (line 52) | def _process(proc_data):
function parse (line 74) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/hashsum.py
class info (line 69) | class info():
function _process (line 85) | def _process(proc_data):
function parse (line 102) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/hciconfig.py
class info (line 318) | class info():
function _process (line 332) | def _process(proc_data):
function parse (line 363) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/history.py
class info (line 64) | class info():
function _process (line 78) | def _process(proc_data):
function parse (line 100) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/host.py
class info (line 89) | class info():
function _process (line 103) | def _process(proc_data):
function parse (line 126) | def parse(data: str, raw: bool = False, quiet: bool = False):
FILE: jc/parsers/hosts.py
class info (line 75) | class info():
function _process (line 88) | def _process(proc_data):
function parse (line 105) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/http_headers.py
class info (line 309) | class info():
function _process (line 413) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 453) | def parse(
FILE: jc/parsers/id.py
class info (line 107) | class info():
function _process (line 121) | def _process(proc_data):
function _get_item (line 149) | def _get_item(my_list, index, default=None):
function parse (line 156) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ifconfig.py
class info (line 220) | class info():
function _convert_cidr_to_quad (line 234) | def _convert_cidr_to_quad(string: str) -> str:
function _process (line 238) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function _bundle_match (line 330) | def _bundle_match(pattern_list, string):
function parse (line 340) | def parse(
FILE: jc/parsers/iftop.py
class info (line 189) | class info:
function _process (line 202) | def _process(proc_data: List[JSONDictType], quiet: bool = False) -> List...
function parse (line 249) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[JSO...
FILE: jc/parsers/ini.py
class info (line 76) | class info():
function _none_to_empty_string (line 90) | def _none_to_empty_string(data):
function _process (line 96) | def _process(proc_data):
function parse (line 125) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ini_dup.py
class info (line 98) | class info():
class MultiDict (line 112) | class MultiDict(dict):
method __setitem__ (line 114) | def __setitem__(self, key, value):
function _process (line 130) | def _process(proc_data):
function parse (line 161) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/iostat.py
class info (line 161) | class info():
function _process (line 175) | def _process(proc_data):
function _normalize_headers (line 210) | def _normalize_headers(line):
function _create_obj_list (line 214) | def _create_obj_list(section_list, section_name):
function parse (line 221) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/iostat_s.py
class info (line 109) | class info():
function _process (line 123) | def _process(proc_data):
function _normalize_headers (line 157) | def _normalize_headers(line):
function _create_obj_list (line 161) | def _create_obj_list(section_list, section_name):
function parse (line 169) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/ip_address.py
class info (line 534) | class info():
function _process (line 547) | def _process(proc_data: Dict) -> Dict:
function _b2a (line 562) | def _b2a(byte_string: bytes) -> str:
function _bin_format (line 574) | def _bin_format(ip: Union[ipaddress.IPv4Address, ipaddress.IPv6Address],...
function parse (line 578) | def parse(
FILE: jc/parsers/ip_route.py
class info (line 51) | class info:
function parse (line 65) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ipconfig.py
class info (line 436) | class info():
function parse (line 450) | def parse(data, raw=False, quiet=False):
function _process_ipv6_address (line 475) | def _process_ipv6_address(ip_address):
function _process_ipv4_address (line 494) | def _process_ipv4_address(ip_address):
function _process (line 505) | def _process(proc_data):
class _PushbackIterator (line 551) | class _PushbackIterator:
method __init__ (line 552) | def __init__(self, iterator):
method __iter__ (line 556) | def __iter__(self):
method __next__ (line 559) | def __next__(self):
method pushback (line 565) | def pushback(self, value):
function _parse (line 569) | def _parse(data):
function _is_adapter_start_line (line 629) | def _is_adapter_start_line(line):
function _initialize_adapter (line 634) | def _initialize_adapter(adapter_name):
function _parse_line (line 672) | def _parse_line(line):
function _parse_header_line (line 685) | def _parse_header_line(result, key, value, line_iter):
function _parse_adapter_line (line 698) | def _parse_adapter_line(adapter, key, value, line_iter):
function _parse_ipv6_address (line 745) | def _parse_ipv6_address(value):
function _parse_ipv4_address (line 760) | def _parse_ipv4_address(value, key, line_iter):
function _parse_additional_entries (line 792) | def _parse_additional_entries(entry_list, line_iter):
FILE: jc/parsers/iptables.py
class info (line 174) | class info():
function _process (line 199) | def _process(proc_data):
function parse (line 239) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/iw_scan.py
class info (line 123) | class info():
function _process (line 138) | def _process(proc_data):
function _post_parse (line 177) | def _post_parse(data):
function parse (line 282) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/iwconfig.py
class info (line 86) | class info():
function _process (line 100) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 126) | def parse(
FILE: jc/parsers/jar_manifest.py
class info (line 79) | class info():
function _process (line 92) | def _process(proc_data):
function parse (line 108) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/jobs.py
class info (line 94) | class info():
function _process (line 108) | def _process(proc_data):
function parse (line 130) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/jwt.py
class info (line 52) | class info():
function _process (line 65) | def _process(proc_data: Dict) -> Dict:
function _b2a (line 80) | def _b2a(byte_string: bytes) -> str:
function parse (line 92) | def parse(
FILE: jc/parsers/kv.py
class info (line 57) | class info():
function parse (line 71) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/kv_dup.py
class info (line 64) | class info():
function parse (line 78) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/last.py
class info (line 111) | class info():
function _process (line 126) | def _process(proc_data):
function parse (line 176) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ls.py
class info (line 119) | class info():
function _process (line 133) | def _process(proc_data):
function parse (line 162) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ls_s.py
class info (line 78) | class info():
function _process (line 92) | def _process(proc_data):
function parse (line 121) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/lsattr.py
class info (line 65) | class info():
function parse (line 110) | def parse(
FILE: jc/parsers/lsb_release.py
class info (line 37) | class info():
function parse (line 52) | def parse(
FILE: jc/parsers/lsblk.py
class info (line 301) | class info():
function _process (line 315) | def _process(proc_data):
function parse (line 348) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/lsmod.py
class info (line 127) | class info():
function _process (line 141) | def _process(proc_data):
function parse (line 163) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/lsof.py
class info (line 121) | class info():
function _process (line 135) | def _process(proc_data):
function parse (line 157) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/lspci.py
class info (line 122) | class info():
function _process (line 136) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 166) | def parse(
FILE: jc/parsers/lsusb.py
class info (line 310) | class info():
function _process (line 324) | def _process(proc_data):
class _NestedDict (line 340) | class _NestedDict(dict):
method __getitem__ (line 344) | def __getitem__(self, key):
class _root_obj (line 350) | class _root_obj:
method __init__ (line 351) | def __init__(self, name):
method _entries_for_this_bus_exist (line 355) | def _entries_for_this_bus_exist(self, bus_idx):
method _update_output (line 365) | def _update_output(self, bus_idx, output_line):
class _descriptor_obj (line 386) | class _descriptor_obj:
method __init__ (line 387) | def __init__(self, name):
method _entries_for_this_bus_and_interface_idx_exist (line 391) | def _entries_for_this_bus_and_interface_idx_exist(self, bus_idx, iface...
method _update_output (line 404) | def _update_output(self, bus_idx, iface_idx, output_line):
class _descriptor_list (line 427) | class _descriptor_list:
method __init__ (line 428) | def __init__(self, name):
method _entries_for_this_bus_and_interface_idx_exist (line 432) | def _entries_for_this_bus_and_interface_idx_exist(self, bus_idx, iface...
method _get_objects_list (line 445) | def _get_objects_list(self, bus_idx, iface_idx):
class _LsUsb (line 489) | class _LsUsb():
method __init__ (line 490) | def __init__(self):
method _count_indent (line 534) | def _count_indent(line):
method _add_attributes (line 543) | def _add_attributes(self, line):
method _add_hub_port_status_attributes (line 600) | def _add_hub_port_status_attributes(self, line):
method _add_device_status_attributes (line 618) | def _add_device_status_attributes(self, line):
method _set_sections (line 626) | def _set_sections(self, line):
method _populate_lists (line 729) | def _populate_lists(self, line):
method _populate_schema (line 768) | def _populate_schema(self):
function parse (line 939) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/m3u.py
class info (line 67) | class info():
function _process (line 80) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 102) | def parse(
FILE: jc/parsers/mdadm.py
class info (line 230) | class info():
function _process (line 244) | def _process(proc_data: Dict) -> Dict:
function parse (line 380) | def parse(
FILE: jc/parsers/mount.py
class info (line 77) | class info():
function _process (line 91) | def _process(proc_data):
function _osx_parse (line 107) | def _osx_parse(data):
function _linux_parse (line 137) | def _linux_parse(data):
function _aix_parse (line 168) | def _aix_parse(data):
function parse (line 200) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/mpstat.py
class info (line 117) | class info():
function _process (line 131) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 160) | def parse(
FILE: jc/parsers/mpstat_s.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data: Dict) -> Dict:
function parse (line 145) | def parse(
FILE: jc/parsers/needrestart.py
class info (line 76) | class info():
function _process (line 90) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 124) | def parse(
FILE: jc/parsers/net_localgroup.py
class info (line 55) | class info():
function parse (line 69) | def parse(data, raw=False, quiet=False):
function _process (line 93) | def _process(proc_data):
class _PushbackIterator (line 108) | class _PushbackIterator:
method __init__ (line 109) | def __init__(self, iterator):
method __iter__ (line 112) | def __iter__(self):
method __next__ (line 114) | def __next__(self):
method pushback (line 119) | def pushback(self, value):
function _parse_net_localgroup_list (line 122) | def _parse_net_localgroup_list(line_iter, expect_asterisk):
function _parse (line 142) | def _parse(data):
FILE: jc/parsers/net_user.py
class info (line 187) | class info():
function parse (line 201) | def parse(data, raw=False, quiet=False):
function _set_if_not_none (line 227) | def _set_if_not_none(output_dict, key, value):
function _process_string_is_yes (line 231) | def _process_string_is_yes(text):
function _process_date (line 237) | def _process_date(s):
function _process (line 246) | def _process(proc_data):
class _PushbackIterator (line 273) | class _PushbackIterator:
method __init__ (line 274) | def __init__(self, iterator):
method __iter__ (line 277) | def __iter__(self):
method __next__ (line 279) | def __next__(self):
method pushback (line 284) | def pushback(self, value):
function _parse_user_account_keypairs (line 287) | def _parse_user_account_keypairs(keypair_dict):
function _parse_groups (line 312) | def _parse_groups(line_iter):
function _parse (line 337) | def _parse(data):
FILE: jc/parsers/netstat.py
class info (line 356) | class info():
function _process (line 371) | def _process(proc_data):
function parse (line 417) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/netstat_freebsd_osx.py
function normalize_headers (line 4) | def normalize_headers(header):
function normalize_route_headers (line 16) | def normalize_route_headers(header):
function normalize_interface_headers (line 26) | def normalize_interface_headers(header):
function parse_item (line 34) | def parse_item(headers, entry, kind):
function parse_post (line 60) | def parse_post(raw_data):
function parse (line 139) | def parse(cleandata):
FILE: jc/parsers/netstat_linux.py
function normalize_headers (line 6) | def normalize_headers(header):
function normalize_route_headers (line 18) | def normalize_route_headers(header):
function normalize_interface_headers (line 27) | def normalize_interface_headers(header):
function parse_network (line 34) | def parse_network(headers, entry):
function parse_socket (line 57) | def parse_socket(header_text, headers, entry):
function parse_route (line 91) | def parse_route(headers, entry):
function parse_interface (line 99) | def parse_interface(headers, entry):
function parse_post (line 107) | def parse_post(raw_data):
function parse (line 191) | def parse(cleandata):
FILE: jc/parsers/netstat_windows.py
function normalize_headers (line 10) | def normalize_headers(headers: str):
function parse (line 22) | def parse(cleandata: List[str]):
FILE: jc/parsers/nmcli.py
class info (line 153) | class info():
function _process (line 167) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _normalize_key (line 203) | def _normalize_key(keyname: str) -> str:
function _normalize_value (line 212) | def _normalize_value(value: str) -> Optional[str]:
function _normalize_header (line 224) | def _normalize_header(keyname: str) -> str:
function _add_text_kv (line 232) | def _add_text_kv(key: str, value: Optional[str]) -> Optional[Dict]:
function _remove_text_from_value (line 247) | def _remove_text_from_value(value: Optional[str]) -> Optional[str]:
function _split_routes (line 258) | def _split_routes(value: str) -> Dict:
function _split_options (line 270) | def _split_options(value: str) -> Dict:
function _device_show_parse (line 281) | def _device_show_parse(data: str) -> List[Dict]:
function _connection_show_x_parse (line 316) | def _connection_show_x_parse(data: str) -> List[Dict]:
function _general_permissions_parse (line 375) | def _general_permissions_parse(data: str) -> List[Dict]:
function _table_parse (line 389) | def _table_parse(data: str) -> List[Dict]:
function parse (line 401) | def parse(
FILE: jc/parsers/nsd_control.py
class info (line 70) | class info():
function _process (line 84) | def _process(proc_data):
function parse (line 106) | def parse(data: str, raw: bool = False, quiet: bool = False):
FILE: jc/parsers/ntpq.py
class info (line 208) | class info():
function _process (line 222) | def _process(proc_data):
function parse (line 253) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/openvpn.py
class info (line 157) | class info():
function _split_addr (line 170) | def _split_addr(addr_str: str) -> Tuple:
function _process (line 198) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 252) | def parse(
FILE: jc/parsers/os_prober.py
class info (line 43) | class info():
function _process (line 57) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 78) | def parse(
FILE: jc/parsers/os_release.py
class info (line 62) | class info():
function parse (line 76) | def parse(
FILE: jc/parsers/pacman.py
class info (line 181) | class info():
function _process (line 195) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 268) | def parse(
FILE: jc/parsers/passwd.py
class info (line 95) | class info():
function _process (line 108) | def _process(proc_data):
function parse (line 130) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/path.py
class info (line 49) | class info():
function _process (line 62) | def _process(proc_data: Dict) -> Dict:
function parse (line 78) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/path_list.py
class info (line 69) | class info():
function parse (line 82) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/pbPlist/StrParse.py
function unichr (line 34) | def unichr(character): # pylint: disable=redefined-builtin
function ConvertNEXTSTEPToUnicode (line 38) | def ConvertNEXTSTEPToUnicode(hex_digits):
function IsOctalNumber (line 172) | def IsOctalNumber(character):
function IsHexNumber (line 176) | def IsHexNumber(character):
function SanitizeCharacter (line 180) | def SanitizeCharacter(character):
function UnQuotifyString (line 197) | def UnQuotifyString(string_data, start_index, end_index): # pylint: disa...
function LineNumberForIndex (line 260) | def LineNumberForIndex(string_data, current_index):
function IsValidUnquotedStringCharacter (line 271) | def IsValidUnquotedStringCharacter(character):
function IsSpecialWhitespace (line 279) | def IsSpecialWhitespace(character):
function IsUnicodeSeparator (line 284) | def IsUnicodeSeparator(character):
function IsRegularWhitespace (line 289) | def IsRegularWhitespace(character):
function IsDataFormattingWhitespace (line 294) | def IsDataFormattingWhitespace(character):
function IsNewline (line 299) | def IsNewline(character):
function IsEndOfLine (line 304) | def IsEndOfLine(character):
function IndexOfNextNonSpace (line 308) | def IndexOfNextNonSpace(string_data, current_index): # pylint: disable=t...
FILE: jc/parsers/pbPlist/Switch.py
class Switch (line 33) | class Switch(object):
method __init__ (line 34) | def __init__(self, value):
method __iter__ (line 38) | def __iter__(self):
method match (line 42) | def match(self, *args):
FILE: jc/parsers/pbPlist/pbItem.py
function PushIndent (line 33) | def PushIndent(indent_level):
function PopIndent (line 36) | def PopIndent(indent_level):
function WriteIndent (line 39) | def WriteIndent(level=0):
function WriteNewline (line 45) | def WriteNewline(level=0, indent=True):
class pbItem (line 51) | class pbItem(object):
method __init__ (line 52) | def __init__(self, value=None, type_name=None, annotation=None):
method __eq__ (line 64) | def __eq__(self, other):
method __hash__ (line 72) | def __hash__(self):
method __repr__ (line 75) | def __repr__(self):
method __iter__ (line 78) | def __iter__(self):
method __getattr__ (line 81) | def __getattr__(self, attrib):
method __str__ (line 84) | def __str__(self):
method __getitem__ (line 87) | def __getitem__(self, key):
method __setitem__ (line 90) | def __setitem__(self, key, value):
method __len__ (line 93) | def __len__(self):
method __contains__ (line 96) | def __contains__(self, item):
method __get__ (line 99) | def __get__(self, obj, objtype):
method writeStringRep (line 102) | def writeStringRep(self, indent_level=0, pretty=True):
method writeString (line 105) | def writeString(self, indent_level=0, pretty=True): # pylint: disable=...
method nativeType (line 109) | def nativeType(self):
method writeAnnotation (line 112) | def writeAnnotation(self):
class pbString (line 121) | class pbString(pbItem):
method writeString (line 122) | def writeString(self, indent_level=0, pretty=True):
class pbQString (line 129) | class pbQString(pbItem):
method writeStringRep (line 130) | def writeStringRep(self, indent_level=0, pretty=True):
method writeString (line 136) | def writeString(self, indent_level=0, pretty=True):
class pbData (line 146) | class pbData(pbItem):
method writeString (line 147) | def writeString(self, indent_level=0, pretty=True):
class pbDictionary (line 172) | class pbDictionary(pbItem):
method nativeType (line 173) | def nativeType(self):
method writeString (line 179) | def writeString(self, indent_level=0, pretty=True):
class pbArray (line 223) | class pbArray(pbItem):
method nativeType (line 224) | def nativeType(self):
method writeString (line 227) | def writeString(self, indent_level=0, pretty=True):
function pbItemResolver (line 256) | def pbItemResolver(obj, type_name):
FILE: jc/parsers/pbPlist/pbParser.py
function GetFileEncoding (line 40) | def GetFileEncoding(path):
function OpenFileWithEncoding (line 64) | def OpenFileWithEncoding(file_path, encoding):
function OpenFile (line 68) | def OpenFile(file_path):
class PBParser (line 72) | class PBParser(object):
method __init__ (line 74) | def __init__(self, file_path=None):
method read (line 92) | def read(self):
method __readTest (line 120) | def __readTest(self, requires_object=True):
method __parse (line 134) | def __parse(self, requires_object=True):
method __parseUnquotedString (line 166) | def __parseUnquotedString(self):
method __parseQuotedString (line 181) | def __parseQuotedString(self):
method __parseData (line 202) | def __parseData(self):
method __parseArray (line 230) | def __parseArray(self):
method __parseDict (line 250) | def __parseDict(self):
FILE: jc/parsers/pbPlist/pbPlist.py
class PBPlist (line 35) | class PBPlist(object):
method __init__ (line 37) | def __init__(self, file_path):
method write (line 46) | def write(self, file_path=None):
method __checkFile (line 52) | def __checkFile(self, file_path):
FILE: jc/parsers/pbPlist/pbRoot.py
function StringCmp (line 42) | def StringCmp(obj1, obj2):
function KeySorter (line 50) | def KeySorter(obj1, obj2):
class pbRoot (line 60) | class pbRoot(collections.abc.MutableMapping):
method __init__ (line 62) | def __init__(self, *args, **kwargs):
method __internalKeyCheck (line 67) | def __internalKeyCheck(self, key): # pylint: disable=no-self-use
method __getitem__ (line 73) | def __getitem__(self, key):
method __setitem__ (line 76) | def __setitem__(self, key, value):
method __delitem__ (line 81) | def __delitem__(self, key):
method __iter__ (line 86) | def __iter__(self):
method __len__ (line 89) | def __len__(self):
method __str__ (line 92) | def __str__(self):
method __contains__ (line 95) | def __contains__(self, item):
method __getattr__ (line 98) | def __getattr__(self, attrib):
method __keytransform__ (line 101) | def __keytransform__(self, key): # pylint: disable=no-self-use
method sortedKeys (line 107) | def sortedKeys(self):
FILE: jc/parsers/pbPlist/pbSerializer.py
class PBSerializer (line 35) | class PBSerializer(object):
method __init__ (line 37) | def __init__(self, file_path=None, encoding=None, file_type=None):
method write (line 42) | def write(self, obj=None):
method __writeObject (line 66) | def __writeObject(self, file_descriptor=None, obj=None):
FILE: jc/parsers/pci_ids.py
class info (line 77) | class info():
function _process (line 90) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 105) | def parse(
FILE: jc/parsers/pgpass.py
class info (line 50) | class info():
function _process (line 63) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 78) | def parse(
FILE: jc/parsers/pidstat.py
class info (line 132) | class info():
function _process (line 146) | def _process(proc_data: List[Dict]) -> List[Dict]:
function normalize_header (line 180) | def normalize_header(header: str) -> str:
function parse (line 188) | def parse(
FILE: jc/parsers/pidstat_s.py
class info (line 88) | class info():
function _process (line 102) | def _process(proc_data: Dict) -> Dict:
function normalize_header (line 135) | def normalize_header(header: str) -> str:
function parse (line 144) | def parse(
FILE: jc/parsers/ping.py
class info (line 168) | class info():
function _process (line 182) | def _process(proc_data):
function _ipv6_in (line 223) | def _ipv6_in(line):
function _error_type (line 235) | def _error_type(line):
function _linux_parse (line 271) | def _linux_parse(data):
function _bsd_parse (line 441) | def _bsd_parse(data):
function parse (line 635) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ping_s.py
class info (line 89) | class info():
function _process (line 103) | def _process(proc_data):
class _state (line 136) | class _state:
function _ipv6_in (line 160) | def _ipv6_in(line):
function _error_type_v4 (line 172) | def _error_type_v4(line):
function _error_type_v6 (line 210) | def _error_type_v6(line):
function _bsd_parse (line 241) | def _bsd_parse(line, s):
function _linux_parse (line 383) | def _linux_parse(line, s):
function parse (line 569) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/pip_list.py
class info (line 49) | class info():
function _process (line 63) | def _process(proc_data):
function parse (line 79) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/pip_show.py
class info (line 67) | class info():
function _process (line 81) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 97) | def parse(
FILE: jc/parsers/pkg_index_apk.py
class info (line 103) | class info:
function _value (line 136) | def _value(key: str, value: str) -> Union[str, int, List[str], Dict[str,...
function _process (line 166) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 181) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[Dict]:
FILE: jc/parsers/pkg_index_deb.py
class info (line 128) | class info():
function parse (line 142) | def parse(
FILE: jc/parsers/plist.py
class info (line 60) | class info():
function _process (line 74) | def _process(proc_data: Dict) -> Dict:
function _b2a (line 89) | def _b2a(byte_string: bytes) -> str:
function _fix_objects (line 101) | def _fix_objects(obj):
function parse (line 140) | def parse(
FILE: jc/parsers/postconf.py
class info (line 92) | class info():
function _process (line 106) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 145) | def parse(
FILE: jc/parsers/proc.py
class info (line 127) | class info():
function parse (line 140) | def parse(
FILE: jc/parsers/proc_buddyinfo.py
class info (line 104) | class info():
function _process (line 118) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 143) | def parse(
FILE: jc/parsers/proc_cmdline.py
class info (line 70) | class info():
function _process (line 84) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 99) | def parse(
FILE: jc/parsers/proc_consoles.py
class info (line 88) | class info():
function _process (line 102) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 124) | def parse(
FILE: jc/parsers/proc_cpuinfo.py
class info (line 223) | class info():
function _process (line 237) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 291) | def parse(
FILE: jc/parsers/proc_crypto.py
class info (line 119) | class info():
function _process (line 133) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 158) | def parse(
FILE: jc/parsers/proc_devices.py
class info (line 79) | class info():
function _process (line 93) | def _process(proc_data: Dict) -> Dict:
function parse (line 108) | def parse(
FILE: jc/parsers/proc_diskstats.py
class info (line 179) | class info():
function _process (line 193) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 213) | def parse(
FILE: jc/parsers/proc_driver_rtc.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data: Dict) -> Dict:
function parse (line 143) | def parse(
FILE: jc/parsers/proc_filesystems.py
class info (line 57) | class info():
function _process (line 71) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 86) | def parse(
FILE: jc/parsers/proc_interrupts.py
class info (line 109) | class info():
function _process (line 123) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 141) | def parse(
FILE: jc/parsers/proc_iomem.py
class info (line 61) | class info():
function _process (line 75) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 90) | def parse(
FILE: jc/parsers/proc_ioports.py
class info (line 62) | class info():
function _process (line 76) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 91) | def parse(
FILE: jc/parsers/proc_loadavg.py
class info (line 64) | class info():
function _process (line 78) | def _process(proc_data: Dict) -> Dict:
function parse (line 103) | def parse(
FILE: jc/parsers/proc_locks.py
class info (line 106) | class info():
function _process (line 120) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 142) | def parse(
FILE: jc/parsers/proc_meminfo.py
class info (line 94) | class info():
function _process (line 108) | def _process(proc_data: Dict) -> Dict:
function parse (line 123) | def parse(
FILE: jc/parsers/proc_modules.py
class info (line 108) | class info():
function _process (line 122) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 144) | def parse(
FILE: jc/parsers/proc_mtrr.py
class info (line 88) | class info():
function _process (line 102) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 124) | def parse(
FILE: jc/parsers/proc_net_arp.py
class info (line 58) | class info():
function _process (line 72) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 87) | def parse(
FILE: jc/parsers/proc_net_dev.py
class info (line 104) | class info():
function _process (line 118) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 143) | def parse(
FILE: jc/parsers/proc_net_dev_mcast.py
class info (line 82) | class info():
function _process (line 96) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 121) | def parse(
FILE: jc/parsers/proc_net_if_inet6.py
class info (line 65) | class info():
function _process (line 79) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 94) | def parse(
FILE: jc/parsers/proc_net_igmp.py
class info (line 128) | class info():
function _process (line 142) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 170) | def parse(
FILE: jc/parsers/proc_net_igmp6.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 138) | def parse(
FILE: jc/parsers/proc_net_ipv6_route.py
class info (line 66) | class info():
function _process (line 80) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 95) | def parse(
FILE: jc/parsers/proc_net_netlink.py
class info (line 107) | class info():
function _process (line 121) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 143) | def parse(
FILE: jc/parsers/proc_net_netstat.py
class info (line 301) | class info():
function _process (line 315) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 335) | def parse(
FILE: jc/parsers/proc_net_packet.py
class info (line 72) | class info():
function _process (line 86) | def _process(proc_data: Dict) -> Dict:
function parse (line 107) | def parse(
FILE: jc/parsers/proc_net_protocols.py
class info (line 134) | class info():
function _process (line 148) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 174) | def parse(
FILE: jc/parsers/proc_net_route.py
class info (line 86) | class info():
function _process (line 100) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 123) | def parse(
FILE: jc/parsers/proc_net_tcp.py
class info (line 172) | class info():
function hex_to_ip (line 186) | def hex_to_ip(hexaddr: str) -> str:
function _process (line 204) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 249) | def parse(
FILE: jc/parsers/proc_net_unix.py
class info (line 77) | class info():
function _process (line 91) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 113) | def parse(
FILE: jc/parsers/proc_pagetypeinfo.py
class info (line 117) | class info():
function _process (line 131) | def _process(proc_data: Dict) -> Dict:
function parse (line 146) | def parse(
FILE: jc/parsers/proc_partitions.py
class info (line 77) | class info():
function _process (line 91) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 113) | def parse(
FILE: jc/parsers/proc_pid_fdinfo.py
class info (line 104) | class info():
function _process (line 118) | def _process(proc_data: Dict) -> Dict:
function parse (line 152) | def parse(
FILE: jc/parsers/proc_pid_io.py
class info (line 50) | class info():
function _process (line 64) | def _process(proc_data: Dict) -> Dict:
function parse (line 79) | def parse(
FILE: jc/parsers/proc_pid_maps.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 163) | def parse(
FILE: jc/parsers/proc_pid_mountinfo.py
class info (line 147) | class info():
function _process (line 161) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 214) | def parse(
FILE: jc/parsers/proc_pid_numa_maps.py
class info (line 103) | class info():
function _process (line 117) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 139) | def parse(
FILE: jc/parsers/proc_pid_smaps.py
class info (line 169) | class info():
function _process (line 183) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 253) | def parse(
FILE: jc/parsers/proc_pid_stat.py
class info (line 203) | class info():
function _process (line 217) | def _process(proc_data: Dict) -> Dict:
function parse (line 257) | def parse(
FILE: jc/parsers/proc_pid_statm.py
class info (line 54) | class info():
function _process (line 68) | def _process(proc_data: Dict) -> Dict:
function parse (line 83) | def parse(
FILE: jc/parsers/proc_pid_status.py
class info (line 271) | class info():
function _process (line 285) | def _process(proc_data: Dict) -> Dict:
function parse (line 333) | def parse(
FILE: jc/parsers/proc_slabinfo.py
class info (line 76) | class info():
function _process (line 90) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 105) | def parse(
FILE: jc/parsers/proc_softirqs.py
class info (line 62) | class info():
function _process (line 76) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 91) | def parse(
FILE: jc/parsers/proc_stat.py
class info (line 137) | class info():
function _process (line 151) | def _process(proc_data: Dict) -> Dict:
function parse (line 166) | def parse(
FILE: jc/parsers/proc_swaps.py
class info (line 68) | class info():
function _process (line 82) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 104) | def parse(
FILE: jc/parsers/proc_uptime.py
class info (line 44) | class info():
function _process (line 58) | def _process(proc_data: Dict) -> Dict:
function parse (line 73) | def parse(
FILE: jc/parsers/proc_version.py
class info (line 56) | class info():
function _process (line 82) | def _process(proc_data: Dict) -> Dict:
function parse (line 97) | def parse(
FILE: jc/parsers/proc_vmallocinfo.py
class info (line 102) | class info():
function _process (line 116) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 139) | def parse(
FILE: jc/parsers/proc_vmstat.py
class info (line 60) | class info():
function _process (line 74) | def _process(proc_data: Dict) -> Dict:
function parse (line 89) | def parse(
FILE: jc/parsers/proc_zoneinfo.py
class info (line 310) | class info():
function _process (line 324) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 339) | def parse(
FILE: jc/parsers/ps.py
class info (line 208) | class info():
function _process (line 222) | def _process(proc_data):
function parse (line 266) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/pyedid/edid.py
class Edid (line 21) | class Edid:
method __init__ (line 110) | def __init__(self, edid: bytes):
method _parse_edid (line 113) | def _parse_edid(self, edid: bytes):
method __repr__ (line 183) | def __repr__(self):
FILE: jc/parsers/pyedid/helpers/edid_helper.py
class EdidHelper (line 11) | class EdidHelper:
method hex2bytes (line 15) | def hex2bytes(hex_data: str) -> bytes:
method get_edids (line 35) | def get_edids(cls) -> List[bytes]:
FILE: jc/parsers/pyedid/helpers/registry.py
class WebPnpIdParser (line 13) | class WebPnpIdParser(HTMLParser):
method __init__ (line 22) | def __init__(self, *args, **kwargs):
method handle_starttag (line 31) | def handle_starttag(self, tag, attrs):
method handle_endtag (line 37) | def handle_endtag(self, tag):
method handle_data (line 49) | def handle_data(self, data):
method error (line 59) | def error(self, message):
class Registry (line 63) | class Registry(dict):
method from_web (line 71) | def from_web(cls, filter_by_id: str = None):
method from_csv (line 99) | def from_csv(cls, csv_path: str, filter_by_id: str = None):
method to_csv (line 121) | def to_csv(self, csv_path: str):
method get_company_from_id (line 128) | def get_company_from_id(self, pnp_id: str) -> str:
method get_company_from_raw (line 132) | def get_company_from_raw(self, raw: int) -> str:
FILE: jc/parsers/pyedid/main.py
function main (line 10) | def main():
FILE: jc/parsers/resolve_conf.py
class info (line 61) | class info():
function _process (line 74) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 89) | def parse(
FILE: jc/parsers/route.py
class info (line 115) | class info():
function _process (line 129) | def _process(proc_data):
function normalize_headers (line 181) | def normalize_headers(headers: str):
function parse (line 192) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/route_print.py
class info (line 178) | class info():
function parse (line 193) | def parse(data, raw=False, quiet=False):
function _process (line 231) | def _process(proc_data):
class _PushbackIterator (line 295) | class _PushbackIterator:
method __init__ (line 299) | def __init__(self, iterator):
method __iter__ (line 303) | def __iter__(self):
method __next__ (line 306) | def __next__(self):
method pushback (line 312) | def pushback(self, value):
method contains (line 315) | def contains(self, pattern):
method skip_until (line 328) | def skip_until(self, pattern):
function _parse_interface_list (line 335) | def _parse_interface_list(data, lines_iter):
function _parse_ipv4_route_table (line 351) | def _parse_ipv4_route_table(data, lines_iter):
function _parse_ipv6_route_table (line 403) | def _parse_ipv6_route_table(data, lines_iter):
FILE: jc/parsers/route_windows.py
function get_lines_until_seperator (line 24) | def get_lines_until_seperator(iterator):
function normalize_route_table (line 33) | def normalize_route_table(route_table: List[str]):
function parse (line 61) | def parse(cleandata: List[str]):
FILE: jc/parsers/rpm_qi.py
class info (line 186) | class info():
function _process (line 200) | def _process(proc_data):
function parse (line 240) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/rsync.py
class info (line 138) | class info():
function _process (line 152) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 210) | def parse(
FILE: jc/parsers/rsync_s.py
class info (line 89) | class info():
function _process (line 103) | def _process(proc_data: Dict) -> Dict:
function parse (line 156) | def parse(
FILE: jc/parsers/semver.py
class info (line 55) | class info():
function _process (line 68) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 89) | def parse(
FILE: jc/parsers/sfdisk.py
class info (line 204) | class info():
function _process (line 218) | def _process(proc_data):
function parse (line 261) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/shadow.py
class info (line 102) | class info():
function _process (line 115) | def _process(proc_data):
function parse (line 137) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/srt.py
class info (line 95) | class info():
function _process (line 187) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse_timestamp (line 221) | def parse_timestamp(timestamp: str) -> Dict:
function parse (line 245) | def parse(
FILE: jc/parsers/ss.py
class info (line 296) | class info():
function _process (line 310) | def _process(proc_data):
function _parse_opts (line 341) | def _parse_opts(proc_data):
function parse (line 399) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ssh_conf.py
class info (line 523) | class info():
function _process (line 537) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 593) | def parse(
FILE: jc/parsers/sshd_conf.py
class info (line 484) | class info():
function _process (line 498) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 588) | def parse(
FILE: jc/parsers/stat.py
class info (line 172) | class info():
function _process (line 186) | def _process(proc_data):
function parse (line 219) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/stat_s.py
class info (line 85) | class info():
function _process (line 99) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 135) | def parse(
FILE: jc/parsers/swapon.py
class info (line 47) | class info:
class _Column (line 64) | class _Column(Enum):
method from_header (line 74) | def from_header(cls, header: str) -> "_Column":
function _parse_size (line 93) | def _parse_size(size: str) -> int:
function _value (line 111) | def _value(value: str, column: _Column) -> _Value:
function _process (line 120) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 135) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[_En...
FILE: jc/parsers/sysctl.py
class info (line 58) | class info():
function _process (line 72) | def _process(proc_data):
function parse (line 95) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/syslog.py
class info (line 109) | class info():
function _extract_structs (line 131) | def _extract_structs(structs_string: str) -> List[str]:
function _extract_ident (line 143) | def _extract_ident(struct_string) -> Optional[str]:
function _extract_kv (line 151) | def _extract_kv(struct_string) -> List[Dict]:
function _process (line 169) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 229) | def parse(
FILE: jc/parsers/syslog_bsd.py
class info (line 61) | class info():
function _process (line 74) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 96) | def parse(
FILE: jc/parsers/syslog_bsd_s.py
class info (line 64) | class info():
function _process (line 78) | def _process(proc_data: Dict) -> Dict:
function parse (line 100) | def parse(
FILE: jc/parsers/syslog_s.py
class info (line 87) | class info():
function _extract_structs (line 110) | def _extract_structs(structs_string: str) -> List[str]:
function _extract_ident (line 122) | def _extract_ident(struct_string) -> Optional[str]:
function _extract_kv (line 130) | def _extract_kv(struct_string) -> List[Dict]:
function _process (line 148) | def _process(proc_data: Dict) -> Dict:
function parse (line 208) | def parse(
FILE: jc/parsers/systemctl.py
class info (line 59) | class info():
function _process (line 73) | def _process(proc_data):
function parse (line 89) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/systemctl_lj.py
class info (line 76) | class info():
function _process (line 90) | def _process(proc_data):
function parse (line 112) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/systemctl_ls.py
class info (line 52) | class info():
function _process (line 66) | def _process(proc_data):
function parse (line 82) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/systemctl_luf.py
class info (line 48) | class info():
function _process (line 62) | def _process(proc_data):
function parse (line 78) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/systeminfo.py
class info (line 213) | class info:
function _process (line 227) | def _process(proc_data):
function parse (line 304) | def parse(data, raw=False, quiet=False):
function _parse_hotfixs_or_processors (line 380) | def _parse_hotfixs_or_processors(data):
function _parse_hyperv_requirements (line 409) | def _parse_hyperv_requirements(data):
function _parse_network_cards (line 427) | def _parse_network_cards(data):
function _convert_to_boolean (line 474) | def _convert_to_boolean(value):
function _convert_to_int (line 484) | def _convert_to_int(value):
function _default_nic (line 498) | def _default_nic():
function _get_value_pos (line 512) | def _get_value_pos(line, delim):
function _transform_key (line 527) | def _transform_key(key):
FILE: jc/parsers/time.py
class info (line 133) | class info():
function _process (line 146) | def _process(proc_data):
function parse (line 205) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/timedatectl.py
class info (line 84) | class info():
function _process (line 98) | def _process(proc_data):
function parse (line 139) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/timestamp.py
class info (line 98) | class info():
function _process (line 111) | def _process(proc_data):
function parse (line 127) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/toml.py
class info (line 60) | class info():
function _process (line 74) | def _process(proc_data: JSONDictType) -> JSONDictType:
function _fix_objects (line 89) | def _fix_objects(obj: Any) -> JSONDictType:
function parse (line 123) | def parse(
FILE: jc/parsers/tomli/_parser.py
class TOMLDecodeError (line 51) | class TOMLDecodeError(ValueError):
function load (line 55) | def load(__fp, *, parse_float=float):
function loads (line 67) | def loads(__s, *, parse_float=float):
class Flags (line 133) | class Flags:
method __init__ (line 142) | def __init__(self):
method add_pending (line 146) | def add_pending(self, key, flag):
method finalize_pending (line 149) | def finalize_pending(self):
method unset_all (line 154) | def unset_all(self, key):
method set (line 162) | def set(self, key, flag, *, recursive):
method is_ (line 173) | def is_(self, key, flag):
class NestedDict (line 191) | class NestedDict:
method __init__ (line 192) | def __init__(self):
method get_or_create_nest (line 196) | def get_or_create_nest(
method append_nest_to_list (line 213) | def append_nest_to_list(self, key):
function skip_chars (line 232) | def skip_chars(src: str, pos, chars):
function skip_until (line 241) | def skip_until(
function skip_comment (line 263) | def skip_comment(src, pos):
function skip_comments_and_array_ws (line 275) | def skip_comments_and_array_ws(src, pos):
function create_dict_rule (line 284) | def create_dict_rule(src, pos, out):
function create_list_rule (line 302) | def create_list_rule(src: str, pos, out):
function key_value_rule (line 323) | def key_value_rule(
function parse_key_value_pair (line 357) | def parse_key_value_pair(
function parse_key (line 373) | def parse_key(src, pos):
function parse_key_part (line 391) | def parse_key_part(src, pos):
function parse_one_line_basic_str (line 407) | def parse_one_line_basic_str(src, pos):
function parse_array (line 412) | def parse_array(src, pos, parse_float):
function parse_inline_table (line 436) | def parse_inline_table(src, pos, parse_float):
function parse_basic_str_escape (line 468) | def parse_basic_str_escape(
function parse_basic_str_escape_multiline (line 497) | def parse_basic_str_escape_multiline(src, pos):
function parse_hex_char (line 501) | def parse_hex_char(src, pos, hex_len):
function parse_literal_str (line 512) | def parse_literal_str(src, pos):
function parse_multiline_str (line 521) | def parse_multiline_str(src, pos, *, literal):
function parse_basic_str (line 552) | def parse_basic_str(src, pos, *, multiline):
function parse_value (line 584) | def parse_value( # noqa: C901
function suffixed_err (line 652) | def suffixed_err(src, pos, msg):
function is_unicode_scalar_value (line 669) | def is_unicode_scalar_value(codepoint: int) -> bool:
function make_safe_parse_float (line 673) | def make_safe_parse_float(parse_float):
FILE: jc/parsers/tomli/_re.py
function match_to_datetime (line 46) | def match_to_datetime(match):
function cached_tz (line 82) | def cached_tz(hour_str, minute_str, sign_str):
function match_to_localtime (line 92) | def match_to_localtime(match):
function match_to_number (line 98) | def match_to_number(match, parse_float):
FILE: jc/parsers/top.py
class info (line 330) | class info():
function _safe_split (line 344) | def _safe_split(string: str, path: str, delim: str = ' ', quiet=False) -...
function _process (line 354) | def _process(proc_data: List[Dict], quiet=False) -> List[Dict]:
function parse (line 562) | def parse(
FILE: jc/parsers/top_s.py
class info (line 175) | class info():
function _safe_split (line 189) | def _safe_split(string: str, path: str, delim: str = ' ', quiet=False) -...
function _process (line 199) | def _process(proc_data: Dict, idx=0, quiet=False) -> Dict:
function parse (line 407) | def parse(
FILE: jc/parsers/tracepath.py
class info (line 133) | class info():
function _process (line 147) | def _process(proc_data):
function parse (line 182) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/traceroute.py
class info (line 131) | class info():
class _Traceroute (line 185) | class _Traceroute(object):
method __init__ (line 186) | def __init__(self, dest_name, dest_ip, max_hops=None, data_bytes=None):
method add_hop (line 193) | def add_hop(self, hop):
method __str__ (line 196) | def __str__(self):
class _Hop (line 203) | class _Hop(object):
method __init__ (line 204) | def __init__(self, idx):
method add_probe (line 208) | def add_probe(self, probe):
method __str__ (line 217) | def __str__(self):
class _Probe (line 230) | class _Probe(object):
method __init__ (line 231) | def __init__(self, name=None, ip=None, asn=None, rtt=None, annotation=...
method __str__ (line 238) | def __str__(self):
function _get_probes (line 252) | def _get_probes(hop_string: str):
function _loads (line 304) | def _loads(data: str, quiet: bool):
function _serialize_hop (line 366) | def _serialize_hop(hop: _Hop):
function _process (line 387) | def _process(proc_data):
function parse (line 417) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/traceroute_s.py
class info (line 144) | class info():
function _hop_output (line 186) | def _hop_output(hop: _Hop, raw: bool):
function parse (line 196) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/tune2fs.py
class info (line 212) | class info():
function _process (line 226) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 264) | def parse(
FILE: jc/parsers/udevadm.py
class info (line 120) | class info():
function _process (line 134) | def _process(proc_data: JSONDictType) -> JSONDictType:
function parse (line 152) | def parse(
FILE: jc/parsers/ufw.py
class info (line 203) | class info():
function _process (line 217) | def _process(proc_data):
function _parse_to_from (line 249) | def _parse_to_from(linedata, direction, rule_obj=None):
function parse (line 387) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/ufw_appinfo.py
class info (line 139) | class info():
function _process (line 153) | def _process(proc_data):
function _parse_port_list (line 218) | def _parse_port_list(data, port_list=None):
function _parse_port_range (line 233) | def _parse_port_range(data, range_list=None):
function parse (line 263) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/uname.py
class info (line 49) | class info():
function _process (line 63) | def _process(proc_data):
function parse (line 79) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/universal.py
function simple_table_parse (line 5) | def simple_table_parse(data: Iterable[str]) -> List[Dict]:
function sparse_table_parse (line 50) | def sparse_table_parse(data: Iterable[str], delim: str = '\u2063') -> Li...
FILE: jc/parsers/update_alt_gs.py
class info (line 47) | class info():
function _process (line 61) | def _process(proc_data: List[Dict]) -> List[Dict]:
function parse (line 77) | def parse(
FILE: jc/parsers/update_alt_q.py
class info (line 133) | class info():
function _process (line 147) | def _process(proc_data: Dict) -> Dict:
function parse (line 174) | def parse(
FILE: jc/parsers/upower.py
class info (line 199) | class info():
function _process (line 213) | def _process(proc_data):
function parse (line 318) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/uptime.py
class info (line 66) | class info():
function _process (line 80) | def _process(proc_data):
function parse (line 145) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/url.py
class info (line 241) | class info():
function _process (line 254) | def _process(proc_data: Dict) -> Dict:
function parse (line 269) | def parse(
FILE: jc/parsers/ver.py
class info (line 90) | class info():
function _process (line 104) | def _process(proc_data: JSONDictType) -> JSONDictType:
function _strict_parse (line 135) | def _strict_parse(vstring):
function _loose_parse (line 161) | def _loose_parse(vstring):
function parse (line 168) | def parse(
FILE: jc/parsers/veracrypt.py
class info (line 84) | class info():
function _parse_volume (line 145) | def _parse_volume(next_lines: List[str]) -> Optional[Volume]:
function parse (line 216) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[JSO...
FILE: jc/parsers/vmstat.py
class info (line 131) | class info():
function _process (line 145) | def _process(proc_data):
function parse (line 180) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/vmstat_s.py
class info (line 105) | class info():
function _process (line 119) | def _process(proc_data):
function parse (line 153) | def parse(data, raw=False, quiet=False, ignore_exceptions=False):
FILE: jc/parsers/w.py
class info (line 105) | class info():
function _process (line 119) | def _process(proc_data):
function parse (line 142) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/wc.py
class info (line 55) | class info():
function _process (line 69) | def _process(proc_data):
function parse (line 91) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/wg_show.py
class info (line 148) | class info:
function _process (line 163) | def _process(proc_data: List[DeviceData]) -> List[JSONDictType]:
function parse (line 201) | def parse(data: str, raw: bool = False, quiet: bool = False) -> List[JSO...
FILE: jc/parsers/who.py
class info (line 138) | class info():
function _process (line 152) | def _process(proc_data):
function parse (line 178) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/x509_cert.py
class info (line 414) | class info():
function _process (line 428) | def _process(proc_data: List[Dict]) -> List[Dict]:
function _i2b (line 443) | def _i2b(integer: int) -> bytes:
function _b2a (line 448) | def _b2a(byte_string: bytes) -> str:
function _fix_objects (line 460) | def _fix_objects(obj):
function parse (line 542) | def parse(
FILE: jc/parsers/x509_crl.py
class info (line 278) | class info():
function parse (line 292) | def parse(
FILE: jc/parsers/x509_csr.py
class info (line 258) | class info():
function parse (line 272) | def parse(
FILE: jc/parsers/xml.py
class info (line 77) | class info():
function _process (line 91) | def _process(proc_data, has_data=False, xml_mod=None):
function parse (line 120) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/xrandr.py
class info (line 207) | class info:
class LineType (line 346) | class LineType(Enum):
class _Line (line 355) | class _Line:
method __init__ (line 358) | def __init__(self, s: str, t: LineType, m: Match):
method categorize (line 364) | def categorize(cls, line: str) -> "_Line":
function _parse_screen (line 411) | def _parse_screen(line: _Line) -> Screen:
function _parse_device (line 421) | def _parse_device(line: _Line) -> Device:
function _parse_resolution_mode (line 451) | def _parse_resolution_mode(line: _Line) -> ResolutionMode:
function _parse_props (line 484) | def _parse_props(index: int, line: _Line, lines: List[str]) -> Tuple[int...
function parse (line 522) | def parse(data: str, raw: bool = False, quiet: bool = False) -> Response:
FILE: jc/parsers/yaml.py
class info (line 88) | class info():
function _process (line 102) | def _process(proc_data):
function parse (line 118) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/zipinfo.py
class info (line 78) | class info():
function _process (line 92) | def _process(proc_data):
function parse (line 125) | def parse(data, raw=False, quiet=False):
FILE: jc/parsers/zpool_iostat.py
class info (line 100) | class info():
function _process (line 114) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function parse (line 141) | def parse(
FILE: jc/parsers/zpool_status.py
class info (line 139) | class info():
function _process (line 153) | def _process(proc_data: List[JSONDictType]) -> List[JSONDictType]:
function _build_config_list (line 177) | def _build_config_list(string: str) -> List[Dict]:
function parse (line 196) | def parse(
FILE: jc/shell_completions.py
function get_commands (line 226) | def get_commands():
function get_options (line 235) | def get_options():
function get_parsers (line 244) | def get_parsers():
function get_parsers_descriptions (line 253) | def get_parsers_descriptions():
function get_zsh_command_descriptions (line 262) | def get_zsh_command_descriptions(command_list):
function get_descriptions (line 270) | def get_descriptions(opt_list):
function bash_completion (line 289) | def bash_completion():
function zsh_completion (line 319) | def zsh_completion():
FILE: jc/streaming.py
function streaming_input_type_check (line 11) | def streaming_input_type_check(data: Iterable[Union[str, bytes]]) -> None:
function streaming_line_input_type_check (line 20) | def streaming_line_input_type_check(line: str) -> None:
function stream_success (line 26) | def stream_success(output_line: JSONDictType, ignore_exceptions: bool) -...
function stream_error (line 34) | def stream_error(e: BaseException, line: str) -> JSONDictType:
function add_jc_meta (line 48) | def add_jc_meta(func: F) -> F:
function raise_or_yield (line 107) | def raise_or_yield(
FILE: jc/tracebackplus.py
function lookup (line 89) | def lookup(name, frame, locals):
function scanvars (line 106) | def scanvars(reader, frame, locals):
function text (line 129) | def text(einfo, context=5):
class Hook (line 201) | class Hook:
method __init__ (line 204) | def __init__(self, logdir=None, context=5, file=None):
method __call__ (line 209) | def __call__(self, etype, evalue, etb):
method handle (line 212) | def handle(self, info=None):
function enable (line 246) | def enable(logdir=None, context=5):
FILE: jc/utils.py
function _asciify (line 17) | def _asciify(string: str) -> str:
function _safe_print (line 29) | def _safe_print(
function _safe_pager (line 43) | def _safe_pager(string: str) -> None:
function warning_message (line 52) | def warning_message(message_lines: List[str]) -> None:
function error_message (line 91) | def error_message(message_lines: List[str]) -> None:
function is_compatible (line 123) | def is_compatible(compatible: List[str]) -> bool:
function compatibility (line 137) | def compatibility(mod_name: str, compatible: List[str], quiet: bool = Fa...
function has_data (line 167) | def has_data(data: Union[str, bytes]) -> bool:
function remove_quotes (line 190) | def remove_quotes(data: str) -> str:
function normalize_key (line 212) | def normalize_key(data: str) -> str:
function convert_to_int (line 252) | def convert_to_int(value: object) -> Optional[int]:
function convert_to_float (line 282) | def convert_to_float(value: object) -> Optional[float]:
function convert_to_bool (line 308) | def convert_to_bool(value: object) -> bool:
function convert_size_to_int (line 368) | def convert_size_to_int(
function input_type_check (line 490) | def input_type_check(data: object) -> None:
function _lazy_splitlines (line 496) | def _lazy_splitlines(text: str) -> Iterable[str]:
function line_slice (line 512) | def line_slice(
class timestamp (line 572) | class timestamp:
method __init__ (line 575) | def __init__(self,
method __repr__ (line 624) | def __repr__(self) -> str:
method _parse_dt (line 629) | def _parse_dt(
FILE: tests/_vendor/packaging/_structures.py
class Infinity (line 7) | class Infinity(object):
method __repr__ (line 9) | def __repr__(self):
method __hash__ (line 12) | def __hash__(self):
method __lt__ (line 15) | def __lt__(self, other):
method __le__ (line 18) | def __le__(self, other):
method __eq__ (line 21) | def __eq__(self, other):
method __ne__ (line 24) | def __ne__(self, other):
method __gt__ (line 27) | def __gt__(self, other):
method __ge__ (line 30) | def __ge__(self, other):
method __neg__ (line 33) | def __neg__(self):
class NegativeInfinity (line 39) | class NegativeInfinity(object):
method __repr__ (line 41) | def __repr__(self):
method __hash__ (line 44) | def __hash__(self):
method __lt__ (line 47) | def __lt__(self, other):
method __le__ (line 50) | def __le__(self, other):
method __eq__ (line 53) | def __eq__(self, other):
method __ne__ (line 56) | def __ne__(self, other):
method __gt__ (line 59) | def __gt__(self, other):
method __ge__ (line 62) | def __ge__(self, other):
method __neg__ (line 65) | def __neg__(self):
FILE: tests/_vendor/packaging/version.py
function parse (line 24) | def parse(version):
class InvalidVersion (line 36) | class InvalidVersion(ValueError):
class _BaseVersion (line 42) | class _BaseVersion(object):
method __hash__ (line 44) | def __hash__(self):
method __lt__ (line 47) | def __lt__(self, other):
method __le__ (line 50) | def __le__(self, other):
method __eq__ (line 53) | def __eq__(self, other):
method __ge__ (line 56) | def __ge__(self, other):
method __gt__ (line 59) | def __gt__(self, other):
method __ne__ (line 62) | def __ne__(self, other):
method _compare (line 65) | def _compare(self, other, method):
class LegacyVersion (line 72) | class LegacyVersion(_BaseVersion):
method __init__ (line 74) | def __init__(self, version):
method __str__ (line 78) | def __str__(self):
method __repr__ (line 81) | def __repr__(self):
method public (line 85) | def public(self):
method base_version (line 89) | def base_version(self):
method local (line 93) | def local(self):
method is_prerelease (line 97) | def is_prerelease(self):
method is_postrelease (line 101) | def is_postrelease(self):
function _parse_version_parts (line 114) | def _parse_version_parts(s):
function _legacy_cmpkey (line 131) | def _legacy_cmpkey(version):
class Version (line 191) | class Version(_BaseVersion):
method __init__ (line 198) | def __init__(self, version):
method __repr__ (line 233) | def __repr__(self):
method __str__ (line 236) | def __str__(self):
method public (line 267) | def public(self):
method base_version (line 271) | def base_version(self):
method local (line 284) | def local(self):
method is_prerelease (line 290) | def is_prerelease(self):
method is_postrelease (line 294) | def is_postrelease(self):
function _parse_letter_version (line 298) | def _parse_letter_version(letter, number):
function _parse_local_version (line 332) | def _parse_local_version(local):
function _cmpkey (line 343) | def _cmpkey(epoch, release, pre, post, dev, local):
FILE: tests/templates/_test_foo.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_foo_nodata (line 29) | def test_foo_nodata(self):
method test_foo_centos_7_7 (line 36) | def test_foo_centos_7_7(self):
FILE: tests/templates/_test_foo_s.py
class MyTests (line 13) | class MyTests(unittest.TestCase):
method setUpClass (line 18) | def setUpClass(cls):
method test_foo_s_nodata (line 32) | def test_foo_s_nodata(self):
method test_foo_s_centos_7_7 (line 39) | def test_foo_s_centos_7_7(self):
FILE: tests/templates/_test_foo_simple.py
class MyTests (line 15) | class MyTests(unittest.TestCase):
method test_foo_nodata (line 17) | def test_foo_nodata(self):
method test_foo_all_fixtures (line 23) | def test_foo_all_fixtures(self):
FILE: tests/test_acpi.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_acpi_nodata (line 55) | def test_acpi_nodata(self):
method test_acpi_V_all (line 61) | def test_acpi_V_all(self):
method test_acpi_V2 (line 67) | def test_acpi_V2(self):
method test_acpi_V3 (line 73) | def test_acpi_V3(self):
method test_acpi_V4 (line 79) | def test_acpi_V4(self):
method test_acpi_V_ubuntu (line 85) | def test_acpi_V_ubuntu(self):
method test_acpi_V_never_fully_discharge (line 91) | def test_acpi_V_never_fully_discharge(self):
method test_acpi_not_charging (line 97) | def test_acpi_not_charging(self):
FILE: tests/test_airport.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_airport_I_nodata (line 19) | def test_airport_I_nodata(self):
method test_airport_I_osx_10_14_6 (line 25) | def test_airport_I_osx_10_14_6(self):
FILE: tests/test_airport_s.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_airport_s_nodata (line 19) | def test_airport_s_nodata(self):
method test_airport_s_osx_10_14_6 (line 25) | def test_airport_s_osx_10_14_6(self):
FILE: tests/test_amixer.py
class AmixerTests (line 9) | class AmixerTests(unittest.TestCase):
method setUp (line 20) | def setUp(self):
method test_amixer_sget_nodata (line 25) | def test_amixer_sget_nodata(self):
method test_amixer_sget (line 31) | def test_amixer_sget(self):
method test_amixer_missing_db (line 52) | def test_amixer_missing_db(self):
FILE: tests/test_apt_cache_show.py
class MyTests (line 15) | class MyTests(unittest.TestCase):
method test_apt_cache_show_nodata (line 17) | def test_apt_cache_show_nodata(self):
method test_apt_cache_show_all_fixtures (line 23) | def test_apt_cache_show_all_fixtures(self):
FILE: tests/test_apt_get_sqq.py
class MyTests (line 15) | class MyTests(unittest.TestCase):
method test_apt_get_sqq_nodata (line 17) | def test_apt_get_sqq_nodata(self):
method test_apt_get_sqq_all_fixtures (line 23) | def test_apt_get_sqq_all_fixtures(self):
FILE: tests/test_arp.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_arp_nodata (line 85) | def test_arp_nodata(self):
method test_arp_centos_7_7 (line 91) | def test_arp_centos_7_7(self):
method test_arp_ubuntu_18_4 (line 97) | def test_arp_ubuntu_18_4(self):
method test_arp_a_centos_7_7 (line 103) | def test_arp_a_centos_7_7(self):
method test_arp_a_ubuntu_18_4 (line 109) | def test_arp_a_ubuntu_18_4(self):
method test_arp_v_centos_7_7 (line 115) | def test_arp_v_centos_7_7(self):
method test_arp_v_ubuntu_18_4 (line 121) | def test_arp_v_ubuntu_18_4(self):
method test_arp_a_osx_10_11_6 (line 127) | def test_arp_a_osx_10_11_6(self):
method test_arp_a_osx_10_14_6 (line 133) | def test_arp_a_osx_10_14_6(self):
method test_arp_a2_osx_10_14_6 (line 139) | def test_arp_a2_osx_10_14_6(self):
method test_arp_a_freebsd12 (line 145) | def test_arp_a_freebsd12(self):
method test_arp_a_centos8 (line 151) | def test_arp_a_centos8(self):
method test_arp_a_aix_7_1 (line 157) | def test_arp_a_aix_7_1(self):
FILE: tests/test_asciitable.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_asciitable_nodata (line 11) | def test_asciitable_nodata(self):
method test_asciitable_m_pure_ascii (line 17) | def test_asciitable_m_pure_ascii(self):
method test_asciitable_m_unicode (line 65) | def test_asciitable_m_unicode(self):
method test_asciitable_pure_ascii_extra_spaces (line 112) | def test_asciitable_pure_ascii_extra_spaces(self):
method test_asciitable_unicode_extra_spaces (line 164) | def test_asciitable_unicode_extra_spaces(self):
method test_asciitable_markdown (line 205) | def test_asciitable_markdown(self):
method test_asciitable_simple (line 239) | def test_asciitable_simple(self):
method test_asciitable_pretty_ansi (line 273) | def test_asciitable_pretty_ansi(self):
method test_asciitable_special_chars_in_header (line 304) | def test_asciitable_special_chars_in_header(self):
method test_asciitable_no_lower_raw (line 347) | def test_asciitable_no_lower_raw(self):
method test_asciitable_centered_col_header (line 390) | def test_asciitable_centered_col_header(self):
FILE: tests/test_asciitable_m.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_asciitable_m_nodata (line 11) | def test_asciitable_m_nodata(self):
method test_asciitable_m_pure_ascii (line 17) | def test_asciitable_m_pure_ascii(self):
method test_asciitable_m_unicode (line 68) | def test_asciitable_m_unicode(self):
method test_asciitable_m_pure_ascii_extra_spaces (line 120) | def test_asciitable_m_pure_ascii_extra_spaces(self):
method test_asciitable_m_unicode_extra_spaces (line 176) | def test_asciitable_m_unicode_extra_spaces(self):
method test_asciitable_m_pretty_ansi (line 221) | def test_asciitable_m_pretty_ansi(self):
method test_asciitable_m_special_chars_in_header (line 245) | def test_asciitable_m_special_chars_in_header(self):
method test_asciitable_no_lower_raw (line 273) | def test_asciitable_no_lower_raw(self):
method test_asciitable_m_sep_char_in_cell (line 301) | def test_asciitable_m_sep_char_in_cell(self):
method test_asciitable_m_markdown (line 367) | def test_asciitable_m_markdown(self):
method test_asciitable_m_simple (line 380) | def test_asciitable_m_simple(self):
FILE: tests/test_blkid.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_blkid_nodata (line 73) | def test_blkid_nodata(self):
method test_blkid_centos_7_7 (line 79) | def test_blkid_centos_7_7(self):
method test_blkid_ubuntu_18_4 (line 85) | def test_blkid_ubuntu_18_4(self):
method test_blkid_sda2_centos_7_7 (line 91) | def test_blkid_sda2_centos_7_7(self):
method test_blkid_sda2_ubuntu_18_4 (line 97) | def test_blkid_sda2_ubuntu_18_4(self):
method test_blkid_ip_udev_centos_7_7 (line 103) | def test_blkid_ip_udev_centos_7_7(self):
method test_blkid_ip_udev_ubuntu_18_4 (line 109) | def test_blkid_ip_udev_ubuntu_18_4(self):
method test_blkid_ip_multi_centos_7_7 (line 115) | def test_blkid_ip_multi_centos_7_7(self):
method test_blkid_ip_multi_ubuntu_18_4 (line 121) | def test_blkid_ip_multi_ubuntu_18_4(self):
method test_blkid_ip_udev_multi_centos_7_7 (line 127) | def test_blkid_ip_udev_multi_centos_7_7(self):
method test_blkid_ip_udev_multi_ubuntu_18_4 (line 133) | def test_blkid_ip_udev_multi_ubuntu_18_4(self):
FILE: tests/test_bluetoothctl.py
class BluetoothctlTests (line 18) | class BluetoothctlTests(unittest.TestCase):
method test_bluetoothctl_nodata (line 19) | def test_bluetoothctl_nodata(self):
method test_bluetoothctl_invalid_call (line 27) | def test_bluetoothctl_invalid_call(self):
method test_bluetoothctl_with_invalid_args (line 35) | def test_bluetoothctl_with_invalid_args(self):
method test_bluetoothctl_no_controller (line 43) | def test_bluetoothctl_no_controller(self):
method test_bluetoothctl_no_controller_found (line 52) | def test_bluetoothctl_no_controller_found(self):
method test_bluetoothctl_no_device_found (line 60) | def test_bluetoothctl_no_device_found(self):
method test_bluetoothctl_controller (line 68) | def test_bluetoothctl_controller(self):
method test_bluetoothctl_controller_2 (line 108) | def test_bluetoothctl_controller_2(self):
method test_bluetoothctl_controller_with_manufacturer (line 149) | def test_bluetoothctl_controller_with_manufacturer(self):
method test_bluetoothctl_controllers (line 201) | def test_bluetoothctl_controllers(self):
method test_bluetoothctl_device (line 234) | def test_bluetoothctl_device(self):
method test_bluetoothctl_device_with_battery (line 276) | def test_bluetoothctl_device_with_battery(self):
method test_bluetoothctl_device_random (line 320) | def test_bluetoothctl_device_random(self):
method test_bluetoothctl_devices (line 361) | def test_bluetoothctl_devices(self):
method test_bluetoothctl_devices_w_cable_pairing (line 393) | def test_bluetoothctl_devices_w_cable_pairing(self):
FILE: tests/test_cbt.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method test_cbt_nodata (line 32) | def test_cbt_nodata(self):
method test_cbt_single_row (line 38) | def test_cbt_single_row(self):
method test_cbt_multiple_column_families (line 44) | def test_cbt_multiple_column_families(self):
method test_cbt_multiple_rows (line 50) | def test_cbt_multiple_rows(self):
method test_cbt_multiple_rows_raw (line 56) | def test_cbt_multiple_rows_raw(self):
FILE: tests/test_cef.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_cef_nodata (line 20) | def test_cef_nodata(self):
method test_cef_sample (line 26) | def test_cef_sample(self):
FILE: tests/test_cef_s.py
class MyTests (line 12) | class MyTests(unittest.TestCase):
method test_cef_s_nodata (line 22) | def test_cef_s_nodata(self):
method test_cef_s_sample (line 28) | def test_cef_s_sample(self):
FILE: tests/test_certbot.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_certbot_nodata (line 32) | def test_certbot_nodata(self):
method test_certbot_certificates (line 39) | def test_certbot_certificates(self):
method test_certbot_account (line 48) | def test_certbot_account(self):
FILE: tests/test_chage.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_chage_nodata (line 20) | def test_chage_nodata(self):
method test_chage_centos_7_7 (line 26) | def test_chage_centos_7_7(self):
FILE: tests/test_cksum.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_cksum_nodata (line 37) | def test_cksum_nodata(self):
method test_cksum_centos_7_7 (line 43) | def test_cksum_centos_7_7(self):
method test_sum_centos_7_7 (line 49) | def test_sum_centos_7_7(self):
method test_cksum_osx_10_14_6 (line 55) | def test_cksum_osx_10_14_6(self):
method test_sum_osx_10_14_6 (line 61) | def test_sum_osx_10_14_6(self):
FILE: tests/test_clf.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_clf_nodata (line 29) | def test_clf_nodata(self):
method test_clf (line 36) | def test_clf(self):
FILE: tests/test_clf_s.py
class MyTests (line 13) | class MyTests(unittest.TestCase):
method setUpClass (line 18) | def setUpClass(cls):
method test_clf_s_nodata (line 32) | def test_clf_s_nodata(self):
method test_clf_s_centos_7_7 (line 39) | def test_clf_s_centos_7_7(self):
FILE: tests/test_crontab.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_crontab_nodata (line 32) | def test_crontab_nodata(self):
method test_crontab_centos_7_7 (line 38) | def test_crontab_centos_7_7(self):
method test_crontab_no_normal_entries (line 44) | def test_crontab_no_normal_entries(self):
method test_crontab_var_fix (line 50) | def test_crontab_var_fix(self):
FILE: tests/test_crontab_u.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_crontab_u_nodata (line 44) | def test_crontab_u_nodata(self):
method test_crontab_u_ubuntu_18_4 (line 50) | def test_crontab_u_ubuntu_18_4(self):
method test_crontab_u_centos_7_7 (line 56) | def test_crontab_u_centos_7_7(self):
method test_crontab_u_debian10 (line 62) | def test_crontab_u_debian10(self):
method test_crontab_u_no_normal_entries (line 68) | def test_crontab_u_no_normal_entries(self):
method test_crontab_u_var_fix (line 74) | def test_crontab_u_var_fix(self):
FILE: tests/test_csv.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_csv_nodata (line 80) | def test_csv_nodata(self):
method test_csv_biostats (line 86) | def test_csv_biostats(self):
method test_csv_cities (line 92) | def test_csv_cities(self):
method test_csv_deniro (line 98) | def test_csv_deniro(self):
method test_csv_example (line 104) | def test_csv_example(self):
method test_csv_flyrna (line 110) | def test_csv_flyrna(self):
method test_csv_flyrna2 (line 116) | def test_csv_flyrna2(self):
method test_csv_homes_pipe (line 122) | def test_csv_homes_pipe(self):
method test_csv_homes (line 128) | def test_csv_homes(self):
method test_csv_insurance (line 134) | def test_csv_insurance(self):
method test_csv_doublequoted (line 140) | def test_csv_doublequoted(self):
method test_csv_utf8_bom (line 146) | def test_csv_utf8_bom(self):
FILE: tests/test_csv_s.py
class MyTests (line 14) | class MyTests(unittest.TestCase):
method test_csv_s_nodata (line 85) | def test_csv_s_nodata(self):
method test_csv_unparsable (line 91) | def test_csv_unparsable(self):
method test_csv_s_biostats (line 102) | def test_csv_s_biostats(self):
method test_csv_s_cities (line 108) | def test_csv_s_cities(self):
method test_csv_s_deniro (line 114) | def test_csv_s_deniro(self):
method test_csv_s_example (line 120) | def test_csv_s_example(self):
method test_csv_s_flyrna (line 126) | def test_csv_s_flyrna(self):
method test_csv_s_flyrna2 (line 132) | def test_csv_s_flyrna2(self):
method test_csv_s_homes_pipe (line 138) | def test_csv_s_homes_pipe(self):
method test_csv_s_homes (line 144) | def test_csv_s_homes(self):
method test_csv_s_10k_records (line 150) | def test_csv_s_10k_records(self):
method test_csv_s_doublequoted (line 156) | def test_csv_s_doublequoted(self):
method test_csv_s_utf8_bom (line 162) | def test_csv_s_utf8_bom(self):
FILE: tests/test_curl_head.py
class MyTests (line 19) | class MyTests(unittest.TestCase):
method test_curl_head_nodata (line 21) | def test_curl_head_nodata(self):
method test_curl_head_all_fixtures (line 27) | def test_curl_head_all_fixtures(self):
FILE: tests/test_date.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_date_nodata (line 44) | def test_date_nodata(self):
method test_date (line 50) | def test_date(self):
method test_date_before_midnight (line 56) | def test_date_before_midnight(self):
method test_date_after_midnight (line 62) | def test_date_after_midnight(self):
method test_date_am_ubuntu_20_04 (line 68) | def test_date_am_ubuntu_20_04(self):
method test_date_pm_ubuntu_20_04 (line 74) | def test_date_pm_ubuntu_20_04(self):
FILE: tests/test_datetime_iso.py
class MyTests (line 6) | class MyTests(unittest.TestCase):
method test_datetime_iso_nodata (line 7) | def test_datetime_iso_nodata(self):
method test_datetime_iso_z (line 14) | def test_datetime_iso_z(self):
method test_datetime_iso_microseconds (line 23) | def test_datetime_iso_microseconds(self):
method test_datetime_iso_plus_offset (line 32) | def test_datetime_iso_plus_offset(self):
method test_datetime_iso_negative_offset (line 41) | def test_datetime_iso_negative_offset(self):
method test_datetime_iso_nocolon_offset (line 50) | def test_datetime_iso_nocolon_offset(self):
FILE: tests/test_debconf_show.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_debconf_show_nodata (line 29) | def test_debconf_show_nodata(self):
method test_debconf_show_centos_7_7 (line 36) | def test_debconf_show_centos_7_7(self):
FILE: tests/test_df.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_df_nodata (line 74) | def test_df_nodata(self):
method test_df_centos_7_7 (line 80) | def test_df_centos_7_7(self):
method test_df_ubuntu_18_4 (line 86) | def test_df_ubuntu_18_4(self):
method test_df_osx_10_11_6 (line 92) | def test_df_osx_10_11_6(self):
method test_df_osx_10_14_6 (line 98) | def test_df_osx_10_14_6(self):
method test_df_h_centos_7_7 (line 104) | def test_df_h_centos_7_7(self):
method test_df_h_ubuntu_18_4 (line 110) | def test_df_h_ubuntu_18_4(self):
method test_df_h_osx_10_11_6 (line 116) | def test_df_h_osx_10_11_6(self):
method test_df_h_osx_10_14_6 (line 122) | def test_df_h_osx_10_14_6(self):
method test_df_hh_osx_10_14_6 (line 128) | def test_df_hh_osx_10_14_6(self):
method test_df_long_filesystem (line 134) | def test_df_long_filesystem(self):
method test_df_centos_7_7_trailing_newline (line 140) | def test_df_centos_7_7_trailing_newline(self):
FILE: tests/test_dig.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_dig_nodata (line 158) | def test_dig_nodata(self):
method test_dig_centos_7_7 (line 164) | def test_dig_centos_7_7(self):
method test_dig_ubuntu_18_4 (line 170) | def test_dig_ubuntu_18_4(self):
method test_dig_x_centos_7_7 (line 176) | def test_dig_x_centos_7_7(self):
method test_dig_x_ubuntu_18_4 (line 182) | def test_dig_x_ubuntu_18_4(self):
method test_dig_aaaa_centos_7_7 (line 188) | def test_dig_aaaa_centos_7_7(self):
method test_dig_aaaa_ubuntu_18_4 (line 194) | def test_dig_aaaa_ubuntu_18_4(self):
method test_dig_axfr_centos_7_7 (line 200) | def test_dig_axfr_centos_7_7(self):
method test_dig_axfr_ubuntu_18_4 (line 206) | def test_dig_axfr_ubuntu_18_4(self):
method test_dig_osx_10_11_6 (line 212) | def test_dig_osx_10_11_6(self):
method test_dig_x_osx_10_11_6 (line 218) | def test_dig_x_osx_10_11_6(self):
method test_dig_aaaa_osx_10_11_6 (line 224) | def test_dig_aaaa_osx_10_11_6(self):
method test_dig_osx_10_14_6 (line 230) | def test_dig_osx_10_14_6(self):
method test_dig_x_osx_10_14_6 (line 236) | def test_dig_x_osx_10_14_6(self):
method test_dig_aaaa_osx_10_14_6 (line 242) | def test_dig_aaaa_osx_10_14_6(self):
method test_dig_axfr_osx_10_14_6 (line 248) | def test_dig_axfr_osx_10_14_6(self):
method test_dig_noall_answer_osx_10_14_6 (line 254) | def test_dig_noall_answer_osx_10_14_6(self):
method test_dig_answer_spaces (line 260) | def test_dig_answer_spaces(self):
method test_dig_additional (line 266) | def test_dig_additional(self):
method test_dig_additional2 (line 272) | def test_dig_additional2(self):
method test_dig_additional3 (line 278) | def test_dig_additional3(self):
method test_dig_edns (line 284) | def test_dig_edns(self):
method test_dig_edns2 (line 290) | def test_dig_edns2(self):
method test_dig_edns3 (line 296) | def test_dig_edns3(self):
method test_dig_nsid (line 302) | def test_dig_nsid(self):
FILE: tests/test_dir.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_dir_error (line 64) | def test_dir_error(self):
method test_dir_empty (line 67) | def test_dir_empty(self):
method test_dir_windows_10 (line 70) | def test_dir_windows_10(self):
method test_dir_windows_10_ODTC (line 74) | def test_dir_windows_10_ODTC(self):
method test_dir_windows_10_C (line 78) | def test_dir_windows_10_C(self):
method test_dir_windows_10_mix (line 82) | def test_dir_windows_10_mix(self):
method test_dir_windows_10_files (line 86) | def test_dir_windows_10_files(self):
method test_dir_windows_10_dirs (line 90) | def test_dir_windows_10_dirs(self):
method test_dir_windows_10_S (line 94) | def test_dir_windows_10_S(self):
FILE: tests/test_dmidecode.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_dmidecode_nodata (line 32) | def test_dmidecode_nodata(self):
method test_dmidecode_centos_7_7 (line 38) | def test_dmidecode_centos_7_7(self):
method test_dmidecode_ubuntu_18_4 (line 44) | def test_dmidecode_ubuntu_18_4(self):
method test_dmidecode_fedora32 (line 50) | def test_dmidecode_fedora32(self):
FILE: tests/test_dpkg_l.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_dpkg_l_nodata (line 32) | def test_dpkg_l_nodata(self):
method test_dpkg_l_ubuntu_18_4 (line 38) | def test_dpkg_l_ubuntu_18_4(self):
method test_dpkg_l_columns500_ubuntu_18_4 (line 44) | def test_dpkg_l_columns500_ubuntu_18_4(self):
method test_dpkg_l_codes_ubuntu_18_4 (line 50) | def test_dpkg_l_codes_ubuntu_18_4(self):
FILE: tests/test_du.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_du_nodata (line 38) | def test_du_nodata(self):
method test_du_centos_7_7 (line 44) | def test_du_centos_7_7(self):
method test_du_ubuntu_18_4 (line 50) | def test_du_ubuntu_18_4(self):
method test_du_osx_10_11_6 (line 56) | def test_du_osx_10_11_6(self):
method test_du_osx_10_14_6 (line 62) | def test_du_osx_10_14_6(self):
FILE: tests/test_efibootmgr.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_efibootmgr_nodata (line 25) | def test_efibootmgr_nodata(self):
method test_efibootmgr_v_opensuse_leap_15_5 (line 31) | def test_efibootmgr_v_opensuse_leap_15_5(self):
method test_efibootmgr_opensuse_leap_15_5 (line 37) | def test_efibootmgr_opensuse_leap_15_5(self):
FILE: tests/test_email_address.py
class MyTests (line 6) | class MyTests(unittest.TestCase):
method test_email_address_nodata (line 7) | def test_email_address_nodata(self):
method test_simple_email (line 14) | def test_simple_email(self):
method test_plus_email (line 23) | def test_plus_email(self):
FILE: tests/test_env.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_env_nodata (line 36) | def test_env_nodata(self):
method test_env_centos_7_7 (line 42) | def test_env_centos_7_7(self):
method test_env_ubuntu_18_4 (line 48) | def test_env_ubuntu_18_4(self):
method test_env_multiline (line 54) | def test_env_multiline(self):
method test_env_multiline_raw (line 60) | def test_env_multiline_raw(self):
FILE: tests/test_ethtool.py
class MyTests (line 15) | class MyTests(unittest.TestCase):
method test_ethtool_nodata (line 17) | def test_ethtool_nodata(self):
method test_ethtool_all_fixtures (line 23) | def test_ethtool_all_fixtures(self):
FILE: tests/test_file.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_file_nodata (line 44) | def test_file_nodata(self):
method test_file_centos_7_7 (line 50) | def test_file_centos_7_7(self):
method test_file_ubuntu_18_4 (line 56) | def test_file_ubuntu_18_4(self):
method test_file_osx_10_14_6 (line 62) | def test_file_osx_10_14_6(self):
method test_file2_osx_10_14_6 (line 68) | def test_file2_osx_10_14_6(self):
method test_file3_osx_10_14_6 (line 74) | def test_file3_osx_10_14_6(self):
FILE: tests/test_find.py
class MyTests (line 8) | class MyTests(unittest.TestCase):
method test_find_nodata (line 24) | def test_find_nodata(self):
method test_find_centos_7_7 (line 30) | def test_find_centos_7_7(self):
method test_find_ubuntu_18_4 (line 36) | def test_find_ubuntu_18_4(self):
FILE: tests/test_findmnt.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_findmnt_nodata (line 35) | def test_findmnt_nodata(self):
method test_findmnt_centos_7_7 (line 41) | def test_findmnt_centos_7_7(self):
method test_findmnt_a_centos_7_7 (line 50) | def test_findmnt_a_centos_7_7(self):
method test_findmnt_l_centos_7_7 (line 59) | def test_findmnt_l_centos_7_7(self):
FILE: tests/test_finger.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_finger_nodata (line 32) | def test_finger_nodata(self):
method test_finger_centos_7_7 (line 38) | def test_finger_centos_7_7(self):
method test_finger_ubuntu_18_4 (line 44) | def test_finger_ubuntu_18_4(self):
method test_finger_osx_10_14_6 (line 50) | def test_finger_osx_10_14_6(self):
FILE: tests/test_free.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_free_nodata (line 49) | def test_free_nodata(self):
method test_free_centos_7_7 (line 55) | def test_free_centos_7_7(self):
method test_free_ubuntu_18_4 (line 61) | def test_free_ubuntu_18_4(self):
method test_free_h_centos_7_7 (line 67) | def test_free_h_centos_7_7(self):
method test_free_h_ubuntu_18_4 (line 73) | def test_free_h_ubuntu_18_4(self):
method test_free_w_centos_7_7 (line 79) | def test_free_w_centos_7_7(self):
method test_free_w_ubuntu_18_4 (line 85) | def test_free_w_ubuntu_18_4(self):
FILE: tests/test_fstab.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_fstab_nodata (line 26) | def test_fstab_nodata(self):
method test_fstab_centos_7_7 (line 32) | def test_fstab_centos_7_7(self):
method test_fstab_ubuntu_18_4 (line 38) | def test_fstab_ubuntu_18_4(self):
FILE: tests/test_git_log.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_git_log_nodata (line 128) | def test_git_log_nodata(self):
method test_git_log (line 134) | def test_git_log(self):
method test_git_log_short (line 140) | def test_git_log_short(self):
method test_git_log_short_stat (line 146) | def test_git_log_short_stat(self):
method test_git_log_short_shortstat (line 152) | def test_git_log_short_shortstat(self):
method test_git_log_medium (line 158) | def test_git_log_medium(self):
method test_git_log_medium_stat (line 164) | def test_git_log_medium_stat(self):
method test_git_log_medium_shortstat (line 170) | def test_git_log_medium_shortstat(self):
method test_git_log_full (line 176) | def test_git_log_full(self):
method test_git_log_full_stat (line 182) | def test_git_log_full_stat(self):
method test_git_log_full_shortstat (line 188) | def test_git_log_full_shortstat(self):
method test_git_log_fuller (line 194) | def test_git_log_fuller(self):
method test_git_log_fuller_stat (line 200) | def test_git_log_fuller_stat(self):
method test_git_log_fuller_shortstat (line 206) | def test_git_log_fuller_shortstat(self):
method test_git_log_oneline (line 212) | def test_git_log_oneline(self):
method test_git_log_oneline_stat (line 218) | def test_git_log_oneline_stat(self):
method test_git_log_oneline_shortstat (line 224) | def test_git_log_oneline_shortstat(self):
method test_git_log_fuller_hash_in_message_fix (line 230) | def test_git_log_fuller_hash_in_message_fix(self):
method test_git_log_fuller_is_hash_fix (line 237) | def test_git_log_fuller_is_hash_fix(self):
method test_git_log_blank_author_fix (line 244) | def test_git_log_blank_author_fix(self):
FILE: tests/test_git_log_s.py
class MyTests (line 13) | class MyTests(unittest.TestCase):
method test_git_log_s_nodata (line 135) | def test_git_log_s_nodata(self):
method test_git_log_s_unparsable (line 141) | def test_git_log_s_unparsable(self):
method test_git_log_s_ignore_exceptions_success (line 147) | def test_git_log_s_ignore_exceptions_success(self):
method test_ping_s_ignore_exceptions_error (line 153) | def test_ping_s_ignore_exceptions_error(self):
method test_git_log_s (line 161) | def test_git_log_s(self):
method test_git_log_short_s (line 167) | def test_git_log_short_s(self):
method test_git_log_short_stat_s (line 173) | def test_git_log_short_stat_s(self):
method test_git_log_short_shortstat_s (line 179) | def test_git_log_short_shortstat_s(self):
method test_git_log_medium_s (line 185) | def test_git_log_medium_s(self):
method test_git_log_medium_stat_s (line 191) | def test_git_log_medium_stat_s(self):
method test_git_log_medium_shortstat_s (line 197) | def test_git_log_medium_shortstat_s(self):
method test_git_log_full_s (line 203) | def test_git_log_full_s(self):
method test_git_log_full_stat_s (line 209) | def test_git_log_full_stat_s(self):
method test_git_log_full_shortstat_s (line 215) | def test_git_log_full_shortstat_s(self):
method test_git_log_fuller_s (line 221) | def test_git_log_fuller_s(self):
method test_git_log_fuller_stat_s (line 227) | def test_git_log_fuller_stat_s(self):
method test_git_log_fuller_shortstat_s (line 233) | def test_git_log_fuller_shortstat_s(self):
method test_git_log_oneline_s (line 239) | def test_git_log_oneline_s(self):
method test_git_log_oneline_stat_s (line 245) | def test_git_log_oneline_stat_s(self):
method test_git_log_oneline_shortstat_s (line 251) | def test_git_log_oneline_shortstat_s(self):
method test_git_log_fuller_hash_in_message_fix (line 257) | def test_git_log_fuller_hash_in_message_fix(self):
method test_git_log_fuller_is_hash_fix (line 264) | def test_git_log_fuller_is_hash_fix(self):
method test_git_log_blank_author_fix (line 271) | def test_git_log_blank_author_fix(self):
FILE: tests/test_git_ls_remote.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_git_ls_remote_nodata (line 32) | def test_git_ls_remote_nodata(self):
method test_git_ls_remote (line 38) | def test_git_ls_remote(self):
method test_git_ls_remote_raw (line 47) | def test_git_ls_remote_raw(self):
FILE: tests/test_gpg.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_gpg_nodata (line 20) | def test_gpg_nodata(self):
method test_gpg (line 26) | def test_gpg(self):
FILE: tests/test_group.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_group_nodata (line 32) | def test_group_nodata(self):
method test_group_centos_7_7 (line 38) | def test_group_centos_7_7(self):
method test_group_ubuntu_18_4 (line 44) | def test_group_ubuntu_18_4(self):
method test_group_osx_10_14_6 (line 50) | def test_group_osx_10_14_6(self):
FILE: tests/test_gshadow.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_gshadow_nodata (line 26) | def test_gshadow_nodata(self):
method test_gshadow_centos_7_7 (line 32) | def test_gshadow_centos_7_7(self):
method test_gshadow_ubuntu_18_4 (line 38) | def test_gshadow_ubuntu_18_4(self):
FILE: tests/test_hash.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_hash_nodata (line 20) | def test_hash_nodata(self):
method test_hash_centos_7_7 (line 26) | def test_hash_centos_7_7(self):
FILE: tests/test_hashsum.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_hashsum_nodata (line 44) | def test_hashsum_nodata(self):
method test_md5sum_centos_7_7 (line 50) | def test_md5sum_centos_7_7(self):
method test_sha256sum_centos_7_7 (line 56) | def test_sha256sum_centos_7_7(self):
method test_sha384sum_centos_7_7 (line 62) | def test_sha384sum_centos_7_7(self):
method test_md5_osx_10_14_6 (line 68) | def test_md5_osx_10_14_6(self):
method test_shasum_osx_10_14_6 (line 74) | def test_shasum_osx_10_14_6(self):
FILE: tests/test_hciconfig.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_hciconfig_nodata (line 38) | def test_hciconfig_nodata(self):
method test_hciconfig_centos_7_7 (line 44) | def test_hciconfig_centos_7_7(self):
method test_hciconfig_a_centos_7_7 (line 50) | def test_hciconfig_a_centos_7_7(self):
method test_hciconfig_ubuntu_18_4 (line 56) | def test_hciconfig_ubuntu_18_4(self):
method test_hciconfig_a_ubuntu_18_4 (line 62) | def test_hciconfig_a_ubuntu_18_4(self):
FILE: tests/test_history.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_history_nodata (line 26) | def test_history_nodata(self):
method test_history_centos_7_7 (line 32) | def test_history_centos_7_7(self):
method test_history_ubuntu_18_4 (line 38) | def test_history_ubuntu_18_4(self):
FILE: tests/test_host.py
class MyTests (line 10) | class MyTests(unittest.TestCase):
method setUpClass (line 15) | def setUpClass(cls):
method test_host_nodata (line 32) | def test_host_nodata(self):
method test_host_google (line 39) | def test_host_google(self):
method test_host_sunet (line 48) | def test_host_sunet(self):
FILE: tests/test_hosts.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_hosts_nodata (line 26) | def test_hosts_nodata(self):
method test_hosts_centos_7_7 (line 32) | def test_hosts_centos_7_7(self):
method test_hosts_ubuntu_18_4 (line 38) | def test_hosts_ubuntu_18_4(self):
FILE: tests/test_http_headers.py
class MyTests (line 15) | class MyTests(unittest.TestCase):
method test_http_headers_nodata (line 17) | def test_http_headers_nodata(self):
method test_http_headers_all_fixtures (line 23) | def test_http_headers_all_fixtures(self):
FILE: tests/test_id.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_id_nodata (line 26) | def test_id_nodata(self):
method test_id_no_name (line 32) | def test_id_no_name(self):
method test_id_space (line 46) | def test_id_space(self):
method test_id_centos_7_7 (line 70) | def test_id_centos_7_7(self):
method test_id_osx_10_14_6 (line 76) | def test_id_osx_10_14_6(self):
FILE: tests/test_ifconfig.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_ifconfig_nodata (line 79) | def test_ifconfig_nodata(self):
method test_ifconfig_centos_7_7 (line 85) | def test_ifconfig_centos_7_7(self):
method test_ifconfig_ubuntu_16_4 (line 91) | def test_ifconfig_ubuntu_16_4(self):
method test_ifconfig_ubuntu_18_4 (line 97) | def test_ifconfig_ubuntu_18_4(self):
method test_ifconfig_osx_10_11_6 (line 103) | def test_ifconfig_osx_10_11_6(self):
method test_ifconfig_osx_10_11_6_2 (line 109) | def test_ifconfig_osx_10_11_6_2(self):
method test_ifconfig_osx_10_14_6 (line 115) | def test_ifconfig_osx_10_14_6(self):
method test_ifconfig_osx_10_14_6_2 (line 121) | def test_ifconfig_osx_10_14_6_2(self):
method test_ifconfig_freebsd_extra_fields (line 127) | def test_ifconfig_freebsd_extra_fields(self):
method test_ifconfig_freebsd_extra_fields2 (line 133) | def test_ifconfig_freebsd_extra_fields2(self):
method test_ifconfig_freebsd_extra_fields3 (line 139) | def test_ifconfig_freebsd_extra_fields3(self):
method test_ifconfig_freebsd_extra_fields4 (line 145) | def test_ifconfig_freebsd_extra_fields4(self):
method test_ifconfig_utun_ipv4 (line 151) | def test_ifconfig_utun_ipv4(self):
FILE: tests/test_iftop.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_iftop_nodata (line 32) | def test_iftop_nodata(self):
method test_iftop_ubuntu_20_10 (line 38) | def test_iftop_ubuntu_20_10(self):
method test_iftop_multiple_runs_ubuntu_20_10 (line 44) | def test_iftop_multiple_runs_ubuntu_20_10(self):
method test_iftop_ubuntu_20_10_no_port (line 50) | def test_iftop_ubuntu_20_10_no_port(self):
FILE: tests/test_ini.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_ini_nodata (line 44) | def test_ini_nodata(self):
method test_ini_test (line 50) | def test_ini_test(self):
method test_ini_iptelserver (line 56) | def test_ini_iptelserver(self):
method test_ini_mariadb (line 62) | def test_ini_mariadb(self):
method test_ini_duplicate_keys (line 68) | def test_ini_duplicate_keys(self):
method test_ini_missing_top_section (line 81) | def test_ini_missing_top_section(self):
method test_ini_doublequote (line 107) | def test_ini_doublequote(self):
method test_ini_singlequote (line 113) | def test_ini_singlequote(self):
method test_ini_single_key_no_value (line 119) | def test_ini_single_key_no_value(self):
FILE: tests/test_ini_dup.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_ini_dup_nodata (line 44) | def test_ini_dup_nodata(self):
method test_ini_dup_test (line 50) | def test_ini_dup_test(self):
method test_ini_dup_iptelserver (line 56) | def test_ini_dup_iptelserver(self):
method test_ini_dup_mariadb (line 62) | def test_ini_dup_mariadb(self):
method test_ini_dup_duplicate_keys (line 68) | def test_ini_dup_duplicate_keys(self):
method test_ini_dup_missing_top_section (line 81) | def test_ini_dup_missing_top_section(self):
method test_ini_dup_doublequote (line 97) | def test_ini_dup_doublequote(self):
method test_ini_dup_singlequote (line 103) | def test_ini_dup_singlequote(self):
method test_ini_dup_single_key_no_value (line 109) | def test_ini_dup_single_key_no_value(self):
FILE: tests/test_iostat.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_iostat_nodata (line 98) | def test_iostat_nodata(self):
method test_iostat_centos_7_7 (line 104) | def test_iostat_centos_7_7(self):
method test_iostat_m_centos_7_7 (line 110) | def test_iostat_m_centos_7_7(self):
method test_iostat_x_centos_7_7 (line 116) | def test_iostat_x_centos_7_7(self):
method test_iostat_mx_centos_7_7 (line 122) | def test_iostat_mx_centos_7_7(self):
method test_iostat_1_centos_7_7 (line 128) | def test_iostat_1_centos_7_7(self):
method test_iostat_ubuntu_18_4 (line 134) | def test_iostat_ubuntu_18_4(self):
method test_iostat_m_ubuntu_18_4 (line 140) | def test_iostat_m_ubuntu_18_4(self):
method test_iostat_x_ubuntu_18_4 (line 146) | def test_iostat_x_ubuntu_18_4(self):
method test_iostat_mx_ubuntu_18_4 (line 152) | def test_iostat_mx_ubuntu_18_4(self):
method test_iostat_1_ubuntu_18_4 (line 158) | def test_iostat_1_ubuntu_18_4(self):
method test_iostat_ubuntu_20_10 (line 164) | def test_iostat_ubuntu_20_10(self):
method test_iostat_m_ubuntu_20_10 (line 170) | def test_iostat_m_ubuntu_20_10(self):
method test_iostat_x_ubuntu_20_10 (line 176) | def test_iostat_x_ubuntu_20_10(self):
method test_iostat_mx_ubuntu_20_10 (line 182) | def test_iostat_mx_ubuntu_20_10(self):
FILE: tests/test_iostat_s.py
class MyTests (line 13) | class MyTests(unittest.TestCase):
method test_iostat_empty_dir (line 103) | def test_iostat_empty_dir(self):
method test_iostat_raise_exception (line 109) | def test_iostat_raise_exception(self):
method test_iostat_centos_7_7 (line 117) | def test_iostat_centos_7_7(self):
method test_iostat_m_centos_7_7 (line 123) | def test_iostat_m_centos_7_7(self):
method test_iostat_x_centos_7_7 (line 129) | def test_iostat_x_centos_7_7(self):
method test_iostat_mx_centos_7_7 (line 135) | def test_iostat_mx_centos_7_7(self):
method test_iostat_1_centos_7_7 (line 141) | def test_iostat_1_centos_7_7(self):
method test_iostat_ubuntu_18_4 (line 147) | def test_iostat_ubuntu_18_4(self):
method test_iostat_m_ubuntu_18_4 (line 153) | def test_iostat_m_ubuntu_18_4(self):
method test_iostat_x_ubuntu_18_4 (line 159) | def test_iostat_x_ubuntu_18_4(self):
method test_iostat_mx_ubuntu_18_4 (line 165) | def test_iostat_mx_ubuntu_18_4(self):
method test_iostat_1_ubuntu_18_4 (line 171) | def test_iostat_1_ubuntu_18_4(self):
method test_iostat_ubuntu_20_10 (line 177) | def test_iostat_ubuntu_20_10(self):
method test_iostat_m_ubuntu_20_10 (line 183) | def test_iostat_m_ubuntu_20_10(self):
method test_iostat_x_ubuntu_20_10 (line 189) | def test_iostat_x_ubuntu_20_10(self):
method test_iostat_mx_ubuntu_20_10 (line 195) | def test_iostat_mx_ubuntu_20_10(self):
FILE: tests/test_ip_address.py
class MyTests (line 6) | class MyTests(unittest.TestCase):
method test_ip_address_nodata (line 8) | def test_ip_address_nodata(self):
method test_ip_address_ipv4 (line 15) | def test_ip_address_ipv4(self):
method test_ip_address_ipv4_cidr (line 24) | def test_ip_address_ipv4_cidr(self):
method test_ip_address_ipv4_dotnetmask (line 33) | def test_ip_address_ipv4_dotnetmask(self):
method test_ip_address_ipv4_integer (line 42) | def test_ip_address_ipv4_integer(self):
method test_ip_address_ipv6 (line 51) | def test_ip_address_ipv6(self):
method test_ip_address_ipv6_cidr (line 60) | def test_ip_address_ipv6_cidr(self):
method test_ip_address_ipv6_cidr_scope (line 69) | def test_ip_address_ipv6_cidr_scope(self):
method test_ip_address_ipv6_integer (line 78) | def test_ip_address_ipv6_integer(self):
method test_ip_address_ipv6_ipv4_mapped (line 87) | def test_ip_address_ipv6_ipv4_mapped(self):
method test_ip_address_ipv6_6to4 (line 149) | def test_ip_address_ipv6_6to4(self):
method test_ip_address_ipv6_teredo (line 183) | def test_ip_address_ipv6_teredo(self):
FILE: tests/test_ip_route.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_ip_route_nodata (line 29) | def test_ip_route_nodata(self):
method test_ip_route_ubuntu_18_4 (line 35) | def test_ip_route_ubuntu_18_4(self):
method test_ip_route_centos_7_7 (line 42) | def test_ip_route_centos_7_7(self):
FILE: tests/test_ipconfig.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method setUp (line 19) | def setUp(self):
method varName (line 29) | def varName(self, path):
method test_windows_ipconfig (line 36) | def test_windows_ipconfig(self):
FILE: tests/test_iptables.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_iptables_nodata (line 92) | def test_iptables_nodata(self):
method test_iptables_filter_centos_7_7 (line 98) | def test_iptables_filter_centos_7_7(self):
method test_iptables_filter_ubuntu_18_4 (line 104) | def test_iptables_filter_ubuntu_18_4(self):
method test_iptables_filter_line_numbers_centos_7_7 (line 110) | def test_iptables_filter_line_numbers_centos_7_7(self):
method test_iptables_filter_line_numbers_ubuntu_18_4 (line 116) | def test_iptables_filter_line_numbers_ubuntu_18_4(self):
method test_iptables_filter_nv_centos_7_7 (line 122) | def test_iptables_filter_nv_centos_7_7(self):
method test_iptables_filter_nv_ubuntu_18_4 (line 128) | def test_iptables_filter_nv_ubuntu_18_4(self):
method test_iptables_mangle_centos_7_7 (line 134) | def test_iptables_mangle_centos_7_7(self):
method test_iptables_mangle_ubuntu_18_4 (line 140) | def test_iptables_mangle_ubuntu_18_4(self):
method test_iptables_nat_centos_7_7 (line 146) | def test_iptables_nat_centos_7_7(self):
method test_iptables_nat_ubuntu_18_4 (line 152) | def test_iptables_nat_ubuntu_18_4(self):
method test_iptables_raw_centos_7_7 (line 158) | def test_iptables_raw_centos_7_7(self):
method test_iptables_raw_ubuntu_18_4 (line 164) | def test_iptables_raw_ubuntu_18_4(self):
method test_iptables_no_jump_generic (line 170) | def test_iptables_no_jump_generic(self):
method test_iptables_x_option_format (line 176) | def test_iptables_x_option_format(self):
method test_iptables_x_option_format2 (line 190) | def test_iptables_x_option_format2(self):
FILE: tests/test_iw_scan.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_iw_scan_nodata (line 31) | def test_iw_scan_nodata(self):
method test_iw_scan0_centos_7_7 (line 37) | def test_iw_scan0_centos_7_7(self):
method test_iw_scan1_centos_7_7 (line 43) | def test_iw_scan1_centos_7_7(self):
method test_iw_scan2_centos_7_7 (line 49) | def test_iw_scan2_centos_7_7(self):
FILE: tests/test_iwconfig.py
class iwconfigTests (line 9) | class iwconfigTests(unittest.TestCase):
method test_iwconfig_nodata (line 35) | def test_iwconfig_nodata(self):
method test_iwconfig_raw (line 41) | def test_iwconfig_raw(self):
method test_iwconfig (line 47) | def test_iwconfig(self):
method test_iwconfig_many (line 53) | def test_iwconfig_many(self):
method test_iwconfig_space_dash_ssid (line 59) | def test_iwconfig_space_dash_ssid(self):
FILE: tests/test_jar_manifest.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_jar_manifest_nodata (line 26) | def test_jar_manifest_nodata(self):
method test_jar_manifest_rhel_8 (line 32) | def test_jar_manifest_rhel_8(self):
method test_jar_manifest_multi_rhel_8 (line 38) | def test_jar_manifest_multi_rhel_8(self):
FILE: tests/test_jc.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_jc_parse_csv (line 10) | def test_jc_parse_csv(self):
method test_jc_parse_csv_s_is_generator (line 19) | def test_jc_parse_csv_s_is_generator(self):
method test_jc_parse_kv (line 22) | def test_jc_parse_kv(self):
method test_jc_parser_mod_list_is_list (line 31) | def test_jc_parser_mod_list_is_list(self):
method test_jc_parser_mod_list_contains_csv (line 34) | def test_jc_parser_mod_list_contains_csv(self):
method test_jc_parser_mod_list_length (line 37) | def test_jc_parser_mod_list_length(self):
method test_jc_plugin_parser_mod_list_is_list (line 40) | def test_jc_plugin_parser_mod_list_is_list(self):
method test_jc_slurpable_parser_mod_list_is_list (line 43) | def test_jc_slurpable_parser_mod_list_is_list(self):
method test_version_info (line 46) | def test_version_info(self):
FILE: tests/test_jc_cli.py
class MyTests (line 23) | class MyTests(unittest.TestCase):
method test_cli_magic_parser (line 24) | def test_cli_magic_parser(self):
method test_cli_set_env_colors (line 59) | def test_cli_set_env_colors(self):
method test_cli_json_out (line 158) | def test_cli_json_out(self):
method test_cli_json_out_mono (line 192) | def test_cli_json_out_mono(self):
method test_cli_json_out_pretty (line 217) | def test_cli_json_out_pretty(self):
method test_cli_json_out_pretty_no_pygments (line 242) | def test_cli_json_out_pretty_no_pygments(self):
method test_cli_yaml_out (line 261) | def test_cli_yaml_out(self):
method test_cli_yaml_out_mono (line 295) | def test_cli_yaml_out_mono(self):
method test_cli_about_jc (line 321) | def test_cli_about_jc(self):
method test_cli_parsers_text (line 327) | def test_cli_parsers_text(self):
method test_add_meta_to_simple_dict (line 331) | def test_add_meta_to_simple_dict(self):
method test_add_meta_to_simple_list (line 342) | def test_add_meta_to_simple_list(self):
method test_add_meta_to_dict_existing_meta (line 353) | def test_add_meta_to_dict_existing_meta(self):
method test_add_meta_to_list_existing_meta (line 364) | def test_add_meta_to_list_existing_meta(self):
method test_slice_none_str (line 375) | def test_slice_none_str(self):
method test_slice_positive_str (line 396) | def test_slice_positive_str(self):
method test_slice_negative_str (line 415) | def test_slice_negative_str(self):
method test_slice_none_iter (line 434) | def test_slice_none_iter(self):
method test_slice_positive_iter (line 457) | def test_slice_positive_iter(self):
method test_slice_negative_iter (line 478) | def test_slice_negative_iter(self):
method test_slurp_standard (line 499) | def test_slurp_standard(self):
method test_slurp_standard_with_meta_out (line 509) | def test_slurp_standard_with_meta_out(self):
method test_slurp_proc (line 523) | def test_slurp_proc(self):
method test_slurp_proc_with_meta_out (line 570) | def test_slurp_proc_with_meta_out(self):
FILE: tests/test_jc_lib.py
class MyTests (line 9) | class MyTests(unittest.TestCase):
method test_lib_get_parser_string (line 10) | def test_lib_get_parser_string(self):
method test_lib_get_parser_broken_parser (line 14) | def test_lib_get_parser_broken_parser(self):
method test_lib_get_parser_module (line 20) | def test_lib_get_parser_module(self):
method test_lib_parse_csv (line 24) | def test_lib_parse_csv(self):
method test_lib_parse_csv_s_is_generator (line 33) | def test_lib_parse_csv_s_is_generator(self):
method test_lib_parse_kv (line 36) | def test_lib_parse_kv(self):
method test_lib_parser_mod_list_is_list (line 45) | def test_lib_parser_mod_list_is_list(self):
Copy disabled (too large)
Download .json
Condensed preview — 2877 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (111,383K chars).
[
{
"path": ".gitignore",
"chars": 89,
"preview": "__pycache__\n*.pyc\ndist/\nbuild/\n*.egg-info/\n.github/\n.vscode/\n_config.yml\n.venv\n.DS_Store\n"
},
{
"path": "CHANGELOG",
"chars": 39591,
"preview": "jc changelog\n\n202501012 v1.25.6\n- Add `net-localgroup` Windows command parser\n- Add `net-user` Windows command parser\n- "
},
{
"path": "CONTRIBUTING.md",
"chars": 6997,
"preview": "# Contributing to jc\nWe love your input! We want to make contributing to this project as easy and\ntransparent as possibl"
},
{
"path": "EXAMPLES.md",
"chars": 98286,
"preview": "## JC Examples\n### acpi\n```bash\nacpi -V | jc --acpi -p # or: jc -p acpi -V\n```\n```json\n[\n {\n \"type\": \"Batt"
},
{
"path": "LICENSE.md",
"chars": 1068,
"preview": "MIT License\n\nCopyright (c) 2020 Kelly Brazil\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
},
{
"path": "MANIFEST.in",
"chars": 55,
"preview": "include jc/py.typed\ninclude man/jc.1\ninclude CHANGELOG\n"
},
{
"path": "README-snap.md",
"chars": 1183,
"preview": "# How to use `jc` with `snap`\n\n## How to build `snap` package\n\n- Install `snapd`. [One](https://snapcraft.io/docs/instal"
},
{
"path": "README.md",
"chars": 65576,
"preview": "[](https://pypi.org/project/jc/)\n\n> Check out the `jc` Python [package docu"
},
{
"path": "build-completions.py",
"chars": 352,
"preview": "#!/usr/bin/env python3\n# build Bash and Zsh completion scripts and add to the completions folder\nfrom jc.shell_completio"
},
{
"path": "build-package.sh",
"chars": 127,
"preview": "#!/bin/bash\n# build jc PIP package\n# to install locally, run: pip3 install jc-x.x.tar.gz\n\npython3 setup.py sdist bdist"
},
{
"path": "completions/jc_bash_completion.sh",
"chars": 6527,
"preview": "_jc()\n{\n local cur prev words cword jc_commands jc_parsers jc_options \\\n jc_about_options jc_about_mod_optio"
},
{
"path": "completions/jc_zsh_completion.sh",
"chars": 26761,
"preview": "#compdef jc\n\n_jc() {\n local -a jc_commands jc_commands_describe \\\n jc_parsers jc_parsers_describe \\\n "
},
{
"path": "doc2md.py",
"chars": 2719,
"preview": "#!/usr/bin/env python3\n\n\"\"\"\nConvert parser doc string to markdown\n\"\"\"\nimport sys\nimport importlib\nfrom inspect import is"
},
{
"path": "docgen.sh",
"chars": 1814,
"preview": "#!/bin/bash\n# Generate markdown document files (*.md)\n# Requires the yapf python library\n# use ./docgen all to generate "
},
{
"path": "docs/lib.md",
"chars": 8252,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.lib\"></a>\n\n# jc.lib\n\n## Table of Contents\n\n* [jc.lib](#jc.lib)\n "
},
{
"path": "docs/parsers/acpi.md",
"chars": 5934,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.acpi\"></a>\n\n# jc.parsers.acpi\n\njc - JSON Convert `acpi` c"
},
{
"path": "docs/parsers/airport.md",
"chars": 2495,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.airport\"></a>\n\n# jc.parsers.airport\n\njc - JSON Convert `a"
},
{
"path": "docs/parsers/airport_s.md",
"chars": 2900,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.airport_s\"></a>\n\n# jc.parsers.airport_s\n\njc - JSON Conver"
},
{
"path": "docs/parsers/amixer.md",
"chars": 2740,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.amixer\"></a>\n\n# jc.parsers.amixer\n\njc - JSON Convert `ami"
},
{
"path": "docs/parsers/apt_cache_show.md",
"chars": 5424,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.apt_cache_show\"></a>\n\n# jc.parsers.apt_cache_show\n\njc - J"
},
{
"path": "docs/parsers/apt_get_sqq.md",
"chars": 5554,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.apt_get_sqq\"></a>\n\n# jc.parsers.apt_get_sqq\n\njc - JSON Co"
},
{
"path": "docs/parsers/arp.md",
"chars": 2988,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.arp\"></a>\n\n# jc.parsers.arp\n\njc - JSON Convert `arp` comm"
},
{
"path": "docs/parsers/asciitable.md",
"chars": 3562,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.asciitable\"></a>\n\n# jc.parsers.asciitable\n\njc - JSON Conv"
},
{
"path": "docs/parsers/asciitable_m.md",
"chars": 3623,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.asciitable_m\"></a>\n\n# jc.parsers.asciitable_m\n\njc - JSON "
},
{
"path": "docs/parsers/blkid.md",
"chars": 4324,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.blkid\"></a>\n\n# jc.parsers.blkid\n\njc - JSON Convert `blkid"
},
{
"path": "docs/parsers/bluetoothctl.md",
"chars": 4351,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.bluetoothctl\"></a>\n\n# jc.parsers.bluetoothctl\n\njc - JSON "
},
{
"path": "docs/parsers/cbt.md",
"chars": 2961,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.cbt\"></a>\n\n# jc.parsers.cbt\n\njc - JSON Convert `cbt` comm"
},
{
"path": "docs/parsers/cef.md",
"chars": 4853,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.cef\"></a>\n\n# jc.parsers.cef\n\njc - JSON Convert CEF string"
},
{
"path": "docs/parsers/cef_s.md",
"chars": 4438,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.cef_s\"></a>\n\n# jc.parsers.cef_s\n\njc - JSON Convert CEF st"
},
{
"path": "docs/parsers/certbot.md",
"chars": 4831,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.certbot\"></a>\n\n# jc.parsers.certbot\n\njc - JSON Convert `c"
},
{
"path": "docs/parsers/chage.md",
"chars": 2130,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.chage\"></a>\n\n# jc.parsers.chage\n\njc - JSON Convert `chage"
},
{
"path": "docs/parsers/cksum.md",
"chars": 1524,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.cksum\"></a>\n\n# jc.parsers.cksum\n\njc - JSON Convert `cksum"
},
{
"path": "docs/parsers/clf.md",
"chars": 5536,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.clf\"></a>\n\n# jc.parsers.clf\n\njc - JSON Convert Common Log"
},
{
"path": "docs/parsers/clf_s.md",
"chars": 3789,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.clf_s\"></a>\n\n# jc.parsers.clf_s\n\njc - JSON Convert Common"
},
{
"path": "docs/parsers/crontab.md",
"chars": 4171,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.crontab\"></a>\n\n# jc.parsers.crontab\n\njc - JSON Convert `c"
},
{
"path": "docs/parsers/crontab_u.md",
"chars": 4258,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.crontab_u\"></a>\n\n# jc.parsers.crontab_u\n\njc - JSON Conver"
},
{
"path": "docs/parsers/csv.md",
"chars": 2290,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.csv\"></a>\n\n# jc.parsers.csv\n\njc - JSON Convert `csv` file"
},
{
"path": "docs/parsers/csv_s.md",
"chars": 2564,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.csv_s\"></a>\n\n# jc.parsers.csv_s\n\njc - JSON Convert `csv` "
},
{
"path": "docs/parsers/curl_head.md",
"chars": 9685,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.curl_head\"></a>\n\n# jc.parsers.curl_head\n\njc - JSON Conver"
},
{
"path": "docs/parsers/date.md",
"chars": 2617,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.date\"></a>\n\n# jc.parsers.date\n\njc - JSON Convert `date` c"
},
{
"path": "docs/parsers/datetime_iso.md",
"chars": 2379,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.datetime_iso\"></a>\n\n# jc.parsers.datetime_iso\n\njc - JSON "
},
{
"path": "docs/parsers/debconf_show.md",
"chars": 2326,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.debconf_show\"></a>\n\n# jc.parsers.debconf_show\n\njc - JSON "
},
{
"path": "docs/parsers/df.md",
"chars": 2643,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.df\"></a>\n\n# jc.parsers.df\n\njc - JSON Convert `df` command"
},
{
"path": "docs/parsers/dig.md",
"chars": 8523,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.dig\"></a>\n\n# jc.parsers.dig\n\njc - JSON Convert `dig` comm"
},
{
"path": "docs/parsers/dir.md",
"chars": 3267,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.dir\"></a>\n\n# jc.parsers.dir\n\njc - JSON Convert `dir` comm"
},
{
"path": "docs/parsers/dmidecode.md",
"chars": 4383,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.dmidecode\"></a>\n\n# jc.parsers.dmidecode\n\njc - JSON Conver"
},
{
"path": "docs/parsers/dpkg_l.md",
"chars": 3816,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.dpkg_l\"></a>\n\n# jc.parsers.dpkg_l\n\njc - JSON Convert `dpk"
},
{
"path": "docs/parsers/du.md",
"chars": 2506,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.du\"></a>\n\n# jc.parsers.du\n\njc - JSON Convert `du` command"
},
{
"path": "docs/parsers/efibootmgr.md",
"chars": 2673,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.efibootmgr\"></a>\n\n# jc.parsers.efibootmgr\n\njc - JSON Conv"
},
{
"path": "docs/parsers/email_address.md",
"chars": 1626,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.email_address\"></a>\n\n# jc.parsers.email_address\n\njc - JSO"
},
{
"path": "docs/parsers/env.md",
"chars": 2003,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.env\"></a>\n\n# jc.parsers.env\n\njc - JSON Convert `env` and "
},
{
"path": "docs/parsers/ethtool.md",
"chars": 6167,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ethtool\"></a>\n\n# jc.parsers.ethtool\n\njc - JSON Convert `e"
},
{
"path": "docs/parsers/file.md",
"chars": 1766,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.file\"></a>\n\n# jc.parsers.file\n\njc - JSON Convert `file` c"
},
{
"path": "docs/parsers/find.md",
"chars": 1625,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.find\"></a>\n\n# jc.parsers.find\n\njc - JSON Convert `find` c"
},
{
"path": "docs/parsers/findmnt.md",
"chars": 2404,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.findmnt\"></a>\n\n# jc.parsers.findmnt\n\njc - JSON Convert `f"
},
{
"path": "docs/parsers/finger.md",
"chars": 2573,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.finger\"></a>\n\n# jc.parsers.finger\n\njc - JSON Convert `fin"
},
{
"path": "docs/parsers/free.md",
"chars": 1962,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.free\"></a>\n\n# jc.parsers.free\n\njc - JSON Convert `free` c"
},
{
"path": "docs/parsers/fstab.md",
"chars": 2430,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.fstab\"></a>\n\n# jc.parsers.fstab\n\njc - JSON Convert `fstab"
},
{
"path": "docs/parsers/git_log.md",
"chars": 6338,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.git_log\"></a>\n\n# jc.parsers.git_log\n\njc - JSON Convert `g"
},
{
"path": "docs/parsers/git_log_s.md",
"chars": 3206,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.git_log_s\"></a>\n\n# jc.parsers.git_log_s\n\njc - JSON Conver"
},
{
"path": "docs/parsers/git_ls_remote.md",
"chars": 2092,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.git_ls_remote\"></a>\n\n# jc.parsers.git_ls_remote\n\njc - JSO"
},
{
"path": "docs/parsers/gpg.md",
"chars": 5006,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.gpg\"></a>\n\n# jc.parsers.gpg\n\njc - JSON Convert `gpg --wit"
},
{
"path": "docs/parsers/group.md",
"chars": 2505,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.group\"></a>\n\n# jc.parsers.group\n\njc - JSON Convert `/etc/"
},
{
"path": "docs/parsers/gshadow.md",
"chars": 1936,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.gshadow\"></a>\n\n# jc.parsers.gshadow\n\njc - JSON Convert `/"
},
{
"path": "docs/parsers/hash.md",
"chars": 1155,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.hash\"></a>\n\n# jc.parsers.hash\n\njc - JSON Convert `hash` c"
},
{
"path": "docs/parsers/hashsum.md",
"chars": 1933,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.hashsum\"></a>\n\n# jc.parsers.hashsum\n\njc - JSON Convert `h"
},
{
"path": "docs/parsers/hciconfig.md",
"chars": 7714,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.hciconfig\"></a>\n\n# jc.parsers.hciconfig\n\njc - JSON Conver"
},
{
"path": "docs/parsers/history.md",
"chars": 1862,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.history\"></a>\n\n# jc.parsers.history\n\njc - JSON Convert `h"
},
{
"path": "docs/parsers/host.md",
"chars": 2238,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.host\"></a>\n\n# jc.parsers.host\n\njc - JSON Convert `host` c"
},
{
"path": "docs/parsers/hosts.md",
"chars": 1803,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.hosts\"></a>\n\n# jc.parsers.hosts\n\njc - JSON Convert `/etc/"
},
{
"path": "docs/parsers/http_headers.md",
"chars": 10594,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.http_headers\"></a>\n\n# jc.parsers.http_headers\n\njc - JSON "
},
{
"path": "docs/parsers/id.md",
"chars": 2429,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.id\"></a>\n\n# jc.parsers.id\n\njc - JSON Convert `id` command"
},
{
"path": "docs/parsers/ifconfig.md",
"chars": 6841,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ifconfig\"></a>\n\n# jc.parsers.ifconfig\n\njc - JSON Convert "
},
{
"path": "docs/parsers/ini.md",
"chars": 2263,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ini\"></a>\n\n# jc.parsers.ini\n\njc - JSON Convert INI file p"
},
{
"path": "docs/parsers/ini_dup.md",
"chars": 2654,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ini_dup\"></a>\n\n# jc.parsers.ini_dup\n\njc - JSON Convert IN"
},
{
"path": "docs/parsers/iostat.md",
"chars": 4555,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.iostat\"></a>\n\n# jc.parsers.iostat\n\njc - JSON Convert `ios"
},
{
"path": "docs/parsers/iostat_s.md",
"chars": 4110,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.iostat_s\"></a>\n\n# jc.parsers.iostat_s\n\njc - JSON Convert "
},
{
"path": "docs/parsers/ip_address.md",
"chars": 19473,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ip_address\"></a>\n\n# jc.parsers.ip_address\n\njc - JSON Conv"
},
{
"path": "docs/parsers/ip_route.md",
"chars": 1452,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ip_route\"></a>\n\n# jc.parsers.ip_route\n\njc - JSON Convert "
},
{
"path": "docs/parsers/ipconfig.md",
"chars": 16374,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ipconfig\"></a>\n\n# jc.parsers.ipconfig\n\njc - JSON Convert "
},
{
"path": "docs/parsers/iptables.md",
"chars": 4939,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.iptables\"></a>\n\n# jc.parsers.iptables\n\njc - JSON Convert "
},
{
"path": "docs/parsers/iw_scan.md",
"chars": 3948,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.iw_scan\"></a>\n\n# jc.parsers.iw_scan\n\njc - JSON Convert `i"
},
{
"path": "docs/parsers/iwconfig.md",
"chars": 3128,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.iwconfig\"></a>\n\n# jc.parsers.iwconfig\n\njc - JSON Convert "
},
{
"path": "docs/parsers/jar_manifest.md",
"chars": 2913,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.jar_manifest\"></a>\n\n# jc.parsers.jar_manifest\n\njc - JSON "
},
{
"path": "docs/parsers/jobs.md",
"chars": 2433,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.jobs\"></a>\n\n# jc.parsers.jobs\n\njc - JSON Convert `jobs` c"
},
{
"path": "docs/parsers/jwt.md",
"chars": 1668,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.jwt\"></a>\n\n# jc.parsers.jwt\n\njc - JSON Convert JWT string"
},
{
"path": "docs/parsers/kv.md",
"chars": 2039,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.kv\"></a>\n\n# jc.parsers.kv\n\njc - JSON Convert `Key/Value` "
},
{
"path": "docs/parsers/kv_dup.md",
"chars": 2348,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.kv_dup\"></a>\n\n# jc.parsers.kv_dup\n\njc - JSON Convert `Key"
},
{
"path": "docs/parsers/last.md",
"chars": 3054,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.last\"></a>\n\n# jc.parsers.last\n\njc - JSON Convert `last` a"
},
{
"path": "docs/parsers/ls.md",
"chars": 3227,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ls\"></a>\n\n# jc.parsers.ls\n\njc - JSON Convert `ls` and `vd"
},
{
"path": "docs/parsers/ls_s.md",
"chars": 3126,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ls_s\"></a>\n\n# jc.parsers.ls_s\n\njc - JSON Convert `ls` and"
},
{
"path": "docs/parsers/lsattr.md",
"chars": 2685,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsattr\"></a>\n\n# jc.parsers.lsattr\n\njc - JSON Convert `lsa"
},
{
"path": "docs/parsers/lsb_release.md",
"chars": 1307,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsb_release\"></a>\n\n# jc.parsers.lsb_release\n\njc - JSON Co"
},
{
"path": "docs/parsers/lsblk.md",
"chars": 8242,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsblk\"></a>\n\n# jc.parsers.lsblk\n\njc - JSON Convert `lsblk"
},
{
"path": "docs/parsers/lsmod.md",
"chars": 2799,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsmod\"></a>\n\n# jc.parsers.lsmod\n\njc - JSON Convert `lsmod"
},
{
"path": "docs/parsers/lsof.md",
"chars": 2893,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsof\"></a>\n\n# jc.parsers.lsof\n\njc - JSON Convert `lsof` c"
},
{
"path": "docs/parsers/lspci.md",
"chars": 3857,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lspci\"></a>\n\n# jc.parsers.lspci\n\njc - JSON Convert `lspci"
},
{
"path": "docs/parsers/lsusb.md",
"chars": 9536,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.lsusb\"></a>\n\n# jc.parsers.lsusb\n\njc - JSON Convert `lsusb"
},
{
"path": "docs/parsers/m3u.md",
"chars": 2283,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.m3u\"></a>\n\n# jc.parsers.m3u\n\njc - JSON Convert M3U and M3"
},
{
"path": "docs/parsers/mdadm.md",
"chars": 7723,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.mdadm\"></a>\n\n# jc.parsers.mdadm\n\njc - JSON Convert `mdadm"
},
{
"path": "docs/parsers/mount.md",
"chars": 1900,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.mount\"></a>\n\n# jc.parsers.mount\n\njc - JSON Convert `mount"
},
{
"path": "docs/parsers/mpstat.md",
"chars": 3699,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.mpstat\"></a>\n\n# jc.parsers.mpstat\n\njc - JSON Convert `mps"
},
{
"path": "docs/parsers/mpstat_s.md",
"chars": 3976,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.mpstat_s\"></a>\n\n# jc.parsers.mpstat_s\n\njc - JSON Convert "
},
{
"path": "docs/parsers/needrestart.md",
"chars": 2362,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.needrestart\"></a>\n\n# jc.parsers.needrestart\n\njc - JSON Co"
},
{
"path": "docs/parsers/net_localgroup.md",
"chars": 1871,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.net_localgroup\"></a>\n\n# jc.parsers.net_localgroup\n\njc - J"
},
{
"path": "docs/parsers/net_user.md",
"chars": 6252,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.net_user\"></a>\n\n# jc.parsers.net_user\n\njc - JSON Convert "
},
{
"path": "docs/parsers/netstat.md",
"chars": 10687,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.netstat\"></a>\n\n# jc.parsers.netstat\n\njc - JSON Convert `n"
},
{
"path": "docs/parsers/nmcli.md",
"chars": 4662,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.nmcli\"></a>\n\n# jc.parsers.nmcli\n\njc - JSON Convert `nmcli"
},
{
"path": "docs/parsers/nsd_control.md",
"chars": 2127,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.nsd_control\"></a>\n\n# jc.parsers.nsd_control\n\njc - JSON Co"
},
{
"path": "docs/parsers/ntpq.md",
"chars": 4891,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ntpq\"></a>\n\n# jc.parsers.ntpq\n\njc - JSON Convert `ntpq -p"
},
{
"path": "docs/parsers/openvpn.md",
"chars": 5553,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.openvpn\"></a>\n\n# jc.parsers.openvpn\n\njc - JSON Convert op"
},
{
"path": "docs/parsers/os_prober.md",
"chars": 1466,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.os_prober\"></a>\n\n# jc.parsers.os_prober\n\njc - JSON Conver"
},
{
"path": "docs/parsers/os_release.md",
"chars": 2350,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.os_release\"></a>\n\n# jc.parsers.os_release\n\njc - JSON Conv"
},
{
"path": "docs/parsers/pacman.md",
"chars": 5989,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pacman\"></a>\n\n# jc.parsers.pacman\n\njc - JSON Convert `pac"
},
{
"path": "docs/parsers/passwd.md",
"chars": 2553,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.passwd\"></a>\n\n# jc.parsers.passwd\n\njc - JSON Convert `/et"
},
{
"path": "docs/parsers/path.md",
"chars": 1581,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.path\"></a>\n\n# jc.parsers.path\n\njc - JSON Convert POSIX pa"
},
{
"path": "docs/parsers/path_list.md",
"chars": 2073,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.path_list\"></a>\n\n# jc.parsers.path_list\n\njc - JSON Conver"
},
{
"path": "docs/parsers/pci_ids.md",
"chars": 2616,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pci_ids\"></a>\n\n# jc.parsers.pci_ids\n\njc - JSON Convert `p"
},
{
"path": "docs/parsers/pgpass.md",
"chars": 1650,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pgpass\"></a>\n\n# jc.parsers.pgpass\n\njc - JSON Convert Post"
},
{
"path": "docs/parsers/pidstat.md",
"chars": 3742,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pidstat\"></a>\n\n# jc.parsers.pidstat\n\njc - JSON Convert `p"
},
{
"path": "docs/parsers/pidstat_s.md",
"chars": 3672,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pidstat_s\"></a>\n\n# jc.parsers.pidstat_s\n\njc - JSON Conver"
},
{
"path": "docs/parsers/ping.md",
"chars": 5313,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ping\"></a>\n\n# jc.parsers.ping\n\njc - JSON Convert `ping` c"
},
{
"path": "docs/parsers/ping_s.md",
"chars": 3865,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ping_s\"></a>\n\n# jc.parsers.ping_s\n\njc - JSON Convert `pin"
},
{
"path": "docs/parsers/pip_list.md",
"chars": 1380,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pip_list\"></a>\n\n# jc.parsers.pip_list\n\njc - JSON Convert "
},
{
"path": "docs/parsers/pip_show.md",
"chars": 2299,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pip_show\"></a>\n\n# jc.parsers.pip_show\n\njc - JSON Convert "
},
{
"path": "docs/parsers/pkg_index_apk.md",
"chars": 3452,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pkg_index_apk\"></a>\n\n# jc.parsers.pkg_index_apk\n\njc - JSO"
},
{
"path": "docs/parsers/pkg_index_deb.md",
"chars": 5187,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.pkg_index_deb\"></a>\n\n# jc.parsers.pkg_index_deb\n\njc - JSO"
},
{
"path": "docs/parsers/plist.md",
"chars": 1934,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.plist\"></a>\n\n# jc.parsers.plist\n\njc - JSON Convert PLIST "
},
{
"path": "docs/parsers/postconf.md",
"chars": 2805,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.postconf\"></a>\n\n# jc.parsers.postconf\n\njc - JSON Convert "
},
{
"path": "docs/parsers/proc.md",
"chars": 3678,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc\"></a>\n\n# jc.parsers.proc\n\njc - JSON Convert Proc fil"
},
{
"path": "docs/parsers/proc_buddyinfo.md",
"chars": 2224,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_buddyinfo\"></a>\n\n# jc.parsers.proc_buddyinfo\n\njc - J"
},
{
"path": "docs/parsers/proc_cmdline.md",
"chars": 2160,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_cmdline\"></a>\n\n# jc.parsers.proc_cmdline\n\njc - JSON "
},
{
"path": "docs/parsers/proc_consoles.md",
"chars": 2354,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_consoles\"></a>\n\n# jc.parsers.proc_consoles\n\njc - JSO"
},
{
"path": "docs/parsers/proc_cpuinfo.md",
"chars": 5799,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_cpuinfo\"></a>\n\n# jc.parsers.proc_cpuinfo\n\njc - JSON "
},
{
"path": "docs/parsers/proc_crypto.md",
"chars": 3242,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_crypto\"></a>\n\n# jc.parsers.proc_crypto\n\njc - JSON Co"
},
{
"path": "docs/parsers/proc_devices.md",
"chars": 1868,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_devices\"></a>\n\n# jc.parsers.proc_devices\n\njc - JSON "
},
{
"path": "docs/parsers/proc_diskstats.md",
"chars": 5834,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_diskstats\"></a>\n\n# jc.parsers.proc_diskstats\n\njc - J"
},
{
"path": "docs/parsers/proc_driver_rtc.md",
"chars": 3368,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_driver_rtc\"></a>\n\n# jc.parsers.proc_driver_rtc\n\njc -"
},
{
"path": "docs/parsers/proc_filesystems.md",
"chars": 1555,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_filesystems\"></a>\n\n# jc.parsers.proc_filesystems\n\njc"
},
{
"path": "docs/parsers/proc_interrupts.md",
"chars": 2464,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_interrupts\"></a>\n\n# jc.parsers.proc_interrupts\n\njc -"
},
{
"path": "docs/parsers/proc_iomem.md",
"chars": 1598,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_iomem\"></a>\n\n# jc.parsers.proc_iomem\n\njc - JSON Conv"
},
{
"path": "docs/parsers/proc_ioports.md",
"chars": 1605,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_ioports\"></a>\n\n# jc.parsers.proc_ioports\n\njc - JSON "
},
{
"path": "docs/parsers/proc_loadavg.md",
"chars": 1741,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_loadavg\"></a>\n\n# jc.parsers.proc_loadavg\n\njc - JSON "
},
{
"path": "docs/parsers/proc_locks.md",
"chars": 2613,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_locks\"></a>\n\n# jc.parsers.proc_locks\n\njc - JSON Conv"
},
{
"path": "docs/parsers/proc_meminfo.md",
"chars": 2564,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_meminfo\"></a>\n\n# jc.parsers.proc_meminfo\n\njc - JSON "
},
{
"path": "docs/parsers/proc_modules.md",
"chars": 2785,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_modules\"></a>\n\n# jc.parsers.proc_modules\n\njc - JSON "
},
{
"path": "docs/parsers/proc_mtrr.md",
"chars": 2236,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_mtrr\"></a>\n\n# jc.parsers.proc_mtrr\n\njc - JSON Conver"
},
{
"path": "docs/parsers/proc_net_arp.md",
"chars": 1626,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_arp\"></a>\n\n# jc.parsers.proc_net_arp\n\njc - JSON "
},
{
"path": "docs/parsers/proc_net_dev.md",
"chars": 2935,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_dev\"></a>\n\n# jc.parsers.proc_net_dev\n\njc - JSON "
},
{
"path": "docs/parsers/proc_net_dev_mcast.md",
"chars": 2183,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_dev_mcast\"></a>\n\n# jc.parsers.proc_net_dev_mcast"
},
{
"path": "docs/parsers/proc_net_if_inet6.md",
"chars": 1863,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_if_inet6\"></a>\n\n# jc.parsers.proc_net_if_inet6\n\n"
},
{
"path": "docs/parsers/proc_net_igmp.md",
"chars": 3140,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_igmp\"></a>\n\n# jc.parsers.proc_net_igmp\n\njc - JSO"
},
{
"path": "docs/parsers/proc_net_igmp6.md",
"chars": 2690,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_igmp6\"></a>\n\n# jc.parsers.proc_net_igmp6\n\njc - J"
},
{
"path": "docs/parsers/proc_net_ipv6_route.md",
"chars": 2122,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_ipv6_route\"></a>\n\n# jc.parsers.proc_net_ipv6_rou"
},
{
"path": "docs/parsers/proc_net_netlink.md",
"chars": 2758,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_netlink\"></a>\n\n# jc.parsers.proc_net_netlink\n\njc"
},
{
"path": "docs/parsers/proc_net_netstat.md",
"chars": 9182,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_netstat\"></a>\n\n# jc.parsers.proc_net_netstat\n\njc"
},
{
"path": "docs/parsers/proc_net_packet.md",
"chars": 1999,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_packet\"></a>\n\n# jc.parsers.proc_net_packet\n\njc -"
},
{
"path": "docs/parsers/proc_net_protocols.md",
"chars": 3808,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_protocols\"></a>\n\n# jc.parsers.proc_net_protocols"
},
{
"path": "docs/parsers/proc_net_route.md",
"chars": 2334,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_route\"></a>\n\n# jc.parsers.proc_net_route\n\njc - J"
},
{
"path": "docs/parsers/proc_net_tcp.md",
"chars": 5749,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_tcp\"></a>\n\n# jc.parsers.proc_net_tcp\n\njc - JSON "
},
{
"path": "docs/parsers/proc_net_unix.md",
"chars": 2153,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_net_unix\"></a>\n\n# jc.parsers.proc_net_unix\n\njc - JSO"
},
{
"path": "docs/parsers/proc_pagetypeinfo.md",
"chars": 3090,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pagetypeinfo\"></a>\n\n# jc.parsers.proc_pagetypeinfo\n\n"
},
{
"path": "docs/parsers/proc_partitions.md",
"chars": 1933,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_partitions\"></a>\n\n# jc.parsers.proc_partitions\n\njc -"
},
{
"path": "docs/parsers/proc_pid_fdinfo.md",
"chars": 3214,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_fdinfo\"></a>\n\n# jc.parsers.proc_pid_fdinfo\n\njc -"
},
{
"path": "docs/parsers/proc_pid_io.md",
"chars": 1392,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_io\"></a>\n\n# jc.parsers.proc_pid_io\n\njc - JSON Co"
},
{
"path": "docs/parsers/proc_pid_maps.md",
"chars": 2743,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_maps\"></a>\n\n# jc.parsers.proc_pid_maps\n\njc - JSO"
},
{
"path": "docs/parsers/proc_pid_mountinfo.md",
"chars": 3939,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_mountinfo\"></a>\n\n# jc.parsers.proc_pid_mountinfo"
},
{
"path": "docs/parsers/proc_pid_numa_maps.md",
"chars": 2782,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_numa_maps\"></a>\n\n# jc.parsers.proc_pid_numa_maps"
},
{
"path": "docs/parsers/proc_pid_smaps.md",
"chars": 5060,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_smaps\"></a>\n\n# jc.parsers.proc_pid_smaps\n\njc - J"
},
{
"path": "docs/parsers/proc_pid_stat.md",
"chars": 6432,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_stat\"></a>\n\n# jc.parsers.proc_pid_stat\n\njc - JSO"
},
{
"path": "docs/parsers/proc_pid_statm.md",
"chars": 1592,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_statm\"></a>\n\n# jc.parsers.proc_pid_statm\n\njc - J"
},
{
"path": "docs/parsers/proc_pid_status.md",
"chars": 8598,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_pid_status\"></a>\n\n# jc.parsers.proc_pid_status\n\njc -"
},
{
"path": "docs/parsers/proc_slabinfo.md",
"chars": 2308,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_slabinfo\"></a>\n\n# jc.parsers.proc_slabinfo\n\njc - JSO"
},
{
"path": "docs/parsers/proc_softirqs.md",
"chars": 1586,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_softirqs\"></a>\n\n# jc.parsers.proc_softirqs\n\njc - JSO"
},
{
"path": "docs/parsers/proc_stat.md",
"chars": 3724,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_stat\"></a>\n\n# jc.parsers.proc_stat\n\njc - JSON Conver"
},
{
"path": "docs/parsers/proc_swaps.md",
"chars": 1741,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_swaps\"></a>\n\n# jc.parsers.proc_swaps\n\njc - JSON Conv"
},
{
"path": "docs/parsers/proc_uptime.md",
"chars": 1274,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_uptime\"></a>\n\n# jc.parsers.proc_uptime\n\njc - JSON Co"
},
{
"path": "docs/parsers/proc_version.md",
"chars": 1805,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_version\"></a>\n\n# jc.parsers.proc_version\n\njc - JSON "
},
{
"path": "docs/parsers/proc_vmallocinfo.md",
"chars": 2860,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_vmallocinfo\"></a>\n\n# jc.parsers.proc_vmallocinfo\n\njc"
},
{
"path": "docs/parsers/proc_vmstat.md",
"chars": 1686,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_vmstat\"></a>\n\n# jc.parsers.proc_vmstat\n\njc - JSON Co"
},
{
"path": "docs/parsers/proc_zoneinfo.md",
"chars": 8685,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.proc_zoneinfo\"></a>\n\n# jc.parsers.proc_zoneinfo\n\njc - JSO"
},
{
"path": "docs/parsers/ps.md",
"chars": 4849,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ps\"></a>\n\n# jc.parsers.ps\n\njc - JSON Convert `ps` command"
},
{
"path": "docs/parsers/resolve_conf.md",
"chars": 1877,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.resolve_conf\"></a>\n\n# jc.parsers.resolve_conf\n\njc - JSON "
},
{
"path": "docs/parsers/route.md",
"chars": 2928,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.route\"></a>\n\n# jc.parsers.route\n\njc - JSON Convert `route"
},
{
"path": "docs/parsers/route_print.md",
"chars": 5758,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.route_print\"></a>\n\n# jc.parsers.route_print\n\njc - JSON Co"
},
{
"path": "docs/parsers/rpm_qi.md",
"chars": 6849,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.rpm_qi\"></a>\n\n# jc.parsers.rpm_qi\n\njc - JSON Convert `rpm"
},
{
"path": "docs/parsers/rsync.md",
"chars": 4761,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.rsync\"></a>\n\n# jc.parsers.rsync\n\njc - JSON Convert `rsync"
},
{
"path": "docs/parsers/rsync_s.md",
"chars": 3934,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.rsync_s\"></a>\n\n# jc.parsers.rsync_s\n\njc - JSON Convert `r"
},
{
"path": "docs/parsers/semver.md",
"chars": 1758,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.semver\"></a>\n\n# jc.parsers.semver\n\njc - JSON Convert Sema"
},
{
"path": "docs/parsers/sfdisk.md",
"chars": 5886,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.sfdisk\"></a>\n\n# jc.parsers.sfdisk\n\njc - JSON Convert `sfd"
},
{
"path": "docs/parsers/shadow.md",
"chars": 2668,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.shadow\"></a>\n\n# jc.parsers.shadow\n\njc - JSON Convert `/et"
},
{
"path": "docs/parsers/srt.md",
"chars": 2782,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.srt\"></a>\n\n# jc.parsers.srt\n\njc - JSON Convert `SRT` file"
},
{
"path": "docs/parsers/ss.md",
"chars": 7994,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ss\"></a>\n\n# jc.parsers.ss\n\njc - JSON Convert `ss` command"
},
{
"path": "docs/parsers/ssh_conf.md",
"chars": 17697,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.ssh_conf\"></a>\n\n# jc.parsers.ssh_conf\n\njc - JSON Convert "
},
{
"path": "docs/parsers/sshd_conf.md",
"chars": 17660,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.sshd_conf\"></a>\n\n# jc.parsers.sshd_conf\n\njc - JSON Conver"
},
{
"path": "docs/parsers/stat.md",
"chars": 5954,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.stat\"></a>\n\n# jc.parsers.stat\n\njc - JSON Convert `stat` c"
},
{
"path": "docs/parsers/stat_s.md",
"chars": 3751,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.stat_s\"></a>\n\n# jc.parsers.stat_s\n\njc - JSON Convert `sta"
},
{
"path": "docs/parsers/swapon.md",
"chars": 1368,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.swapon\"></a>\n\n# jc.parsers.swapon\n\njc - JSON Convert `swa"
},
{
"path": "docs/parsers/sysctl.md",
"chars": 1978,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.sysctl\"></a>\n\n# jc.parsers.sysctl\n\njc - JSON Convert `sys"
},
{
"path": "docs/parsers/syslog.md",
"chars": 3724,
"preview": "[Home](https://kellyjonbrazil.github.io/jc/)\n<a id=\"jc.parsers.syslog\"></a>\n\n# jc.parsers.syslog\n\njc - JSON Convert Sysl"
}
]
// ... and 2677 more files (download for full content)
About this extraction
This page contains the full source code of the kellyjonbrazil/jc GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2877 files (97.3 MB), approximately 25.6M tokens, and a symbol index with 4033 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.