jinxi is a simple wrapper for inxi to create json output that can be parsed more easily than the original inxi output. The native inxi json output is heavily opinionated about the key format in use. This has its reasons (see inxi webpage) and is totaly fine, but makes it hard to access values in simple (shell) scripts.
As an example challenge let's try to retrieve all available network device names. The regular inxi output looks like this:
$> inxi --network
Network:
Device-1: Intel Ethernet I226-V driver: igc
Device-2: MEDIATEK MT7922 802.11ax PCI Express Wireless Network Adapter
driver: mt7921eusage:
$> inxi --network --output json --output-file print | jq[
{
"000#1#0#Network": [
{
"002#1#2#driver": "igc",
"001#1#1#Device": "Intel Ethernet I226-V"
},
{
"001#1#1#Device": "MEDIATEK MT7922 802.11ax PCI Express Wireless Network Adapter",
"002#1#2#driver": "mt7921e"
}
]
}
]querying with jq:
$> inxi --network --info --output json --output-file print | jq -r '
.[] | to_entries[] | select(.key | endswith("Network")).value |
.[] | to_entries[] | select(.key | endswith("Device")).value'Intel Ethernet I226-V
MEDIATEK MT7922 802.11ax PCI Express Wireless Network Adapterusage:
$> jinxi --network | jq{
"Network": {
"Device-1": {
"value": "Intel Ethernet I226-V",
"driver": {
"value": "igc"
}
},
"Device-2": {
"value": "MEDIATEK MT7922 802.11ax PCI Express Wireless Network Adapter",
"driver": {
"value": "mt7921e"
}
}
}
}querying with jq:
$> jinxi --network | jq -r '.Network.[].value'Intel Ethernet I226-V
MEDIATEK MT7922 802.11ax PCI Express Wireless Network Adapterrequired packages:
- inxi
- nodejs
- npm (only for building)
$> npm run all && sudo npm run system-installAs jinxi is only a wrapper, please refer to the original inxi documentation.