クリップボード上のJSONを整形するためのjqの使い方
Using jq to format JSON on the clipboard (chris48s.github.io)
要約
この記事では、コマンドラインJSONプロセッサであるjqの便利な使い方を紹介しています。特に、クリップボードの内容を整形して元に戻すためのエイリアス(別名)の作成方法に焦点を当てています。macOSのpbcopy/pbpasteやLinuxのxclipを使った具体的なコマンド例と、JSONでない場合にエラーとならず元の内容を保持するエラーハンドリングの実装方法を解説しています。
全文翻訳
jqを使ってクリップボード上のJSONを整形する
Jqは素晴らしいツールです。私は頻繁に使っていますが、Sequoia McDowell氏による最近の記事には、まだ素晴らしいヒントがいくつか含まれています。一読の価値があります。この記事で特に注目したのは、以下のスニペットです。
この pretty-printing/フォーマット機能がとても気に入ったので、コピーした(OSの「クリップボード」にある)JSONをフォーマットしてクリップボードに戻すエイリアスを作成しました。
alias jsontidy="pbpaste | jq '.' | pbcopy"
これは非常に便利ですが、少し調整が必要です。まず、指摘されているように、pbcopyとpbpasteはmacOSのユーティリティです。心配いりません。Linuxではxclipに置き換えることができます。
xclip -selection clipboard -o | jq '.' | xclip -selection clipboard
しかし、ここで小さな問題に気づきました。このコマンドを実行し、クリップボードのテキストがJSONでない場合、jqはゼロ以外のコードで終了し、標準エラー出力にparse error: Invalid numeric literal at line 1, column 6のようなメッセージを出力しますが、標準出力には何も出力しません。パイプはゼロ以外の終了コードを気にしないため、クリップボードにあったものはすべて空文字列で上書きされてしまいます。そこで、エラーハンドリングを追加しましょう。
alias jsontidy="xclip -selection clipboard -o | (jq '.' || xclip -selection clipboard -o) | xclip -selection clipboard"
これでjsontidyは、JSONとして解析できるものはクリップボードからフォーマットしますが、そうでない場合はそのままにしておきます。