フォーマット
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)にレンダリングできるシンプルなマークアップ言語です。例えば、jrnl
のREADMEは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
|- ...