Spool Five

Second Shell Script - Autolog

I joined Cosmic Voyage a while back. I really love the system there for updating you ship’s posts. You type ’log’ at the command line and you are presented with a series of options for logging your entry.

This morning, I decided to try out something similar for logging gemini posts.

I did look at the script for the Cosmic Voyage log command, but it was a bit too complicated for me (!).

So, I tried to just put together something as simply as I could (I am still so new to the shell and I have no technical experience outside of linux).

The script just:

  • asks for a title, appends that title to the gemlog index,

  • then, asks for a ‘commit’ message, appends that to my nanolog file

  • finally, asks for a ’tag’, and adds the post to the tag page.

It seems to work okay. It was really useful learning how to search for a string with sed, and then add the entry to the next line.

Still to do:

  • Better user feedback, but the ‘interactive’ aspects of shell script still seemed too advanced for me

  • At the moment it searches for a ‘month’ string in the gemlog index, and then adds the post below that. So, I have to manually add the ‘month’ title to the index (e.g., have to add ‘April’ before I can post the first April post). It would be great if it could automatically do that if it was missing, and even if it could sort the posts into month/year directories. I did find someone who did something like that with their gemini capsule, but I haven’t figured out how to integrate it yet:


  • In general, I have to make it more ‘flexible’. I’m not sure how it handles incorrect input, etc.

Anyway, here is the script if anyone’s interested:


[ -z "$1" ] && exit
echo "Title: "
read title
# Inserts log entry in index, under current month
sed -i "/\\$(date +'%B')/a => $1 $(date +'%Y-%d-%m') - $title" $DIR/gemlog/index.gmi

echo "Commit Message:"
read msg
# updates microlog
sed -i "9i## $(date +'%a %d %b %Y %H:%M %Z')\n$msg\n" $DIR/micro.gmi

# Inserts entry in tag section of gemlog
echo "Tag:"
read tag
[ -z $tag ] && exit

if [[ "$tag" = "Meta" ]]; then
  sed -i "/\# Meta/a => $1 $title" $DIR/gemlog/tags.gmi
elif [[ "$tag" = "Reading" ]]; then
  sed -i "/\# Reading/a => $1 $title" $DIR/gemlog/tags.gmi
elif [[ "$tag" = "Scavenge" ]]; then
  sed -i "/\# Scavenge/a => $1 $title" /$DIR/gemlog/tags.gmi
elif [[ "$tag" = "Journal" ]]; then
  sed -i "/\\$(date +'%B')/a => $1 $title" /$DIR/gemlog/tags.gmi

Thu Apr 1, 2021 - 439 Words

Tags: linux