1# Date
2DATE=`date +%Y-%m-%d`
This will get today’s date in YYYY-MM-DD format.
1$ str="This is just a test"
2$ echo ${str// /_}
3This_is_just_a_test
What’s cooler than a bash script? A bash function! With a function, we don’t have to specify script name/location every time. A bash function added to your .bash_profile
will work globally anywhere in the Terminal. The command to run would then become like this:
1jpost "My new post"
To make the script a function, all you have to do is wrap the code in functionname() { }
like so:
1jpost() {
2 # code goes here
3}
It’s be nice if you could define options for your script and specify them at runtime. Like -t
for Type and -l
for Layout. Maybe a -o
for Opening file in Sublime Text after it has been created.
So the command would become something like this:
1jpost -t=markdown -l=post -o "My new post"
We can do this with the bash builtin getopts
. Define our options like so:
1while getopts "o" opt; do
2 case $opt in
3 o) open=1 ;;
4 esac
5done
And then modify our if statements accordingly. For example, if -o
is provided, open the file in Sublime Text
1# check for -o (open) argument
2if [ ! -z $open ]; then
3 createPost
4 # Open file in Sublime Text
5 open -a "Sublime Text" $FILEPATH
6fi
A simple if
statement can make sure that you are not overwriting existing files.
1if (-e $FILENAME ); then
2 echo "File already exists!"
3else
4 // Run our code
5fi
-e
is the operator that checks if a file exists. -s
is the operator that checks if file exists and is not empty.
A simple success or error message about the results of our command would be nice. What would be even nicer if they were red or green based on their run status.
I want it to say “File has been successfully created” (green text) when a file has been cerated without any errors. If a file already exists, it should say “File already exists!” (red text).
Let’d define some colors and use them in our script.
1# COLORS
2Color_Off='\033[0m' # Text Reset
3Red='\033[0;31m' # Red
4Green='\033[0;32m' # Green
5Yellow='\033[0;33m' # Yellow
6
7echo -e "${Green}File was succesfully CREATED${Color_Off}"
8echo -e "${Red}File already EXISTS and is NOT EMPTY${Color_Off}"
9echo -e "${Yellow}File already EXISTS${Color_Off}"
If you’d like to open all new files in your favorite editor after they are created, you can add that too. The following is what i have to open all post files in Sublime Text:
1open -a "Sublime Text" $FILEPATH
You should add this right after the file is created in your code.
with underscores _
: The easiest way to replace white spaces with (underscores) _ in bash