LaTeXテンプレートを自動で生成するスクリプト
シェルスクリプトの練習も兼ねて、
ファイル名を引数に取って、そのファイル名でLaTeXの定型をすでに打ち込んだ状態のファイルを作るスクリプトを作ることにした。
シェルスクリプトなんて使わないと忘れてしまうけど、
書いているとやっぱり便利だなあなんて思ったりする。
やりたいこと
- 自分でわかりやすい名前のコマンドをつくる
- $ コマンド ファイル名 でファイル生成
- 引数が足りないor多いでUsage出力
- すでに同じ名前のファイルがあればエラー出力(上書き防止)
- ファイル生成時に自分がよくつかうLaTeXの定型文が入っている
ちなみに、よくつかう定型文とはこんなかんじ。
\documentclass[12pt,a4paper]{jsarticle} \begin{document} \section*{} \end{document}
大学のノートはその日のその授業ごとにファイルを分けてLaTeXで書くので、
このフォーマットが自分の中では定番になってる。
今回はこいつを出力させたい。
スクリプト
で、こんなふうに書いてみた。
~/Scriptsディレクトリを作って、そこへlatexTemplate.shという名前で置いた。
#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 filename" 1>&2 exit 1 fi if [ -f $1 ]; then echo "$1 have already existed." 1>&2 exit 1 fi echo "\documentclass[12pt,a4paper]{jsarticle} \begin{document} \section*{} \end{document}" > $1 exit 0
一応、備忘録的に忘れそうなとこだけメモっておくと、
$#でコマンドライン引数の数を参照
$0で0番目(つまりこのスクリプトのファイル名)の引数を参照
-neはノットイコール
1>&2は標準エラー出力
-fはそのファイルが存在していればtrue
これをbashからささっと使えるようにする
このままだと、いちいちこのスクリプトのあるディレクトリとファイル名を打たなきゃいけないので、これをbashでコマンド化する。
~/.bash_profileを編集する。(Mac OS Xでは.bashrcではない)
alias mktex='~/Scripts/latexTemplate.sh'
これでaliasも設定できて、他のコマンドと同じように使える。
使いたいときは、
$ mktex filename.tex
と打ってやればok。
aliasって便利だよね
aliasは覚えておいて損はないよねえ。
今回扱ったもの以外にも例えば
$ alias ll='ls -l'
っていうllで権限とかまで表示するように設定してたりしてる。
(これは結構メジャーなやつかな)