Sepertinya saya tidak bisa jq
berperilaku "normal" dalam pipa shell. Sebagai contoh:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
hasil jq
hanya dengan mencetak teks bantuannya *. Hal yang sama terjadi jika saya mencoba mengarahkan jq
output ke file:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Apakah jq
bail out sengaja jika menentukan bahwa itu tidak dijalankan dari tty? Bagaimana saya bisa mencegah perilaku ini sehingga saya bisa menggunakan jq
pipa?
* (Saya menyadari contoh ini berisi penggunaan kucing yang tidak berguna ; hanya untuk ilustrasi)
jq
keduanya membaca dari pipa dan menulis ke pipa lain. Jika keinginannya hanya melihat outputjq
, makacat
itu sendiri tidak perlu..
kebiasaan itu, karena praktik standar saya adalah pertama-tama melihat seperti apa JSON itu, kemudian kembali dan mulai menambahkan ke filter, yang lebih sering perlu dikutip.Satu use case yang saya temukan sering saya lakukan juga adalah "Bagaimana cara membuat data JSON untuk memasok ke perintah shell lain, misalnya
curl
?" Cara saya melakukan ini adalah dengan menggunakan--null-input/-n
opsi:Dan sebuah contoh meneruskannya ke
curl
:sumber
jq
pada awal pipa shell daripada di tengah / akhir untuk memfilter pada beberapa data. Thecurl
contoh adalah satu dasar, tapi saya menemukan diri saya mengetik sering bergandengan data JSON kecurl
dan berusaha untuk mengutip benar, jadi saya pikir mungkin berguna untuk orang lain juga.