jc
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
jc ist ein in Python geschriebenes Programm, welches die Ausgabe von über 100 gängigen/populären Kommandozeilenprogrammen nach JSON 🇬🇧 oder alternativ YAML konvertiert. Dies ist besonders praktisch, wenn man die Ausgabe mit Tools wie jq weiter bearbeiten möchte. Außerdem kann jc auch csv-Dateien als Eingabe nehmen und diese dann nach JSON konvertieren.
Außer für Linux ist jc auch für Windows und macOS verfügbar.
Installation¶
aus den Paketquellen¶
jc ist in den Paketquellen ab Impish enthalten[1]:
jc (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install jc
Oder mit apturl installieren, Link: apt://jc
Allerdings ist die Programmversion in den Paketquellen je nach Ubuntu-Version (ziemlich) alt, so dass eine manuelle Installation vorzuziehen ist.
Paket manuell installieren¶
Auf der Release-Seite des Projekts gibt es ein fertiges DEB-Paket, dass man manuell installieren kann[2].
Hinweis!
Fremdpakete können das System gefährden.
über pip¶
Der Python-Paketmanager pip stellt häufig aktuellere Versionen von Programmen als in den Paketquellen bereit. Folgendermaßen lässt sich das Programm darüber installieren:
pip3 install jc # Programm wird nur für den aktuellen Nutzer installiert
Ab Ubuntu 23.04 muss in eine virtuelle Umgebung für Python installiert werden:
python3 -m venv venv-name && source venv-name/bin/activate # venv-name durch den gewünschten Namen ersetzen pip3 install jc # Programm ist nur bei aktiver virtueller Umgebung nutzbar
Hinweis!
Fremdsoftware kann das System gefährden.
Benutzung¶
Die allgemeine Syntax von jc ist:
KOMMANDO | jc PARSER [OPTIONEN]
KOMMANDO
ist dabei der Befehl, der die Eingabe für jc liefert. PARSER
teilt jc mit, welches Programm die Eingabe liefert, wodurch jc weiß, wie die Eingabe zu verarbeiten und konvertieren ist.
Beispielsweise liefert der Befehl
uname -a | jc --uname
die folgende Ausgabe:
1 | {"kernel_name":"Linux","node_name":"thinkbook15","kernel_release":"5.15.0-37-generic","operating_system":"GNU/Linux","processor":"x86_64","hardware_platform":"x86_64","machine":"x86_64","kernel_version":"#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022"} |
Eine Übersicht über alle Befehle, deren Ausgabe jc zu JSON konvertieren kann, liefert der Aufruf von
jc -h
oder alternativ der Abschnitt "Parsers" auf der Projektseite.
jc kennt eine Reihe von Optionen, von denen zwei besonders interessant sind: die Option -p
formatiert die Ausgabe mit sinnvollen Zeilenumbrüchen besser. Der obige Befehl in Kombination mit der Option -p
liefert die folgende Ausgabe:
1 2 3 4 5 6 7 8 9 10 | { "kernel_name": "Linux", "node_name": "thinkbook15", "kernel_release": "5.15.0-37-generic", "operating_system": "GNU/Linux", "processor": "x86_64", "hardware_platform": "x86_64", "machine": "x86_64", "kernel_version": "#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022" } |
Möchte man die Ausgabe in YAML statt JSON, muss man die Option -y
nutzen. Die Ausgabe sieht dann so aus:
1 2 3 4 5 6 7 8 9 | --- kernel_name: Linux node_name: thinkbook15 kernel_release: 5.15.0-37-generic operating_system: GNU/Linux processor: x86_64 hardware_platform: x86_64 machine: x86_64 kernel_version: '#39-Ubuntu SMP Wed Jun 1 19:16:45 UTC 2022' |
Wie weiter oben gesagt, kann jc auch CSV nach JSON konvertieren. Beim Einlesen einer CSV-Datei erkennt jc den Delimiter automatisch, zumindest dann, wenn es sich um einen gängigen Delimiter wie das Komma ,
oder das Semikolon ;
oder einen Tabulator handelt.
Die folgende Datei
1 2 3 4 | Name;Version;LTS/STS;Erscheinungsdatum;Supportende Jammy Jellyfish;22.04;LTS;21. April 2022 ;April 2027 Impish Indri;21.10;STS;14. Oktober 2021;14. Juli 2022 Focal Fossa;20.04;LTS;23. April 2020;April 2025 |
konvertiert jc wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [ { "Name": "Jammy Jellyfish", "Version": "22.04", "LTS/STS": "LTS", "Erscheinungsdatum": "21. April 2022 ", "Supportende": "April 2027" }, { "Name": "Impish Indri", "Version": "21.10", "LTS/STS": "STS", "Erscheinungsdatum": "14. Oktober 2021", "Supportende": "14. Juli 2022" } { "Name": "Focal Fossa", "Version": "20.04", "LTS/STS": "LTS", "Erscheinungsdatum": "23. April 2020", "Supportende": "April 2025" } ] |
Auf der Projektseite im Abschnitt Examples sind eine ganze Reihe weiterer Beispiele zu finden, wie jc die Ausgabe diverser Programme nach JSON konvertiert.