Experimenting with Shell Scripts
Recently I have been experimenting with new ways to document the stuff I write and although I'm hesitant to say it's the best, I have the most hope for Jekyll so far as it's been the most straightforward route for me to set up something easy to record my processes.
I would try to write something unique on this topic, but truthfully this
article
has everything you really need and some more. The only thing I will mention
about my experience with setting up Jekyll is that I have had to run
bundle add webrick, which is just another gem (think library in
other programming languages) that would ensure our environment will deploy
correctly.
The real fun thing I wanted to leave here was a shell script I have been experimenting with to help me out a little bit. I am no stranger to running shell scripts (it's one of the things about Linux I really enjoy, all of the setup is so satisfying when it goes smoothly), but now it was time for me to start automating to improve my experience.
I'll paste everything below, but I'll try and explain line by line what's going on.
#!/bin/zsh
title=$1
date=`date +'%Y-%m-%d'`
fname="$date-$title.md"
echo "---
type: post
title: $title
date: $date
---
" > $fname
nvim $fname
I should preface this by saying that although it's not a whole lot, really all of 5 commands, I wanted to share this because I find it fascinating that I can encapsulate a 30-second thinking process in 5 lines, solving the problem (hopefully forever).
title=$1 This line involves the command line arguments! This
essentially makes it so that if I ran sh new.sh pog,
title would be equivalent to pog. The reason we
are using the 1 index instead of the 0th index is because the 0th index is
the name of the shell script (here it is new.sh).
date=`date +'%Y-%m-%d'` Similar to before, all we are really
doing in this line is storing a variable, but this one has a little bit of
flavor. This command really gets its power from the date
command. If you want to experiment in
shell, you can
start by seeing the progression of these commands
echo "hello world!";
echo "$(date)";
echo "`(date +'%Y')`";
echo "`(date +'%Y-%m-%d')`";
should output something like
hello world!
Sat May 22 06:40:55 UTC 2021
2021
2021-05-22
echo is just the equivalent of a print statement for the
terminal, but what I want to stress here are the last two commands. We can
see from the second command that this date command gives us
all the information needed in order to format a jekyll post, but you can
also specifically pick out the information that jekyll needs for a post
with the % specifics.
fname="$date-$title.md" This is the final variable being
set, to be honest I really just assigned this because I was bored and
didn't want to rewrite the quotation marks, date, and title again later
on.
echo "---
type: post
title: $title
date: $date
---
" > $fname
Truthfully, I think you have all the information to see this one works,
just know that the > operator just means that instead of
printing to the terminal, that infomation is stored in the filename (which
was defined above). Feel free to experiment on the
shell available if
you're interested.
nvim $fname Now it's time to write! I just have the shell
open up a neovim window for me to start writing up an article.
This might have been a little bit extra for so small of a shell script, but this was a cute thing I wrote up that I just felt like sharing. This is a blog after all :)