フォーマット

jrnlは様々な代替フォーマットをサポートしています。これらは、ジャーナルをjrnlのデフォルトとは異なる方法で表示したり、ジャーナルからのデータを他のプログラムにパイプして報告書を作成したり、jrnlのデータを好きなように使用したりするのに利用できます。

これらのフォーマットはいずれも検索と組み合わせて使用でき(例:jrnl -contains "lorem ipsum" --format json)、検索結果を指定されたフォーマットで表示したり、単独で使用して(例:jrnl --format json)選択されたジャーナルのすべてのエントリーを表示したりできます。

このページでは、すべての組み込みフォーマットの例を示していますが、jrnlはプラグインを通じてさらにフォーマットを追加することをサポートしているため、システムによってはさらに多くのフォーマットが利用可能な場合があります。システムで利用可能なフォーマットのリストについては、jrnl --helpを参照してください。

これらのフォーマットはどれも互換性があり、以下では便宜上「表示」、「データ」、「レポート」フォーマットにグループ分けしているだけです。

表示フォーマット

これらのフォーマットは主にターミナルでジャーナルを表示することを目的としています。それでも、他のフォーマットと同じように使用できます(選択すればファイルに書き込むこともできます)。

Pretty

jrnl --format pretty
# または
jrnl -1 # 任意の検索

これはjrnlのデフォルトフォーマットです。--formatが指定されていない場合、prettyが使用されます。

各エントリーのタイムスタンプをユーザー設定に従ってフォーマットし、同じ行にタイトルを表示します。その後、エントリーの本文が下に表示されます。

このフォーマットは、設定ファイルの以下の値を通じて設定可能です(詳細はAdvanced Usageを参照):

  • colors
  • body
  • date
  • tags
  • title
  • indent_character
  • linewrap
  • timeformat

出力例:

2020-06-28 18:22 これは最初のサンプルエントリーです
| これは最初のサンプルエントリーの本文テキストです。

2020-07-01 20:00 これは2番目のサンプルエントリーです
| これは2番目のサンプルエントリーの本文テキストですが、
| これには@tagがあります。

2020-07-02 09:00 これは3番目のサンプルエントリーです
| これは3番目のサンプルエントリーの本文テキストです。

Short

jrnl --format short
# または
jrnl --short

これはエントリーを短縮して、日付とタイトルのみを表示します。本質的にはprettyフォーマットから各エントリーの本文を除いたものです。長いジャーナルエントリーがあり、検索に一致するエントリーのリストのみを表示したい場合に便利です。

出力例:

2020-06-28 18:22 これは最初のサンプルエントリーです
2020-07-01 20:00 これは2番目のサンプルエントリーです
2020-07-02 09:00 これは3番目のサンプルエントリーです

Fancy (または Boxed)

jrnl --format fancy
# または
jrnl --format boxed

このフォーマットは各エントリーを枠線で囲みます。これにより、各エントリーの開始と終了がわかりやすくなります。フォーマットがいかに自由形式であるかを示す例であり、また、そういったものが好きな人にとっては~~ファンシー~~に見えるかもしれません。

Note

日本語の場合、文字幅の問題でボックスが崩れてしまうようです。

出力例:

┎──────────────────────────────────────────────────────────────────────╮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

jrnl --format json

JSONは多くのプログラムで使用される非常に便利なフォーマットで、ほぼすべてのプログラミング言語でサポートされています。JSONデータでできることは多岐にわたります。例えば、jqプロジェクトページ)を使用してジャーナルのフィールドをフィルタリングすることができます。 以下のように:

$ j -3 --format json | jq '.entries[].date'                                                                                                                            jrnl-GFqVlfgP-py3.8
"2020-06-28"
"2020-07-01"
"2020-07-02"

あるいは、ジャーナルの美しいタイムラインを作成するのはどうでしょうか?

出力例:

