シェルスクリプトを書いて実行する方法【初心者向け】

シェルスクリプトを書いて実行する方法【初心者向け】
シェルとシェルスクリプトの関係は何となくわかったけど、シェルスクリプトってどうやって実行するのかなあ?と言う疑問にお答えします。

シェルとシェルスクリプトの関係は何となくわかったけど、シェルスクリプトってどうやって作って実行するのかなあ?と言う疑問にお答えします。

この記事では、シェルスクリプトを作る方法と実行方法がざっくりとと分かります。

シェルスクリプトを何となくイメージできたけど、具体的に試してみることで理解を深めたいという方にオススメの記事です。

それでは、まず概要から説明します。

シェルスクリプトのファイルを作る2つの方法

  • ターミナル内でシェルスクリプトのファイルを作る方法
  • ターミナル内からではなくデスクトップなど外部からスクリプトファイルを作る方法

以上の2つの方法があります。

作ったシェルスクリプトのファイルを実行する2つの方法

作ったスクリプトファイルを実行する方法にも2つの方法があります。

  • スクリプトを処理するコマンドで実行する方法
  • ファイル名で実行する方法

それでは、詳細を順にみていきましょう。

ターミナル内でシェルスクリプトのファイルを作る方法

デクストップにスクリプトファイルを作るので、ターミナルを開いてcdコマンドでデスクトップに移動します。

cd Desktop/

デクストップにスクリプトファイルを作るので、ターミナルを開いてcdコマンドでデスクトップに移動します。

補完機能を使うと便利

Tabキーで入力補完機能を使うと便利です。cdの後にDeと入力してTabキーを押すと、後の文字が出てきて入力する手間が省けるしタイピングミスもないのでラクです。

デスクトップに移動したら、次はデスクトップに「 hello 」というファイルを作り、そのまま内容を入力します。

cat > hello

→上記でhelloというファイルを作って保存しそのまま内容を入力できる。

内容:以下の文を書いてみましょう。

echo I am $USER.

echo hello world!

デスクトップに移動したら、次はデスクトップに「 hello 」というファイルを作り、そのまま内容を入力します。

ちなみに、$USERは環境変数を参照していて、ユーザー名に自動で置き換わります。

2つの文を入力したら、「 control + d 」で終了します。

終了するとまたプロンプトが表示されます。

※ミスったなどで、とりあえず中断したいときは「 control + c 」を押すとまたプロンプトの表示に抜けられます。

Finderを確認してみましょう。「 hello 」というファイルができています。

Finderを確認してみましょう。「 hello 」というファイルができています。

以上がターミナル内でシェルスクリプトのファイルを作る方法です。

ターミナル内からではなくデスクトップなど外部からスクリプトファイルを作る方法

この方法は簡単ですね。

Finderを開いて、好きな場所でファイルを作成し、内容を書いて保存するだけです。

今回はデスクトップに最初に作った「 hello 」をコピーして「 hell 」に名前を変えておきました。

今回はデスクトップに最初に作った「 hello 」をコピーして「 hell 」に名前を変えておきました。

以上が、外部にスクリプトファイルを作る方法です。

次は、冒頭の概要でご紹介したスクリプトファイルの実行方法をみていきましょう。

スクリプトを処理するコマンドで実行する方法

「 cat < hello 」のように、ターミナルから 作ったスクリプトファイルでしたら、

ターミナルからbash helloとするとスクリプトファイルが実行できます。

ターミナルからbash helloとするとスクリプトファイルが実行できます。

ターミナルからスクリプトファイルのhelloをFinderでコピペして作ったhellファイルを実行してみましょう。

すると、実はhell: not foundと表示されて、実行できません。

すると、実はhell: not foundと表示されて、実行できません。

実は、ターミナルの外部から作ったファイルは、

ファイルの先頭に「シェバン」という記述をしないといけないのです!

シェバンとは

シェバンとは、どのプログラムで動かしたいかを指定するものです。

今回は、ターミナルのシェルである「 bash 」を指定します。

#! /bin/bash

をファイル名「 hell 」の1行目に記述するとokです。

#! /bin/bashをファイル名「 hell 」の1行目に記述するとokです。

ちなみに、「 #! 」以降の部分が何を指定するかによって書き方が変わってきます。

今回は、bashを指定したので、/bin/bashを記載しています。

/bin/bashと書く記述の根拠はどうやって調べるの?ですが、

whichコマンドで調べることができます。

which bash

を実行すると、/bin/bashと表示されます。

which bashを実行すると、/bin/bashと表示されます。

それでは、シェバンを書いたので、bash hellとして実行してみましょう。

それでは、シェバンを書いたので、bash hellとして実行してみましょう。

無事にhellファイルの内容が実行されました。

以上がスクリプトを処理するコマンドであるbashコマンドでbashにスクリプトファイルを実行させる方法です。

ファイル名で実行する方法

ターミナルからファイル名で実行するには、シェバンを書く必要があります。

なので、シェバンを書いたhellファイルで試してみましょう。

「 ./hell 」とすればファイル名で実行できます。

「 ./ 」はターミナルの現在のディレクトリ、カレントディレクトリのことです。

ただしそのままだと実行しても実行権限がないので、

Permission deniedと表示され、拒否されてファイルを実行できません。

ただしそのままだと実行しても実行権限がないので、Permission deniedと表示され、拒否されてファイルを実行できません。

hellファイルへの実行権限を与えてみましょう。

chmodコマンドで実行権限を付与できます。

chmod +x hell

とします。

「 +x 」は実行権限の付与のことで、最後にファイル名のhellを書きます。

それでは、実行権限を付与したので、もう一度ファイル名で実行してみましょう。

それでは、実行権限を付与したので、もう一度ファイル名で実行してみましょう。

ファイルが無事に実行されて、hellに書いた内容が表示されています。

以上がファイル名でスクリプトファイルを実行する方法です。

まとめ

スクリプトファイルを作る方法は、ターミナルから作る方法と、

普通にFinderからデクストップなどでファイルを作る方法がありました。

シェルスクリプトの実行方法は、シェルであるbashに実行させる方法と、ファイル名で実行する方法がありました。

また、ターミナルの外から作ったスクリプトファイルを実行させるには、シェバンを書く必要があるということですね。

また、必要に応じて、ファイルの実行権限の付与が必要だということでしたね。

ぶっちゃけ慣れないと分かりにくいですが、手を動かすと理解が深まりますので、少々時間はかかってしまいますが、できるだけ手を動かしてアクティブラーニングで身につけていきましょう!

コメント

タイトルとURLをコピーしました