HN 日本語サマリー

← 一覧へ戻る
プログラミング

クリップボード上のJSONを整形するためのjqの使い方

Using jq to format JSON on the clipboard (chris48s.github.io)

36 pointsby stefanvdw111 コメント

要約

この記事では、コマンドラインJSONプロセッサであるjqの便利な使い方を紹介しています。特に、クリップボードの内容を整形して元に戻すためのエイリアス(別名)の作成方法に焦点を当てています。macOSのpbcopy/pbpasteやLinuxのxclipを使った具体的なコマンド例と、JSONでない場合にエラーとならず元の内容を保持するエラーハンドリングの実装方法を解説しています。

全文翻訳

Jqは素晴らしいツールです。私はそれを頻繁に使いますが、Sequoia McDowell氏による最近の記事には、まだいくつかの素晴らしいヒントが含まれています。一読の価値は十分にあります。 この投稿で特に注目したのは、以下のスニペットです。 この pretty-printing/フォーマット機能が非常に気に入ったので、コピーしたJSON(OSの「クリップボード」にある)をフォーマットしてクリップボードに戻すエイリアスを作成しました。 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として解析できるものであればクリップボードの内容をフォーマットしますが、そうでない場合はそのままにします。