{
  "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

jrnl --format markdown
# または
jrnl --format md

Markdownは人間が読みやすく、他のフォーマット(html、pdf)にレンダリングできるシンプルなマークアップ言語です。例えば、jrnlREADMEはmarkdownでフォーマットされており、Githubが一部のフォーマットを追加して見栄えを良くしています。

markdownフォーマットはエントリーを日付でグループ化し(まず年、次に月)、必要に応じてヘッダーマーキング(例:###など)を追加します。すでにジャーナルにmarkdownのヘッダーマーキングがある場合、これらの新しいヘッダーの下に適合するように必要に応じて増加します(つまり、###になります)。

このフォーマットは、例えば、ジャーナルをmarkdownからhtmlに変換するプログラムにエクスポートして、ジャーナルからウェブサイトやブログを作成するのに非常に便利です。

出力例:

# 2020

## 6月

### 2020-06-28 18:22 これは最初のサンプルエントリーです

これは最初のサンプルエントリーの本文テキストです。

## 7月

### 2020-07-01 20:00 これは2番目のサンプルエントリーです

これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。

### 2020-07-02 09:00 これは3番目のサンプルエントリーです

これは3番目のサンプルエントリーの本文テキストです。

プレーンテキスト

jrnl --format text
# または
jrnl --format txt

これは、jrnlがジャーナルをディスクに保存するのに使用するのと同じプレーンテキストフォーマットでジャーナルを出力します。このフォーマットは特にjrnl内でのジャーナルのインポートとエクスポートに便利です。

例えば、あるジャーナルから別のジャーナルにエントリーを移動したり、別のジャーナルからの検索結果で新しいジャーナルを作成したりするのに使用できます。

出力例:

[2020-06-28 18:22] これは最初のサンプルエントリーです
これは最初のサンプルエントリーの本文テキストです。

[2020-07-01 20:00] これは2番目のサンプルエントリーです
これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。

[2020-07-02 09:00] これは3番目のサンプルエントリーです
これは3番目のサンプルエントリーの本文テキストです。

XML

jrnl --format xml

これはジャーナルをXML形式で出力します。XMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。

出力例:

<?xml version="1.0" ?>
<journal>
        <entries>
                <entry date="2020-06-28T18:22:00" starred="">これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。</entry>
                <entry date="2020-07-01T20:00:00" starred="">これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。</entry>
                <entry date="2020-07-02T09:00:00" starred="">これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。</entry>
        </entries>
        <tags>
                <tag name="@tag">1</tag>
        </tags>
</journal>

YAML

jrnl --format yaml --file 'my_directory/'

これはジャーナルをYAML形式で出力します。YAMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。ディレクトリへのエクスポートは唯一サポートされているYAMLエクスポートオプションであり、各エントリーは別々のファイルに書き込まれます。

ファイル例:

title: これは2番目のサンプルエントリーです
date: 2020-07-01 20:00
starred: False
tags: tag

これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。

レポートフォーマット

フォーマットはジャーナルデータを使用して異なる方法で表示するため、レポートの作成にも使用できます。

タグ

jrnl --format tags
# または
jrnl --tags

このフォーマットは、フォーマットがどのようにレポート作成に使用できるかの簡単な例です。ジャーナル内(または検索結果内)の各タグと、そのタグが出現するエントリーの数を表示し、頻度順にソートします。

出力例:

@one                 : 32
@two                 : 17
@three               : 4

オプション

--fileを使用したエクスポート

例: jrnl --format json --file /some/path/to/a/file.txt

デフォルトでは、jrnlはエントリーをターミナルに出力します。しかし、--fileとファイル名を一緒に指定すると、ターミナルに出力されるはずだった同じ出力がファイルに書き込まれます。これは出力をファイルにパイプするのと同じです。

したがって、bashの場合、以下の2つの文は同等です:

jrnl --format json --file myjournal.json
jrnl --format json > myjournal.json

ディレクトリへのエクスポート

--file引数がディレクトリの場合、jrnlは各エントリーを個別のファイルにエクスポートします:

jrnl --format yaml --file my_entries/

my_entries/の内容は次のようになります:

my_entries/
|- 2013_06_03_a-beautiful-day.yaml
|- 2013_06_07_dinner-with-gabriel.yaml
|- ...