| include | ||
| src | ||
| .gitignore | ||
| BUILD.BAT | ||
| CMakeLists.txt | ||
| compile_commands.json | ||
| Makefile | ||
| MAKEFILE.TC | ||
| README.md | ||
cnotes
A simple command-line note-taking system written in strict C89/ANSI C for maximum portability.
Overview
cnotes provides quick, one-line note capture from the terminal. Notes are stored in a simple CSV format and can be displayed, sorted, and filtered.
Supported Platforms
- Linux/Unix (GCC)
- macOS (GCC/Clang)
- Windows (Turbo C++ 3.0, MinGW)
- DOS 6.22 (Turbo C++ 3.0)
Building
Linux/Unix/macOS
make
Binaries are placed in the build/ directory.
DOS/Windows (Turbo C++ 3.0)
make -f MAKEFILE.TC
Or use the batch file if make is unavailable:
BUILD.BAT
Installation (Unix-like systems)
sudo make install # installs to /usr/local/bin
sudo make uninstall # removes from /usr/local/bin
Commands
cnadd
Add a new timestamped note entry.
cnadd "Remember to call Bob"
cnadd -c Work "Meeting at 3pm"
cnadd -c Personal "Buy groceries"
Options:
-c CATEGORY- Specify category (max 10 chars, default: "General")
cndump
Display all notes in a formatted table.
cndump # display all notes
cndump -d # sort by date (newest first)
cndump -c # sort by category
cndump -r # reverse sort order
cndump -d -r # sort by date, oldest first
Options:
-d, --date- Sort by date/time-c, --category- Sort by category-r, --reverse- Reverse sort order
cncount
Display note statistics.
cncount # total entry count
cncount -c # count by category
cncount -d # count by date
Options:
-c, --category- Show counts per category-d, --date- Show counts per date
cndel
Delete note entries.
cndel -n 5 # delete entry at line 5
cndel -l # delete the last (most recent) entry
cndel -d 2025-01-30 # delete all entries from a specific date
cndel -n 5 -y # delete without confirmation prompt
Options:
-n LINE_NUMBER- Delete entry at specified line number-d DATE- Delete all entries matching DATE (YYYY-MM-DD)-l- Delete the last (most recent) entry-y- Skip confirmation prompt
Configuration
Notes Location
By default, notes are stored in:
| Platform | Location |
|---|---|
| Unix/Linux | ~/.local/share/cnotes/cnotes.csv |
| Windows | %USERPROFILE%\.cnotes\cnotes.csv |
| DOS | Current directory or %CNOTES_HOME%\cnotes.csv |
Environment Variables
CNOTES_PATH- Override the notes directory location (highest priority)- On DOS, set
CNOTES_HOMEifHOMEis not available
Example:
export CNOTES_PATH=/custom/path/to/notes
Compile-time Configuration
Override defaults by defining at compile time:
gcc -DCNOTES_DIR=\".mynotes\" -DMAX_ENTRIES=1000 ...
Data Format
Notes are stored in CSV format:
DATE,TIME,CATEGORY ,"MESSAGE"
2025-01-30,14:30,Work ,"Meeting with team"
2025-01-30,09:15,Personal ,"Buy groceries"
Fields:
- Date:
YYYY-MM-DD(10 chars) - Time:
HH:MM(5 chars) - Category: padded to 10 chars
- Message: quoted, max 125 chars
TODO
Future commands to implement:
-
cnfind - Search notes by keyword, category, or date
cnfind "meeting" # search in message text cnfind -c Work # filter by category cnfind -d 2025-01-30 # filter by date -
cntail - Show last N entries (quick view)
cntail # last 5 entries cntail -n 10 # last 10 entries -
cncat - List unique categories
cncat # list categories cncat -c # with counts -
cnexport - Export to other formats
cnexport > notes.txt # plain text cnexport -t > notes.tsv # tab-separated
License
[Your license here]
Author
Gregory Gauthier