LinuxCommandLibrary

remind

Display pending reminders and alarms

SYNOPSIS

remind [options] [file...]
remind [options] -c[N] [YYYY-MM-DD|today]
remind [options] -g[N] [YYYY-MM-DD|today]
remind [options] -s[N] [YYYY-MM-DD|today]
remind [options] -p[N] [YYYY-MM-DD|today]
remind [options] -w[N] [YYYY-MM-DD|today]

PARAMETERS

[-a]
    Causes `remind` to perform an audible alarm, typically by printing `\a` to standard output. This is often used in conjunction with a terminal emulator's bell.

[-cN]
    Generates a calendar for N months, starting with the current month. If N is omitted, it defaults to 1. An optional date (YYYY-MM-DD or today) can specify the starting month.

[-gN]
    Generates a schedule for N days, starting from today. If N is omitted, it defaults to 1. An optional date (YYYY-MM-DD or today) can specify the starting day.

[-sN]
    Generates a simple list of reminders for N days, starting from today. If N is omitted, it defaults to 1. An optional date (YYYY-MM-DD or today) can specify the starting day.

[-pN]
    Generates a PostScript calendar for N months, which can then be printed. If N is omitted, it defaults to 1. An optional date (YYYY-MM-DD or today) can specify the starting month.

[-wN]
    Generates a weekly calendar for N weeks, starting from the current week. If N is omitted, it defaults to 1. An optional date (YYYY-MM-DD or today) can specify the starting week.

[-f file]
    Specifies an alternate reminder file to read instead of the default (`~/.reminders` or `/etc/reminders`). Multiple `-f` options can be used.

[-t N]
    Scans for reminders within the next N days. This is the lookahead period for general reminder display. Defaults to 14 days if not specified.

[-q]
    Operates quietly. Suppresses display of normal reminder messages. Useful when running `remind` from cron, where output might only be desired for `RUN` commands.

[-z]
    Prevents `remind` from executing any programs specified by `RUN` commands within the reminder file. Only displays reminder messages.

[-e]
    Ignores errors encountered while parsing the reminder file. This can be useful for debugging a complex file but should be used with caution.

[-D variable=value]
    Defines a variable within `remind`'s internal language, overriding any definitions in the reminder file. Useful for dynamic configurations or testing.

[-h]
    Displays a brief help message and exits.

[-v]
    Displays the version information for `remind` and exits.

DESCRIPTION

`remind` is a highly flexible and powerful command-line utility for managing reminders and generating calendars. It reads a plain text configuration file (typically `~/.reminders` or `/etc/reminders`) containing sophisticated reminder specifications. Unlike simpler reminder tools, `remind` offers a full-featured programming language within its configuration, allowing for complex date calculations, conditional reminders, and custom output formats.

It can be used to display upcoming events, generate various calendar views (daily, weekly, monthly, PostScript), and even execute commands (like playing a sound or sending a notification) when a reminder is due. Its strength lies in its ability to handle recurring events, floating holidays, and other intricate date logic with precision, making it an indispensable tool for users who prefer text-based configuration and robust automation.

CAVEATS

`remind`'s power comes with a learning curve; its configuration file uses a unique, powerful scripting language that can be complex to master for intricate reminders. While highly effective in a terminal environment, integrating `remind` with modern graphical desktop notifications often requires additional scripting or wrappers (e.g., using `notify-send` in a `RUN` command). Timezone handling can sometimes be tricky for reminders spanning different timezones or during daylight saving time transitions if not carefully configured within the reminder file.

REMINDER FILE FORMAT

`remind` reads its configuration from a plain text file, typically named .reminders in your home directory. Each line in this file can define a reminder, a variable, or a command. A basic reminder definition includes a date specification (e.g., REM 1 Jan "New Year's Day"), followed by the message. More complex definitions involve repetition rules (e.g., REM Sat 1 "Weekly chore"), exclusion rules, and intricate date expressions using its built-in language. The file can also contain `INCLUDE` directives to pull in other reminder files.

VARIABLES AND EXPRESSIONS

`remind` features a powerful internal programming language, allowing users to define variables (SET variable=value), use conditional logic (IF/ENDIF), and perform date arithmetic. This enables the creation of highly dynamic reminders, such as those that adjust based on the day of the week, month, or other calendar events. Expressions can be used within date specifications and reminder messages, allowing for personalized and context-aware notifications.

ADVANCED FEATURES (RUN, MSG)

Beyond simple text output, `remind` supports advanced actions. The RUN command allows `remind` to execute an arbitrary shell command when a reminder is due. This is commonly used to play sound files, send desktop notifications (RUN notify-send "Reminder!" "%s"), or trigger other scripts. The MSG keyword can be used to explicitly define the reminder message, allowing for complex formatting and variable substitution. These features transform `remind` from a mere calendar into a potent automation tool.

HISTORY

The `remind` program was originally written by David E. Hayes and has been a staple in Unix-like environments for decades, first released in the early 1990s. Its design reflects the Unix philosophy of powerful, text-based tools. It has undergone continuous development and improvements, maintaining its robust core while adapting to new system capabilities. Its enduring popularity stems from its unparalleled flexibility in defining complex recurring events and its ability to integrate with other system tools, often being invoked by `cron` to provide automated notifications.

SEE ALSO

calendar(1), at(1), cron(8), notify-send(1)

Copied to clipboard