notes - Manage notes with ease from the command-line using your $EDITOR.
Notes is a powerful and efficient command-line application for managing notes. Designed for developers and command-line enthusiasts, it offers a range of features to create, search, and organize your notes seamlessly.
- Create named or scratch notes fast
- Search and filter notes and pipe the results elsewhere
- Create notes from templates (i.e. forms)
- Use inclusion/exclusion terms to search notes and open them
- Create and execute saved searches
- Support for Zettelkasten personal knowledge management
- Support for backlinking
You have notes that you want to create and edit with your $EDITOR and keep
organized at the command-line.
- Create a directory for your notes:
mkdir journal
- Change the directory:
cd journal - Initialize a new Notes project:
notes init
- Create a new note:
notes new
- List the notes created so far:
notes list
- Clone the repository:
git clone /path/to/notes.git
- Make the script executable:
chmod +x notes/notes
- Add the directory to the
PATHenvironment variable:PATH="$PATH:$PWD/notes"
The following are common usage examples:
Find backlinks for the PATH provided.
notes back PATHExample:
notes back /path/to/notes/file.txtChange the notes base (i.e. the base path).
notes base PATHExample:
notes base /path/to/notesPrint the environment variables.
notes confExamples:
notes confOpen filtered list of files based on the filter EXPR provided.
notes edit EXPRExamples:
notes edit home
notes edit releaseExecute a function handler using the NAME provided.
notes exec NAMEExample:
notes exec archiveCreate a new note and print the filename. Optionally providing a filename.
notes file [NAME]Examples:
notes file
notes file todoFind notes matching the terms provided and print the filename(s).
notes find TERM [TERM, ...]Examples:
notes find release
notes find release 0.0.1Create a new note using the FORM provided. Optionally providing a filename.
notes for FORM [NAME]Examples:
notes for release
notes for release release-0.0.1Create a note form (i.e. template) using the NAME provided.
notes form NAMEExample:
notes form releaseCreate a function handler using the NAME provided.
notes func NAMEExample:
notes func archiveFind notes matching the terms provided and print matches using grep.
notes grep TERM [TERM, ...]Examples:
notes grep release
notes grep release 0.0.1Create a runtime hook using the NAME provided.
notes hook NAMEExample:
notes hook varsInitialize the notes repository.
notes initExamples:
notes initPrint relative file path for the FILE provided.
notes link PATHExample:
notes link /path/to/notes/file.txtList all notes and forms (i.e. templates). Optionally providing a filter EXPR.
notes list [EXPR]Examples:
notes list
notes list releaseEdit your default note.
notes mainExample:
notes mainCreate a new note and launch the EDITOR. Optionally providing a filename.
notes new [NAME]Examples:
notes new
notes new todoFind notes matching the terms provided and open the file(s) in the EDITOR.
notes open TERM [TERM, ...]Examples:
notes open release
notes open release 0.0.1Change the notes path for notes.
notes path PATHExample:
notes path /path/to/notes/.notesOpen a single random note. Optionally providing a filter EXPR.
notes rand [EXPR]Examples:
notes rand
notes rand releaseChange the notes root path name (i.e. under the base).
notes root NAMEExample:
notes root .notesFind notes matching the terms provided and print the results and filename(s).
notes search TERM [TERM, ...]Examples:
notes search release
notes search release 0.0.1Change the notes type (i.e. the file suffix).
notes type NAMEExample:
notes type mdCreate and execute saved searches using the NAME provided.
notes view NAME [TERM, ...]Examples:
notes view releases
notes view releases release 0.0.1Find backlinks for the PATH provided and open the file(s) in the EDITOR.
notes with PATHExample:
notes with /path/to/notes/file.txtThis application supports searching through notes using inclusion and exclusion
terms. Use of inclusion and exclusion terms are supported by find, open,
search, and view commands.
By default, any term provided, not prefixed, will be treated as an inclusion term.
Example:
notes search releaseAny term provided that is prefixed with a + symbol, will be treated as an
inclusion term. Notes containing the term will be included in the results.
Example:
notes search +releaseAny term provided that is prefixed with a - symbol, will be treated as an
exclusion term. Notes containing the term will be excluded from the results.
Example:
notes search -releaseThe following are overridable environment variables:
The NOTES_BASE variable is the filepath for the parent directory of the notes
folder where all notes will be stored, and defaults to $PWD.
Example:
export NOTES_BASE=$HOMEThe NOTES_INIT variable is the fully-qualified filepath for the initial (or bootstrapping) notes
directory, and defaults to $PWD/.notes. This directory is checked for
pre-processing hooks before executing the program.
Example:
export NOTES_INIT=$PWD/.notesThe NOTES_MAIN variable is the filename of the "main" note used by the notes main command, and defaults to main.
Example:
export NOTES_MAIN=indexThe NOTES_PATH variable is the fully-qualified filepath for the notes
directory, and defaults to $NOTES_BASE/$NOTES_ROOT.
Example:
export NOTES_PATH=$HOME/notesThe NOTES_ROOT variable is the directory name of the notes folder, and
defaults to .notes.
Example:
export NOTES_ROOT=notesThe NOTES_TYPE variable is the file suffix used when operating on notes, and
defaults to txt.
Example:
export NOTES_TYPE=mdContributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
Manage your notes with ease using notes.