こんにちは、えびかずきです。
今回はMacPCでシェルスクリプトを作る方法について説明します。
こんな人におすすめ:
ターミナルでの操作をプログラムとして保存して後で実行したい
開発環境
macOS: Catalina10.15.7
shell: bash
シェルスクリプトの作り方
ここでは一例として、デスクトップの”test”というディレクトリの中にあるファイルの拡張子を一斉に変更するシェルスクリプトを作成していきたいと思います。
1.まずターミナルを開いて、シェルスクリプトを記述するファイルを新規作成します。
$ touch rename.sh
上のように『touch』コマンドで作成してもいいですし、お好きなエディタで新規作成してもどちらでも良いです。
2.シェルスクリプトを記述する。
好きなエディタで『rename.sh』を開いて、下のように編集します。
#!/bin/bash
for f in ~/desktop/test/*.txt
do
mv $f ${f/.txt/.csv}
done
一行目の”#!/bin/bash”はshebang(シバン)です。
シバンというのはスクリプトを実行するためのインタープリタを指定するものです。最初はよくわからないかもしれませんが、まあとりあえず書いておきましょう。
二行目以降がファイル名を一斉変更するためのプログラムになります。
”for f in ~/desktop/test/*.txt”は、デスクトップにある”test”というフォルダの中にある全てのtxt拡張子付きファイルに対して、do~done内の記述を実行するという意味です。
『*』はワイルドカードを意味していて、どんな文字列が入ってもOKという意味です。
四行目の”mv $f ${f/.txt/.csv}”は、ファイル名の中に.txtを.csvへ変更するという意味です。
このファイルを保存すれば、とりあえずシェルスクリプトは完成です。
シェルスクリプトの実行の仕方
シェルスクリプトを保存したディレクトリに移動して、下のようにファイル名を入力すれば実行できます。
$ ./rename.sh
無事実行できると、下のように『.txt』のファイルを『.csv』へ一斉に変更できます。
実行権限でエラーが出る場合
『touch』コマンドでシェルスクリプトを新規作成した場合、実行権限が付与されていないので以下のようなエラーがでます。
-bash: ./rename.sh: Permission denied
この場合は、下のように『chmod』コマンドで実行権限を付与してから、再度シェルスクリプトを実行してみてください。
$ chmod a+x rename.sh
上の記述の意味は、rename.shのファイル設定に、全ユーザー(a)に実行権限(x)を付与するという意味です。
ちなみに実行権限の確認は、下のように『-l』オプションをつけて『ls』を実行することで一覧を表示することができます。
$ ls -l
…
…
-rwxr-xr-x@ 1 username staff 75 12 6 12:46 rename.sh
…
…
実行結果の『rwxr-xr-x』という記述がファイルの実行権限の状況を表しています。
左から順に3文字ずつ『所有者(u)』『グループ(g)』『その他(o)』の権限を表しています。
アルファベットそれぞれの意味は下表の通りで、『-』となっているのは権限がないということを表しています。
r | 読み取り可能 |
w | 書き込み可能 |
x | 実行可能 |
実行権限まわりの操作に関して詳しくは、下の記事などが参考になります。
パーミッションなどを設定する!chmodコマンドの詳細まとめ【Linuxコマンド集】
まとめ
今回はMacPCでシェルスクリプトを作る方法について説明しました。
シェルスクリプトの作り方は要するに、『.sh』の拡張子を付けたファイルの中に、シェルコマンドを書き込むということです。
ここではファイル名を変えるだけの簡単なシェルスクリプトを作成しましたが、当然もっと複雑なプログラムを作成して実行することも可能なので、みなさんもどんどん活用してみましょう。
コメントを書く