Avatar
Linux, textfiler & minimalism
21 Mars 2020

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!

Etiketter: Klartext | Journal | Minimalism | supercat

Återkoppling

Min blogg saknar ett kommentarssystem, om du vill lämna återkoppling, diskutera och/eller har några frågor går det bra att göra det via e-post, XMPP, IRC och Mastodon.