Edited at

引数無しでjqを起動された場合にルートノードを表示する

More than 5 years have passed since last update.

JSONを手軽に整形できるjqはすごく便利なんですが、単に全体を整形したいだけでも引数にドットを渡さないといけないのが玉に瑕。例えばcurlでJSONを取得して整形しようと思うとこんな感じにドットがついて回ります。

curl http://example.com/example.json | jq .

.zshrc/.bashrcに以下の関数を定義しておけば、引数無し(で標準入力を渡した場合)にルートノードからの表示が行えます。先ほどの例だとこんな感じ。

curl http://example.com/example.json | jq

これでドットを打ち忘れてusageを見ることもなくなりますね。


.zshrc

# Display root node when run the jq without argument

function jq {
if [[ -p /dev/stdin && $# -eq 0 ]]; then
command jq .
else
command jq "$@"
fi
}