Terminal Notifier is a command-line tool to send macOS notifications, which are available since Mac OS X 10.8 and newer, using the shell. Useful when something happens in a long running script you wrote.
For example, you could get a notification every time
rkhunter does a check which opens the corresponding log file.
Or use it when you write a cronjob for something. The possibilities are endless.
Everything you need to install this is Homebrew and the following command:
brew install terminal-notifier
terminal-notifier -[message|list|remove] [VALUE|ID|ID] [options] Either of these is required (unless message data is piped to the tool): -help Display this help banner. -message VALUE The notification message. -remove ID Removes a notification with the specified ‘group’ ID. -list ID If the specified ‘group’ ID exists show when it was delivered, or use ‘ALL’ as ID to see all notifications. The output is a tab-separated list. Optional: -title VALUE The notification title. Defaults to ‘Terminal’. -subtitle VALUE The notification subtitle. -sound NAME The name of a sound to play when the notification appears. The names are listed in Sound Preferences. Use 'default' for the default notification sound. -group ID A string which identifies the group the notifications belong to. Old notifications with the same ID will be removed. -activate ID The bundle identifier of the application to activate when the user clicks the notification. -sender ID The bundle identifier of the application that should be shown as the sender, including its icon. -appIcon URL The URL of a image to display instead of the application icon (Mavericks+ only) -contentImage URL The URL of a image to display attached to the notification (Mavericks+ only) -open URL The URL of a resource to open when the user clicks the notification. -execute COMMAND A shell command to perform when the user clicks the notification. When the user activates a notification, the results are logged to the system logs. Use Console.app to view these logs. Note that in some circumstances the first character of a message has to be escaped in order to be recognized. An example of this is when using an open bracket, which has to be escaped like so: '\['