note - a perl script for maintaining notes.


note [options] [ number [,number...]]


note is a small console program written in perl, which allows you to manage notes similar to programs like "knotes" but from the commandline. Note can use different database-backends for notes-storage. It ships with a DBI-based mysql-module(which can also be used for other by DBI supported DBMS), another module, which uses a binary file for storage and a DBM module. Note supports since version 1.0.0 encryption(IDEA or DES)!




If you don't know, how to run note, try "note -h" first. It will tell you all available commandline options.

To create a new note, simply run "note". You can enter the note (the length is by default limited to 4096 bytes, which you can change from your config file if you are using the binary backend, otherwise there is no limitation). End by typing a . on a line itself. note will tell you the number of the note.

If you want to view the note, type "note 1", if the notenumber was 1.

If you want to get an overview of all notes, type "note -l". You will get a list of all notes, containing the number, the first line and the creation date. If topic-support is turned on (which is by default), then all subtopics under the current topic will be displayed first. If you want to see the timestamps, use "-L" instead of "-l". Read more about topics below in the section "Topics". You can also specify the topic which notes you want to see: "-l mytopic" does the trick. Additional, you might want to get an overview of your topic- structure. You can use the command "-t" in this case, which will display a tree-view of your topic-structure. You can use the command "-T" if you want to see the notes under each topic too. "-T" will also show the number of each note.

To edit a certain note, type "note -e 1". It will invoke your editor (vi or pico). You can edit it, after saving, note will store the changed note to the database.

Of course you can drop a certain note: "note -d 1" deletes note number 1. If a note in the middle or the beginning of the database will be deleted, note will recount the other existent notes. For example there are 3 notes, number 1, 2 and 3. If you delete number 2, then number 3 will become number 2. You can also make use of the extended delete-syntax: To delete note 1 and 2, use "-d 1,2" To delete note 1,2 and 3, use "-d 1-3".


If you cannot remember, which note you are looking for, you can use the search capability of note: "note -s ". note will search the whole note database case insensitive for an occurence of this string and tell you the number and first- line it has.

You can extend the searchstring using AND, OR ( and ) and shell-like wildcards:

$ note -s "moses AND lenin"


$ note -s "(mike OR arnold) AND (jackson OR schwarzenegger)"

If note finds a note, which first line is a topic, then it will display it's second line.

These rules apply for the interactive search too.

You need to know, that note searches for the expression in every note. In other words, "moses AND lenin" searches for an occurence of "moses" and "lenin" in ONE note. Or, if you are looking for "mike OR daniel", then it searches for an occurence of "mike" or daniel" in ONE note. Thus a note with the text "mike oldfield" will match that search.


If topic-support is turned on (which is by default), the various notes are sorted under various topics. There is no special database field for the topic. Instead the topic will be stored right in the note. If the first line of your note contains some text bordered by slashes (or whatever you prefer, set "TopicSeparator" in your config! default is slash), then note will consider it as the topic of this certain note. For examle:


If you are using topics, no data after the topic is allowed, if there is any text, note will consider it as a subtopic! Therefore, don't for- get to put a newline after the topic-line.

The list-command will only show you notes under this topic. If you create a new note, it will automagically inserted under the current topic (note will prepend the string "/topicname/" to the text of your note).

You can create at any time from any point a new topic. Just create a new note and type the name of the new topic bordered by slashes (or TopicSeparator) at the first line of this note. After saving, there will be available a new topic with one note in it.

You can create as many subtopics as you like, the format is similar to a filesystem-path. An example, say, you want to create such a structure:

(root - top level) | |----test | |----subtopic | | |--note 1 | | |--note 2 | | | |--note 4 | |--note 3

Then you may create those 4 new notes:

--- snip --- /test/subtopic/ note 1 --- snip --- /test/subtopic/ note 2 --- snip --- note 3 --- snip --- /test/ note 4 --- snip ---

I hope, you got the point ;-)

If a note does not contain the "magic" /topic/ construction on the first line, it will be listed under the "root" of note, that is the point you are at the startup of note.

You can subsequently move a note without a topic to a certain topic. Simply edit it and insert at the first line the above mentioned construction.

Note: Please don't forget the prepending and appending a slash of a topic. You will get strange results without it!


If you start note with the commandline flag -i, then it starts with an interactive interface. It will start with a listing under the default top-topic ("/"). You can enter the name of a topic to change to that topic. This works similar to a filesystem structure. The current topic will be displayed on the top of the screen.

The following commands are available:


You can also dump the contents of your note-database into a ASCII-textfile(-D). You can use this file later to import it into your note-database(-I). This is usefull, if you want quickly trans- fer your notes from one host to another (i.e. you could mail your note-dump form your office to home and import it there for further use).

The dumps from the two versions of note are in the same format. Using dumps it is also possible to reinitialize your database. You can use the "-o" switch whcih causes note to overwrite your existing database. This is very handy if you changed heavily your config. And it is required, if you changed: encryption, db-driver, (binary-format) and the password. You can use the following command for reinitializing:

$ note -D - | note -o -I -

What the hell, does this do?! Step by step:

Before you use the -o switch, I consider you to make a backup!


Another very nice feature is the possibility to format the note-text (as much as shell allows it). First, you can use the note-internal "magic-strings" for colorizing. Those strings looks much like HTML: "here is a green line of text no more green." As you see, the beginning of another color starts with a tag(kinda) of the color and ends with an end tag .

The following colors are available: black, red, green, yellow, blue, magenta, cyan and white.

Beside colorizing text, you can also create bold or underlined text! If you decide to use this (additional) feature, you need to set the Config-Option "FormatText" to 1 which turns it on. Usage is very straightforward, if a word (a word is defined as some text with at least one space surrounded) is between a magic mark- character. Here are the available things, you can do:

bold: **word** underlined: __word__ inverse: hidden: //word//

The text will be formatted using the actually note-color.

The hidden formatting will use blue forground and blue background to hide a string from the terminal, which is usefull for passwords.

If you set "FormatText" to simple then the formatting can be done this way instead:

bold: *word* underlined: _word_ inverse: {word} hidden: /word/


You can turn on encryption from the config file. Simply set UseEncryption to 1. Please note, that you need to decide, if you want to use encryption before the first use of note! If have already a note database and want to "migrate" to encryption, I suggest you to follow the directions in the file UPGRADE!

You can choose from different encryption algorythms. The default is IDEA, but DES or BLOWFISH is also possible. You need to have installed the following additional perl-modules on your system: MD5 Crypt::IDEA Crypt::DES Crypt::CBC

After turning on encryption, note will ask you for a passphrase everytime it runs! It will *not* store this passphrase! So, don't forget it! Be careful!


You can use a configuration file with note but it is not required. Note will use default values if there is no config.

The default config file is ~/.noterc. You may specify another one with the commandline flag --config.

Comments start with #, empty lines will be ignored. 1 turns an option on, 0 turns it off. An option consists of an atribute-value pair separated by minimum one space (more spaces and/or tabs are allowed).

For a detailed explanation of each possible parameter take a look at the supplied sample configuration file in config/noterc.