【Mac】シェルスクリプトの使い方
シェルスクリプトは、コマンドを書きこんでおくと、一行ごとに、上から順番に実行してくれる、コマンドの台本みたいなものだ。コンピュータでおこなわれる作業の自動化によく使われる。
日報のスクリプト
デスクトップへいって新規フォルダを作り、なかに日付を書いたテキストファイルを作成する、という作業を毎朝、繰り返さなくてはならない。
そんな状況があったとする。
同じことの繰り返しは、自動化できる可能性が高い。
マウスやキーボードを操って新規フォルダを作ったり、テキストエディタを立ち上げてファイルを保存するより、シェルスクリプトを書いたほうが、おそらく楽だ。
cd ~/Desktop #デスクトップへ行き
mkdir '日報' #日報という名前のフォルダを作り
cd '日報' #日報フォルダの中に入って
touch `date "+%y%m%d"`'日報.txt' #きょうの日付けのテキストを作成
「 # 」はコメント記号なので、# から右は読みこまれない。
シェルスクリプトは、 ふつうのプレーンテキストに書きこみ、拡張子に「.sh」をつけて保存する(つけなくてもいい)。文字コードは Mac の場合 UTF-8 にしておけば間違いない。改行コードは「LF」にする。
ここでは「nippo.sh」と名付けた。
シェルスクリプトの実行
実行はターミナルでおこなう。
sh nippo.sh
という具合に、sh にスクリプトのファイル名をくっつけて、リターンキーを押す。
sh の後には必ず半角スペースが入っていなければならない。
ユーザがいるディレクトリと、同じディレクトリにスクリプトがある場合は、上記のようにファイル名をくっつけるだけで実行できる。どういうことか。
ディレクトリとは階層のことで、ターミナルを起動すると、ユーザはふつうホームディレクトリにログインする。「書類」やら「ピクチャ」やら「デスクトップ」が入っている、ホームフォルダのことだ。
ターミナルを起動すると現われる「MacBook:~ ユーザ名$」のような表示は、ユーザがホームディレクトリにいることを示している(~ が、ホームをあらわす記号なのだ)。
自分がいるディレクトリを、カレントディレクトリという。
スクリプトファイルが、カレントディレクトリにある時は、sh nippo.sh
だけでスクリプトを実行できる。同じ階層にあるからだ。
しかし例えば、スクリプトファイルが、デスクトップや書類のような別の階層にある場合は、以下のように場所を指定して書かなくてはならない。
sh ~/Desktop/nippo.sh
sh まで書いたら、スクリプトをターミナルのウィンドウ内にドラッグ&ドロップすれば、ターミナルが自動で場所とファイル名を入力してくれる。
実行権の付与
初回はほとんどの場合、以下のような警告が出て、実行できない。
-bash: /Users/user/Desktop/nippo.sh: Permission denied
シェルスクリプトの実行には、実行権が必要なのだ。
権限に関するコマンドは chmod
である。
権限には三つあり、読み取り[ r ]、書き込み[ w ]、実行[ x ]などとあらわされる。このなかの x をシェルスクリプトに与える。
chmod u+x ~/Desktop/nippo.sh
[ u ]というのは所有者のことだ。これに[ x ]をプラスするイメージだろうか。ユーザの種類には、[ u ]の所有者のほか、[ g ]のグループ、[ o ]のその他がある。
ふたたび実行する。
今度はうまくいった。
ちなみに CotEditor は、ファイルを保存するタイミングで実行権を付与できて便利だ。
その他の実行方法
実行のたびに冒頭に「sh」をつけるのが面倒な場合は、はぶく方法がある。
シェルスクリプトの一行目に、以下の文字列を加えるのだ。
#!/bin/sh
これを追加して保存すれば、次回からは、
~/Desktop/nippo.sh
だけで実行できる。
カレントディレクトリにあるファイルを実行する場合は、
./nippo.sh
と「./」が必要だ。
パスの通ったディレクトリにシェルスクリプトを置くと、script.sh
だけで実行できて、さらに便利になる。
最近のコメント