NAME¶
note - a perl script for maintaining notes.
SYNPOPSIS¶
note [options] [ number [,number...]]
DESCRIPTION¶
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. There are also two modules available which uses a text file. Note
supports since version 1.0.0 encryption(IDEA or DES)!
OPTIONS¶
- -c, --config file
- Use another config file than the default ~/.noterc.
- -l, --list [topic]
- Lists all existing notes. If no topic were specified, it
will display a list of all existing topics. See the section TOPICS
for details about topics.
- -L, --longlist [topic]
- The same as -l but prints also the timestamp of the
notes.
- -t, --topic
- Prints a list of all topics as a tree.
- -T, --longtopic
- Prints the topic-tree with the notes under each topic.
- -s, --search string
- Searches for <string> trough the notes database. See
the section SEARCHING for details about the search engine.
- -e, --edit number
- Edit the note with the number <number> using your
default editor or the one you specified in the config file.
- -d, --delete number
- Delete the note with the number <number>. You can
delete multiple notes with one command. "1-4" deletes the notes
1,2,3,4. And "1,5,7" deletes the specified ones.
- -D, --Dump [file | -]
- Dumps all notes to the textfile <file>. If
<file> is a "-" it will be printed out to standard output
(STDOUT).
- -I, --Import file | -
- Imports a previously dumped textfile into the note
database. Data will be appended by default. You can also specify a dash
note -I - instead of a <file>, which causes note, silently to
read in a dump from STDIN.
- -o, --overwrite
- Only suitable for use with --Import. Overwrites an existing
notedb. Use with care.
- -r, --raw
- Raw mode, output will not be formatted. Works not in
interactive mode, only on cmd-line for list and display. That means, no
colors will be used and no lines or titles.
- -i, --interactive
- Start note in interactive mode. See the section
INTERACTIVE MODE for details on this mode.
- --encrypt cleartext
- Encrypt the given clear text string. You would need that if
you want to store the mysql password not in cleartext in the config(if you
are using the mysql backend!).
- -h, --help
- Display this help screen.
- -v, --version
- Display the version number.
- -
- If you run note just with one dash: note -, then it
will read in a new note from STDIN until EOF. This makes it possible to
pipe text into a new note, i.e.:
cat sometextfile | note -
USAGE¶
GENERAL USAGE¶
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".
SEARCHING¶
If you cannot remember, which note you are looking for, you can use the search
capability of note: "note -s <searchstring>". 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"
or:
$ 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.
TOPICS¶
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:
B</TodoList/>
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!
INTERACTIVE MODE¶
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:
- L [topic]
- This command lists all notes with a timestamp. If you
specify a topic, it will only list the notes under this topic. If you are
under a certain subtopic, then it will only display the notes under this
topic.
- l [topic]
- This commands behaves similar to L but it does not
display the timestamp. You can achieve the same result by simply pressing
enter at any time.
- N
- You can create a new note by simply pressing N or
n. You favorite editor will be started and you can enter your note
text. If you are already under a topic then this new note will
automatically go to this topic. note adds an additional line to the top of
the note with the topic. But you can of course specify your own topic.
Note will tell you which number it has assigned to the newly created
note.
- E number
- By entering E or e and a note-number you can
edit an existing note using your favorite editor. This way you can also
move an existing note from one topic to another one by editing the first
line of the note.
- D number
- E or e deletes one or more existing note(s).
It requires a note number or a set of note numbers. 1-5 and 1,7,9 are
possible values. After one or more notes has been deleted note will
recount all remaining notes. Say if you delete 1 and 2, then 3 will become
1, 4 will become 5 and so forth.
- S [expression]
- You can search for the occurence of a text in your
notes-database with the command S or s. If you omit an
expression note will ask you for one.
If your search criteria matches on exactly one entry, note will display that
note entry instead of displaying its number.
- T
- This prints a tree-view of your topic-structure. T
displays the tree with notes, t displays just the topics without
notes.
- C
- It is possible to change note's behavior at runtime.
Specify the parameter you'd like to modify followed by equalsign and the
new value. Use with care! However, database related parameters cannot be
changed at runtime. Entering just "c" without parameters
displays the customizable variables.
- cd topic
- Change the actual topic under which you are. This works
identical like just entering the topic but it has some advantages. You can
enter cd .. if you want to go one level up in the topic-structure.
And you can enter cd / to go to the top of the structure. You can
always leave out the 'cd' keyword too.
Additional it is possible to enter a note-number instead of a topic name.
For this feature to be active you need to set the config option
ShortCd to 1 or yes. If you use a number and the note
with this number is under a certain topic then you will "cd" to
this topic. This allows you to do kind of jumps over multiple levels of
topics.
If is possible to abbreviate a topic. This works only if the abbreviation
matches on one single topic. If it matches more than one topic then the
available ones will be suggested.
- ? or h
- Display a short help screen.
- Q
- Quit note.
BACKUP¶
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 useful, 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:
- •
- note -D - creates a note-database dump and prints it
out to stantdard output.
- •
- | this is the shell's pipe command. It takes the
output of the left program and gives it to the right program as standard
input.
- •
- note -o -I - imports a note-database dump from
standard input and overwrites an existing database.
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:
"<green>here is a green line of text</green> no more
green." As you see, the beginning of another color starts with a
tag(kinda) of the color <colorname> and ends with an end tag
</colorname>.
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: {{word}}
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 useful 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/
ENCRYPTION¶
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 are 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!
CONFIGURATION¶
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.
To turn on an option, set it to:
1,
on or
yes.
To turn off an option, set it to:
0,
off or
no.
An option consists of an atribute-value pair separated by minimum one space
(more spaces and/or tabs are allowed) and an optional equal sign in between.
Variable names are case in-sensitive.
For a detailed explanation of each possible parameter take a look at the
supplied sample configuration file in
config/noterc.
AUTHOR¶
Thomas Linden <tom at linden dot at>
VERSION¶
1.3.6 (07/20/2009)