LoginSignup
2
2

More than 5 years have passed since last update.

Marpを起動するシェルコマンドを自作した

Last updated at Posted at 2017-03-13

はじめに

Marpとは

マークダウン式でスライドやノートなどの資料を作れるアプリです。
こちらからダウンロードできます。
手軽にスライドや講義ノートを作れてとても便利です。

シェルコマンドとは

ターミナルで入力するコマンドです。
今回は上で説明したMarpをターミナルからファイル名やオプションを指定して起動できたら便利だなぁと思ってシェルコマンドを自作しました。
初めてのbashでいろいろ調べながら実装したので穴があると思います(テンプレート(後述)が存在しないときなど)。
もっと効率的・一般的な書き方などがありましたらアドバイスいただけると嬉しいです。

今回作ったコマンド

Marpを起動

marp <file name>

指定したファイル名の新しいマークダウンファイルをMarpで開きます。
ファイル名を指定しなければuntitledファイルを開きます。

-pオプション

marp -p <file name>

~/templates/marp/presentation.mdに置いているファイルをテンプレートとして指定した名前のファイルをMarpで開きます。
ファイル名を指定しないとpresentation.mdという名前で作成されます。
プレゼンに使うテンプレートを上記のパスに用意しておきましょう。

-nオプション

marp -n <file name>

~/templates/marp/notebook.mdに置いてあるファイルをテンプレートとして指定した名前のファイルをMarpで開きます。
ファイル名を指定しないとnotebook.mdという名前で作成されます。
ノートに使うテンプレートを上記のパスに用意しておきましょう。

実際のコードと使いかた

コード

marp
#!/bin/bash

function usage() {
  echo "Usage: marp [-p | -n] file_name"
}

while getopts "pn" OPTION; do
  case $OPTION in
    p)
      OPTION_p="TRUE"
      ;;
    n)
      OPTION_n="TRUE"
      ;;
    *)
      usage
      ;;
  esac
done

shift $(($OPTIND - 1))

if [ $# -gt 1 ]; then
  usage
  exit 1
fi

if [ "$OPTION_p" = "TRUE" ]; then
  if [ $# -ne 0 ]; then
    FILE_NAME=$1
  fi
  cp ~/templates/marp/presentation.md ./$FILE_NAME
  open -a "/Applications/Marp.app/" ${FILE_NAME:-presentation.md}
  exit 0
fi

if [ "$OPTION_n" = "TRUE" ]; then
  if [ $# -ne 0 ]; then
    FILE_NAME=$1
  fi
  cp ~/templates/marp/notebook.md ./$FILE_NAME
  open -a "/Applications/Marp.app/" ${FILE_NAME:-notebook.md}
  exit 0
fi

if [ $# -ne 0 ]; then
  FILE_NAME=$1
  touch $FILE_NAME
fi

open -a "/Applications/Marp.app/" ${FILE_NAME:-}

コマンドを有効化

  • 上記のコードを書いたファイルを~/bin/marpに置く。
  • ~/.bash_profilePATH="$PATH:$HOME/bin"の一行を追加する。
  • シェルを再起動する(export PATH="$PATH:$HOME/bin"を実行してもOK)。
  • テンプレートの例はここを参考にしてください。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2