Ich kann mich jq
in einer Shell-Pipeline nicht "normal" verhalten. Beispielsweise:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
führt dazu jq
, dass der Hilfetext * einfach ausgedruckt wird. Das gleiche passiert, wenn ich versuche, die jq
Ausgabe in eine Datei umzuleiten :
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Wird jq
absichtlich gerettet, wenn festgestellt wird, dass es nicht von einem tty ausgeführt wird? Wie kann ich dieses Verhalten verhindern, damit ich es jq
in einer Pipeline verwenden kann?
* (Mir ist klar, dass dieses Beispiel eine nutzlose Verwendung von Katze enthält ; es dient nur zu Illustrationszwecken)
jq
sowohl aus einer Pipe gelesen als auch in eine andere Pipe geschrieben wird. Wenn der Wunsch besteht, einfach die Ausgabe von zu sehenjq
, dann istcat
selbst unnötig..
Gewohnheit, da meine Standardpraxis darin besteht, zuerst zu sehen, wie der JSON aussieht, und dann zurück zu gehen und dem Filter etwas hinzuzufügen, das meistens zitiert werden muss.Ein Anwendungsfall, den ich auch häufig gemacht habe, ist "Wie konstruiere ich JSON-Daten, um sie beispielsweise in andere Shell-Befehle zu übertragen
curl
?" Ich mache das mit der--null-input/-n
Option:Und ein Beispiel, das es weitergibt an
curl
:quelle
jq
am Anfang einer Shell-Pipeline generieren / verwenden und nicht in der Mitte / am Ende, um einige Daten herauszufiltern . Dascurl
Beispiel istcurl
einfach , aber ich habe häufig JSON-Daten von Hand eingegeben und versucht, die richtigen Zitate zu erstellen. Daher dachte ich, dass dies auch für andere nützlich sein könnte.