シェルスクリプトを使用してRubyファイルを実行する

# はじめに
こちらは、自社メンバー宛の記事です。
各トピックに細かい解説は含まれませんので、ご了承ください。
なお、記事作成者は駆け出しなので、
内容の誤りなどがあればご指摘いただけると幸いです。

# 今日やること
本記事では以下について、手順を説明します。
1. Rubyで作成したファイルの起動
2. Rubyファイルを簡単に起動するためのショートカット作成

# 環境
macPCを想定しています。
今回解説するRubyもLinuxコマンドもmacであれば標準搭載されていると思うので、
特に環境構築等は必要ないと思われます。

# Rubyファイルを起動しよう
Rubyファイルを起動するには、大きく3つのステップを踏みます。
1. ターミナルを起動する
2. Rubyファイルが格納されているディレクトリに移動する
3. Rubyファイルを起動する

## 1. ターミナルを起動する
ターミナルは以下のマークです。
![スクリーンショット 2021-02-23 8.55.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/657cb8c5-c082-5872-3252-c789fcd9bc07.png)

もしくは、[Command]+[Space]でスポットライト検索してもOKです。

![スクリーンショット_2021-02-23_8_52_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/e6628ed3-dffc-6f26-7bd3-8ec5758ca52c.png)

## 2. Rubyファイルが格納されているディレクトリに移動する
今回は、デスクトップにRubyファイルがあると想定します。
起動したターミナルに以下のコマンドを入力し[Enter]で確定します。

```:ターミナル
cd Desktop
```

![スクリーンショット_2021-02-23_9_00_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/2f02b3bf-d0f0-dc1a-b491-2a262d922a14.png)

## 3. Rubyファイルを起動する
上記のステップで、デスクトップ内のファイルを扱うことができるようになりました。
これでデスクトップに配置したRubyファイルを起動できます。
起動するには、続けてターミナルで以下のコマンドを入力し、[Enter]を押します。

```:ターミナル
ruby calc2.rb
# calc2.rbは起動するRubyファイル名をあらわすので、適宜変更して入力してください。
```

![スクリーンショット_2021-02-23_9_09_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/ca22bef5-ca2a-ff44-c089-ae92fbb4d782.png)

## いったんまとめ
Rubyファイルの起動には2つのコマンド入力がありました。
念のため、コマンド部分のみ抜粋しますので、起動の際には順にコピペして実行してください。

```:ターミナル
cd Desktop
ruby calc2.rb
```

# ショートカット設定
上記のコマンドを使用して、デスクトップに配置したRubyファイルを
起動することができるようになったのですが、
・ 2つのコマンドを覚えるのが面倒くさい
・ デスクトップ以外に格納した場合、cdコマンドが変化する
といったちょっと面倒な問題があります。

そこで、ひと手間かかりますが簡単にRubyファイルが起動できるように
ショートカットを作成します。
完成すると以下のGif画像のように短いコマンドで一発起動することができます。

![fe1fd73c4e32433fb01051471ce7461d.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/5b803387-9779-f1f0-ae26-9b865d42d1e8.gif)

# ショートカットを作成しよう
ショートカットを作成するには、ターミナルで動く「vi」というエディタを使用して、
シェルスクリプトファイルを作成する方法があります。
以下の手順でシェルスクリプトファイルを作成します。
1. viエディタの起動
2. コードの入力
3. ファイルの保存
4. 作成したシェルスクリプトの権限を変更

## 1. viエディタの起動
ホームディレクトリ(ターミナル起動時に指定されているディレクトリ)に移動します。
以下のコマンドを入力して、[Enter]を押してください。

```:ターミナル
cd ~
# ターミナルを一度閉じて、再度起動してもOKです。
```

![スクリーンショット_2021-02-23_8_25_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/98341450-f4ec-8b79-031f-597b12609ab0.png)

次にviエディタを起動します。
以下のコマンドを入力して、[Enter]を押してください。

```:ターミナル
vi calc.sh
# calc.shはファイル名を指すため、別名でショートカットファイルを作成したい場合は変更してください。
```

上記のコマンドは、「vi」エディタを起動して、
calc.shという名称でファイルを新規作成するという意味です。
なお、「.sh」はシェルスクリプトをあらわす拡張子です。

![スクリーンショット_2021-02-23_8_26_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/7a503b5a-94c4-28d7-a7b9-cd1b0ecbebec.png)

## 2. コードの入力
エディタが立ち上がってすぐの状態は、文章を閲覧するモードになっているため、
編集できるように編集モードに切り替えます。
編集モードへの変更は、キーボードの[i]を押せばOKです。

```:ターミナル
i
```

![スクリーンショット_2021-02-23_13_09_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/cc5604b3-1901-1607-1f3b-0b657459e729.png)

