# フォーマット `jrnl`は様々な代替フォーマットをサポートしています。これらは、ジャーナルを`jrnl`のデフォルトとは異なる方法で表示したり、ジャーナルからのデータを他のプログラムにパイプして報告書を作成したり、`jrnl`のデータを好きなように使用したりするのに利用できます。 これらのフォーマットはいずれも検索と組み合わせて使用でき(例:`jrnl -contains "lorem ipsum" --format json`)、検索結果を指定されたフォーマットで表示したり、単独で使用して(例:`jrnl --format json`)選択されたジャーナルのすべてのエントリーを表示したりできます。 このページでは、すべての組み込みフォーマットの例を示していますが、`jrnl`はプラグインを通じてさらにフォーマットを追加することをサポートしているため、システムによってはさらに多くのフォーマットが利用可能な場合があります。システムで利用可能なフォーマットのリストについては、`jrnl --help`を参照してください。 これらのフォーマットはどれも互換性があり、以下では便宜上「表示」、「データ」、「レポート」フォーマットにグループ分けしているだけです。 ## 表示フォーマット これらのフォーマットは主にターミナルでジャーナルを表示することを目的としています。それでも、他のフォーマットと同じように使用できます(選択すればファイルに書き込むこともできます)。 ### Pretty ```sh jrnl --format pretty # または jrnl -1 # 任意の検索 ``` これは`jrnl`のデフォルトフォーマットです。`--format`が指定されていない場合、`pretty`が使用されます。 各エントリーのタイムスタンプをユーザー設定に従ってフォーマットし、同じ行にタイトルを表示します。その後、エントリーの本文が下に表示されます。 このフォーマットは、設定ファイルの以下の値を通じて設定可能です(詳細は[Advanced Usage](./advanced.md)を参照): - `colors` - `body` - `date` - `tags` - `title` - `indent_character` - `linewrap` - `timeformat` **出力例**: ```sh 2020-06-28 18:22 これは最初のサンプルエントリーです | これは最初のサンプルエントリーの本文テキストです。 2020-07-01 20:00 これは2番目のサンプルエントリーです | これは2番目のサンプルエントリーの本文テキストですが、 | これには@tagがあります。 2020-07-02 09:00 これは3番目のサンプルエントリーです | これは3番目のサンプルエントリーの本文テキストです。 ``` ### Short ```sh jrnl --format short # または jrnl --short ``` これはエントリーを短縮して、日付とタイトルのみを表示します。本質的には`pretty`フォーマットから各エントリーの本文を除いたものです。長いジャーナルエントリーがあり、検索に一致するエントリーのリストのみを表示したい場合に便利です。 **出力例**: ```sh 2020-06-28 18:22 これは最初のサンプルエントリーです 2020-07-01 20:00 これは2番目のサンプルエントリーです 2020-07-02 09:00 これは3番目のサンプルエントリーです ``` ### Fancy (または Boxed) ```sh jrnl --format fancy # または jrnl --format boxed ``` このフォーマットは各エントリーを枠線で囲みます。これにより、各エントリーの開始と終了がわかりやすくなります。フォーマットがいかに自由形式であるかを示す例であり、また、そういったものが好きな人にとっては~_~ファンシー~_~に見えるかもしれません。 !!! note 日本語の場合、文字幅の問題でボックスが崩れてしまうようです。 **出力例**: ```sh ┎──────────────────────────────────────────────────────────────────────╮2020-06-28 18:22 ┃ これは最初のサンプルエントリーです ╘═══════════════╕ ┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ ┃ これは最初のサンプルエントリーの本文テキストです。 │ ┖──────────────────────────────────────────────────────────────────────────────────────┘ ┎──────────────────────────────────────────────────────────────────────╮2020-07-01 20:00 ┃ これは2番目のサンプルエントリーです ╘═══════════════╕ ┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ ┃ これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 │ ┖──────────────────────────────────────────────────────────────────────────────────────┘ ┎──────────────────────────────────────────────────────────────────────╮2020-07-02 09:00 ┃ これは3番目のサンプルエントリーです ╘═══════════════╕ ┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤ ┃ これは3番目のサンプルエントリーの本文テキストです。 │ ┖──────────────────────────────────────────────────────────────────────────────────────┘ ``` ## データフォーマット これらのフォーマットは主に、ジャーナルを他のプログラムにパイプしたりエクスポートしたりすることを目的としています。それでも、他のフォーマットと同じように使用できます(必要に応じてファイルに書き込んだり、ターミナルに表示したりできます)。 !!! note これらのフォーマットを使用する際に「2つのエントリーが見つかりました」のようなメッセージボックスが表示されることがありますが、これらのメッセージは`stdout`ではなく`stderr`に書き込まれるため、`|`演算子を使用してパイプする際には含まれません。 ### JSON ```sh jrnl --format json ``` JSONは多くのプログラムで使用される非常に便利なフォーマットで、ほぼすべてのプログラミング言語でサポートされています。JSONデータでできることは多岐にわたります。例えば、`jq`([プロジェクトページ](https://github.com/stedolan/jq))を使用してジャーナルのフィールドをフィルタリングすることができます。 以下のように: ```sh $ j -3 --format json | jq '.entries[].date' jrnl-GFqVlfgP-py3.8 "2020-06-28" "2020-07-01" "2020-07-02" ``` あるいは、ジャーナルの[美しいタイムライン](http://timeline.knightlab.com/)を作成するのはどうでしょうか? **出力例**: ```json { "tags": { "@tag": 1 }, "entries": [ { "title": "これは最初のサンプルエントリーです", "body": "これは最初のサンプルエントリーの本文テキストです。", "date": "2020-06-28", "time": "18:22", "tags": [], "starred": false }, { "title": "これは2番目のサンプルエントリーです", "body": "これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。", "date": "2020-07-01", "time": "20:00", "tags": ["@tag"], "starred": false }, { "title": "これは3番目のサンプルエントリーです", "body": "これは3番目のサンプルエントリーの本文テキストです。", "date": "2020-07-02", "time": "09:00", "tags": [], "starred": false } ] } ``` ### Markdown ```sh jrnl --format markdown # または jrnl --format md ``` Markdownは人間が読みやすく、他のフォーマット(html、pdf)にレンダリングできるシンプルなマークアップ言語です。例えば、`jrnl`の[README](https://github.com/jrnl-org/jrnl/blob/develop/README.md)はmarkdownでフォーマットされており、Githubが一部のフォーマットを追加して見栄えを良くしています。 markdownフォーマットはエントリーを日付でグループ化し(まず年、次に月)、必要に応じてヘッダーマーキング(例:`#`、`##`など)を追加します。すでにジャーナルにmarkdownのヘッダーマーキングがある場合、これらの新しいヘッダーの下に適合するように必要に応じて増加します(つまり、`#`は`##`になります)。 このフォーマットは、例えば、ジャーナルをmarkdownからhtmlに変換するプログラムにエクスポートして、ジャーナルからウェブサイトやブログを作成するのに非常に便利です。 **出力例**: ```markdown # 2020 ## 6月 ### 2020-06-28 18:22 これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。 ## 7月 ### 2020-07-01 20:00 これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 ### 2020-07-02 09:00 これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。 ``` ### プレーンテキスト ```sh jrnl --format text # または jrnl --format txt ``` これは、`jrnl`がジャーナルをディスクに保存するのに使用するのと同じプレーンテキストフォーマットでジャーナルを出力します。このフォーマットは特に`jrnl`内でのジャーナルのインポートとエクスポートに便利です。 例えば、あるジャーナルから別のジャーナルにエントリーを移動したり、別のジャーナルからの検索結果で新しいジャーナルを作成したりするのに使用できます。 **出力例**: ```sh [2020-06-28 18:22] これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。 [2020-07-01 20:00] これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 [2020-07-02 09:00] これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。 ``` ### XML ```sh jrnl --format xml ``` これはジャーナルをXML形式で出力します。XMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。 **出力例**: ```xml これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。 これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。 1 ``` ### YAML ```sh jrnl --format yaml --file 'my_directory/' ``` これはジャーナルをYAML形式で出力します。YAMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。[ディレクトリへのエクスポート](#ディレクトリへのエクスポート)は唯一サポートされているYAMLエクスポートオプションであり、各エントリーは別々のファイルに書き込まれます。 **ファイル例**: ```yaml title: これは2番目のサンプルエントリーです date: 2020-07-01 20:00 starred: False tags: tag これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 ``` ## レポートフォーマット フォーマットはジャーナルデータを使用して異なる方法で表示するため、レポートの作成にも使用できます。 ### タグ ```sh jrnl --format tags # または jrnl --tags ``` このフォーマットは、フォーマットがどのようにレポート作成に使用できるかの簡単な例です。ジャーナル内(または検索結果内)の各タグと、そのタグが出現するエントリーの数を表示し、頻度順にソートします。 出力例: ```sh @one : 32 @two : 17 @three : 4 ``` ## オプション ### `--file`を使用したエクスポート 例: `jrnl --format json --file /some/path/to/a/file.txt` デフォルトでは、`jrnl`はエントリーをターミナルに出力します。しかし、`--file`とファイル名を一緒に指定すると、ターミナルに出力されるはずだった同じ出力がファイルに書き込まれます。これは出力をファイルにパイプするのと同じです。 したがって、bashの場合、以下の2つの文は同等です: ```sh jrnl --format json --file myjournal.json ``` ```sh jrnl --format json > myjournal.json ``` #### ディレクトリへのエクスポート `--file`引数がディレクトリの場合、jrnlは各エントリーを個別のファイルにエクスポートします: ```sh jrnl --format yaml --file my_entries/ ``` `my_entries/`の内容は次のようになります: ```output my_entries/ |- 2013_06_03_a-beautiful-day.yaml |- 2013_06_07_dinner-with-gabriel.yaml |- ... ```