38 lines
1.5 KiB
Markdown
38 lines
1.5 KiB
Markdown
---
|
|
title: "Bash script: random revision topic"
|
|
slug: /revision-bash-script
|
|
date: 2022-12-28
|
|
tags: ["log", "productivity", "bash"]
|
|
---
|
|
|
|
I keep all my study notes in Markdown format in a
|
|
[single repository]('https://github.com/thomasabishop/computer_science').
|
|
Because I study a lot of varied topics it can sometimes seem that I am just
|
|
writing notes and forgetting about them. This is particularly true of topics
|
|
that I don't draw on in my everyday work.
|
|
|
|
As a corrective I have written a script at the root of my notes repository that
|
|
selects a random revision topic from the categories I specify. When I start
|
|
studying each morning (I study from 6am-8am before work) I run the script and
|
|
spend ten minutes consolidating the topic it selects. Sometimes this will just
|
|
mean re-reading the notes but often I will rewrite or add ideas that I have
|
|
gleaned in the period since I originally studied the topic, extending my
|
|
understanding of the subject matter.
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
|
|
# Choose source directories...
|
|
DIRS_TO_PARSE="../Computer_Architecture ../Electronics_and_Hardware ../Operating_Systems ../Programming_Languages/Shell ../Logic"
|
|
|
|
# Return array of all files belonging to source dirs...
|
|
for ele in $DIRS_TO_PARSE; do
|
|
FILE_MATCHES+=( $(find $ele -name "\*.md" -type f) )
|
|
done
|
|
|
|
# Generate a random integer between 0 and the match array length...
|
|
RANDOM_FILE_INDEX=$(( $RANDOM % ${#FILE_MATCHES[@]} + 0 ))
|
|
|
|
# Return file matching that index...
|
|
echo "Revise this topic: ${FILE_MATCHES[$RANDOM_FILE_INDEX]}"
|
|
```
|