編集モードに切り替わったら、中に文章を入力します。
全部で３行です。
まず１行目は、シェルスクリプトを使用できるようにするための定型文を入力します。

```:ターミナル
#!/bin/sh
```

1行目が入力し終わったら、[Enter]で改行します。
２行目は、前半で行ったディレクトリの移動コマンドです。
[cd Desktop]と入力してもよいのですが、必ずしもRubyファイルをデスクトップに
保管するわけではないと思うので、任意のフォルダの中にRubyファイルを保存している
という想定で以下に方法を記述していきます。

---自社の皆様----------------------------------------------------------------
このcalc2.rbは、私の個人フォルダ内のデモデータというディレクトリの中に保管しています。
2行目は、このデモデータフォルダを指定することで、
皆様のローカルにcalc2.rbを保管しなくても呼び出せるようになります。
---以上業務連絡でした---------------------------------------------------------

まずは、移動したいフォルダを開いておきます。
こちらの記事では、デスクトップに作成したexampleというフォルダ内にRubyファイルがある
という想定で行いますが、皆様は任意の階層の任意のフォルダを開いてください。

ターミナルに戻って、2行目に[cd]と半角空白1文字を入力しておきます。

```:ターミナル
cd 
# cdの後ろには、半角空白を1文字入れておいてください。
```

下の写真のようにフォルダマークをドラッグすると
ターミナル内にそのフォルダのパスが表示されます。

![スクリーンショット_2021-02-23_8_37_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/17a9bd56-280d-5f0c-c0f9-914f938e6a7b.png)

![スクリーンショット_2021-02-23_13_34_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/ec546048-3a7e-854f-2c62-a96c114af580.png)

[Enter]で改行します。
最後にRubyファイルの起動コマンドを入力します。
これは前半で実施したコマンドと同様で問題ありません。

```:ターミナル
ruby calc2.rb
```
![スクリーンショット_2021-02-23_8_36_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/16149e27-dd16-d055-a2be-926ce63d90eb.png)

## 3. ファイルの保存
作成したシェルスクリプトファイルを保存します。
[esc]エスケープキーを１回押して、編集モードを解除します。
左下にカーソルが出るので、次に[:wq]と入力して、[Enter]を押します。

```:ターミナル
:wq
# このコマンドはviエディタにおける上書き保存をあらわしています。
```

![スクリーンショット_2021-02-23_8_36_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/3140d2a0-04e8-afc7-9372-b03acb63f3db.png)

![スクリーンショット_2021-02-23_13_45_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/a6a853e9-bcab-fdf4-27f5-f74571245255.png)

## 4. 作成したシェルスクリプトの権限を変更
シェルスクリプトは作成しただけでは、実行できません。
実行権限を付与するためにコマンドを入力します。

まずは先ほど作成したファイルの権限を確認するために
ターミナルで以下のコマンドを入力し、[Enter]を押します。

```:ターミナル
ls -l
```

![スクリーンショット_2021-02-23_8_33_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/23948ee3-ca66-6f70-ca6f-942940812165.png)

左のハイフンやアルファベットの羅列が権限に関する情報になります。
この羅列は左から４つのグループで構成されます。
まず最初の[d]または[-]は、フォルダ(ディレクトリ)か単一のファイルかをあらわします。
今回作成したシェルスクリプトファイルは、フォルダではなくファイルなので[-]となります。

以降は3文字ずつが1かたまりで情報を表現しています。
左3文字が作成者、真ん中3文字がファイルの所属するグループのユーザー、
後の3文字がそれ以外のユーザーの権限をあらわします。

この３文字の内、[r]は読込権限、[w]は書込権限、[x]はプログラム実行権限をあらわします。
rwxの順で並びますが、[-]に置き換わっている箇所はその権限がないという意味です。

ファイルの権限を変更するコマンドは、以下のとおりです。
このコマンドによりすべてのユーザーが、このファイルに対する
すべての権限を持つようになります。
以下のコマンドを入力して、[Enter]を押します。

```:ターミナル
chmod 777 calc.sh
```

入力できたら、ファイルの権限を再確認します。
以下のコマンドを入力して、[Enter]を押します。

```:ターミナル
ls -l
```

![スクリーンショット_2021-02-23_8_35_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/f50e58d6-41f1-5e18-44d7-3e3f80f2368c.png)

## 動作確認
このシェルスクリプト起動するコマンドは、以下のとおりです。

```:ターミナル
./calc.sh
```

![fe1fd73c4e32433fb01051471ce7461d.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614723/16dcea24-8d1f-7cb0-55ff-a8a27e739072.gif)

問題なく起動できれば、
以降はターミナルを起動して、この短いコマンドを入力すれば、
Rubyファイルを実行できるようになります。 

# 作成記録
2021/2/23：この記事を新規作成