The article shows how to define a custom shell command to create a file with predefined multiple-line content. In the following example we use a custom command mdnew file-name
to create a markdown file with predefined YAML front matter.
For a quick view, here is the effect:
# Create a new makrdown file hello-markdown.md with predefined YAML fonter matter
$ mdnew hello-markdown
# Show the contents of the newly created markdown file
$ cat hello-markdown.md
│ File: hello-markdown.md
───────┼────────────────────────────────────────────────────────────────────────
1 │ ---
2 │ title: hello markdown
3 │ author: John
4 │ date: 2023-04-11 16:48:39
5 │ tags_input:
6 │ -
7 │ categories:
8 │ -
9 │ description:
10 │ ---
11 │
If you are working on Windows, we suggest you use a Unix style terminal for better productivity. If you are using Git, you already have one. Git bash is a good choice for such terminals.
Here we take Git bash for example to define the custom command mdnew
.
Open ~/.bash_profile
or ~/.bashrc
, append below content to the end of the file:
mdnew() {
file_name="$1".md
title="$1"
# Replace all '-' to ' ' to make it a proper title
title="${title//-/ }"
lines="---
title: $title
author: John
date: $(date +"%Y-%m-%d %H:%M:%S")
tags:
-
categories:
-
description:
---
"
echo "$lines" > $file_name
}
If you want to avoid the mdnew
command to overrides an existing file by accident, you can cange the last line to:
echo "$lines" >> $file_name
Then the command only append the YAML front matter to the file.
Then you can open Git bash and create a new markdown file like we have done above. If you have a Git bash terminal opened already, run below source
command to make our custom mdnew
to take effect before use it.
$ source ~/.bash_profile
# Then you can use 'mdnew' command to create a file
$ mdnew hello-markdown