LinuxCommandLibrary

jrnl

Create and manage personal journal entries

TLDR

Insert a new entry with your editor

$ jrnl
copy

Quickly insert a new entry
$ jrnl [today at 3am]: [title]. [content]
copy

View the last ten entries
$ jrnl -n [10]
copy

View everything that happened from the start of last year to the start of last march
$ jrnl -from "[last year]" -until [march]
copy

Edit all entries tagged with "texas" and "history"
$ jrnl [@texas] -and [@history] --edit
copy

SYNOPSIS

jrnl [OPTIONS] [DATE] [BODY]

PARAMETERS

-h, --help
    Show help message and exit

-v, --version
    Show program's version number and exit

-c FILE, --config FILE
    Specify config file

-j JOURNAL, --journal JOURNAL
    Use specific journal (e.g., work)

--ls, --list
    List available journals

-a, --add
    Alias for add mode

-1, --one-line
    Force single-line entry

-T, --no-tags
    Disable auto-tagging

-t TAGS, --tags TAGS
    Add comma-separated tags

-s SEARCH, --search SEARCH
    Search entries for text

-S, --short
    Short search results

-f FROM_DATE, --from-date FROM_DATE
    Start date for results

-u UNTIL_DATE, --until-date UNTIL_DATE
    End date for results

-n NUMBER, --limit NUMBER
    Limit entries shown

-p, --page
    Paginate results

--format FORMAT
    Output format (e.g., short, long)

-e, --edit
    Edit latest or specified entry

--export [FORMAT]
    Export journal (JSON, HTML)

--import FILE
    Import journal from file

DESCRIPTION

jrnl is a simple, powerful command-line journal application for Linux, macOS, and Windows. It stores entries as human-readable Markdown files in a plain-text directory, typically ~/.journal, allowing easy backups, versioning with Git, and searching with standard tools like grep.

Users add entries with natural language dates, e.g., jrnl yesterday "Great day!", supporting tags, moods, and locations. It handles multiple journals (e.g., work, personal) and offers search, export to JSON/HTML, and editing features. Entries are timestamped and encrypted optionally.

Ideal for privacy-focused users avoiding cloud services, jrnl emphasizes simplicity and portability. No database required; integrates with shell scripts for automation.

CAVEATS

Not a core Linux utility; install via pip install jrnl or package managers. Requires Python 3. Markdown output may need viewer. Encryption via GPG needs setup.

INSTALLATION

pip install jrnl
jrnl --init to setup first journal

EXAMPLE USAGE

jrnl "Meeting was productive"
jrnl today -t work,meeting
jrnl --search productivity

HISTORY

Created by Jens Raven in 2012 as open-source project on GitHub. Actively maintained; version 2.x added multi-journal, encryption, and export features. Popular for minimalist workflows.

SEE ALSO

grep(1), date(1), journalctl(1)

Copied to clipboard