Min enkla klartextjournal - Del två
Nyligen skrev jag om min enkla klartextjournal. Jag har sedan dess förbättrat både utseendet på min journal hur jag skapar nya inlägg.
Förbättrat utseende med supercat
Jag har förbättrat utseendet med supercat, ett alternativ till verktyget cat
som låter mig färglägga text med regex.
Kommandot för supercat är spc
och för att lista dagens inlägg i färg med supercat är:
spc -c $HOME/.config/supercat/journal $FILE | fold -s -w 120 | grep -A 100 "$DATE"
Min konfigurationsfil för supercat och min journal:
# spc configuration file
#
# col - color (blk, red, grn, yel, blu, mag, cya, whi)
#
# a - color attribute (console_code)
# ' ':normal (0)
# '-':normal (0)
# 'b':bold (1)
# 'u':underline (4)
# 'r':reverse-video (7)
# 'k':blink (5)
#
# n - number of matches, (' ':1, '1'-'9':1-9, '0':all)
#
# t - pattern type
# 'c':chars (strchr)
# 's':string (strstr)
# 't':regexp (regcomp) (convert 10-digit unix time to MMDDHHMMSS)
# 'r':regexp (regcomp)
# ' ':regexp (regcomp)
#
# col a n t pattern
#################### ### # # # ########################################
Highlight blk (---.*)
Highlight blu ([0-9]{4}[-|\/]{1}[0-9]{2}[-|\/]{1}[0-9]{2}.*)
Förenklad inmatning av nya anteckningar
Jag har inte varit helt såld på idén med att behöva öppna filen med Vim, lägga till en rubrik med kommandot \d
och sedan mata in texten. När jag blev tipsad om ett journalförande verktyg som heter did, blev jag lite inspirerad att göra samma sak, att man för in anteckningar direkt via kommandoraden:
$ did "Idag cyklade jag jorden runt."
Därför skrev jag ett Bash-script som gör samma sak för min journal. Jag är som sagt ingen programmerare och om du anser att det går att förbättra min kod tar jag tacksamt emot förbättringar.
#!/bin/bash
LC_ALL="sv_SE.UTF-8"
FILE="$HOME/Documents/journal.txt"
DATE="$(date +"%Y-%m-%d | %A" | sed -e "s/\b\(.\)/\u\1/g")"
INPUT="$1"
print_file() {
spc -c $HOME/.config/supercat/journal $FILE | fold -s -w 120
}
print_today() {
echo ""
print_file | grep -A 100 "$DATE"
}
edit() {
vim "+normal G$" $FILE
}
print_all() {
print_file | fold -s -w 120 | less +G
}
add_or_print() {
if [[ -z $INPUT ]]; then
if [[ -z "$(cat $FILE | grep "$DATE")" ]]; then
echo "Det finns inga anteckningar för idag."
else
print_today
fi
else
input() {
echo -e "$(date +"%H:%M"): $INPUT" >> $FILE
}
if [[ -z "$(cat $FILE | grep "$DATE")" ]]; then
echo -e "\n$DATE\n$(printf '%0.s-' $(seq 1 ${#DATE}))" >> $FILE
input
else
input
fi
print_today
fi
}
case $1 in
edit)
edit
;;
read)
print_all
;;
today)
print_today
;;
*)
add_or_print
;;
esac
Scriptet låter mig mig mata in anteckningar med kommandot did "<Text>"
:
$ did "Idag sprang jag jorden runt."
Om jag bara kallar på scriptet utan argument eller med argumentet today
skriver den ut dagens händelser. Om jag vill redigera min journal använder jag mig av argumentet edit
och jag vill visa hela min journal använder jag mig argumentet read
.
Återkoppling
Tack till @kungtotte@fosstodon.org för återkopplingen med förbättringar för mitt script!