【1.Hello World】ざっくりわかる「シェルスクリプト」

Hello World

はじめてのbashコマンド「echo」
ターミナルで非常に単純なbashステートメントを実行します。 コマンドの出力は「Hello, World」になります。

$ echo "Hello, World"
Hello, World
$

はじめてのbashスクリプト「vim」

$ vim HelloWorld.sh
<空のvim HelloWorld.sh が開きます>

vimで開いたHelloWorld.shを編集します。

#!/bin/bash

echo "Hello World";

はじめての実行権限「chmod」
bashファイルは2つの方法で実行できます。
1.bashコマンドを使用する方法、
2.bashファイルに実行権限を設定し、ファイルを実行する方法

一つ目の方法「bashコマンドを使用する」

$ bash HelloWorld.sh

もう一つの方法「chmodで実行権限を付与する」

# +x で実行権限を付与
$ chmod +x HelloWorld.sh
# ドット スラッシュをつけて実行
$ ./HelloWorld.sh
ヒント
$ ./ でファイルを実行する場合、ソースファイルの先頭行に記載されている

#!/bin/bash

という記述をつかって実行されます。

$ ./<ファイル名>

で実行した場合は、bashコマンド(/bin/bash )を使って実行することを、ソースファイルの先頭で宣言している。という事になります。

このソースファイルの1行目の記述を「シェバン」と言います。

/usr/local/bin/awk

にあるコマンドを使ってソースファイルを実行( ./<ファイル名>)したい場合は、ソースファイルの先頭行に

#!/usr/local/bin/awk

と、記述します。

chmod の実行権限には +x で実行権限を付与する方法の他、0755 などの数字で付与する場合もあります。
これらをパーミッションと言います。

ヒント
考え方ですが、bashコマンドでファイルを実行する場合のメリットは、ファイルに実行権限をやみくもに与える必要がないことです。
同時に、第三者が簡単にファイルを実行できる事を防ぐ、自分自身が誤ってファイルを実行してしまうというケアレスミスを防ぐことができます。
実行権限を与える方法は、一般的ではありますが、注意も必要です。

パーミッションの確認
ターミナルのコマンドでカレントディレクトリ内のファイルやディレクトリの情報を確認します。

$ls -l

上記のコマンドを実行すると、以下のような一覧が表示されるかと思います。

-rw-r--r--  1 user group      9  1月 1 00:00 hoge.txt
drwxr-xr-x  6 user group  20480  1月 1 00:00 ダウンロード

パーミッションの読み方
「-rw-r–r–」や「drwxr-xr-x」の先頭の謎の10文字についてですが、
最初の1文字目はファイル種別を表しています。
-rw-r–r–

種別意味
-ファイル
dディレクトリ
lシンボリックリンク

2文字目から4文字目はファイルの所有者に対する権限を表し、
5文字目から7文字目はファイルの所有グループに対する権限を表し、
8文字目から10文字目はその他に対する権限を表しています

上記から-rw-r–r–は、
「ファイル種別」が「ファイル」であり、
「所有者」に「読み取り」と「書き込み」の権限があり、
「所有グループ」に「読み取り」の権限があり、
「その他」に「読み取り」の権限があることを示しています。

drwxr-xr-xは、
「ファイル種別」が「ディレクトリ」であり、
「所有者」に「読み取り」と「書き込み」と「実行」の権限があり、
「所有グループ」に「読み取り」と「実行」の権限があり、
「その他」に「読み取り」と「実行」の権限があることを示しています。

アクセス権限の変更
アクセス権限を変更する方法について記載します。

パーミッションの変更には chmodコマンドを使用します。

数値で指定する

$ ls -l 
-rw-r--r--  1 user group      9  1月 1 00:00 hoge.txt
$ chmod 764 hoge.txt
$ ls -l
-rwxrw-r--  1 user group      9  1月 1 00:00 hoge.txt

上記のコマンドはhoge.txtに対してパーミッションの確認→変更→確認を行っています。

$ chmod 764 hoge.txt

に関して説明していきます。
ファイルのパーミッションの変更は以下の通りコマンドを実行すれば可能です。

chmod モード 対象ファイル名

モードの数字について

モード(数字)モード(アルファベット)権限
4r読み取り
2w書き込み
1x実行
上記の合計値を「所有者」「所有グループ」「その他」の順で入力することでパーミッションを変更することができます。 要するに上記の「764」は 「所有者」に対して「読み取り」「書き込み」「実行」を、 「所有グループ」に対して「読み取り」「書き込み」を、 「その他」に「読み取り」を付与しています。
ヒント
実行したい場合は $ chmod 755 <ファイル名>
読み取りのみを許可し、実行しない場合は $ chmod 644 <ファイル名>
自分だけの読み取りを許可する場合は $ chmod 600 <ファイル名>
通常は上記3種類しか使いません。
CGI などを使う場合は $ chown や $chgrp を組み合わせて使うことが多いです。
$ chmod 777 <ファイル名> というパーミッションを軽率に与えず、上手にコマンドを使いこなすことがセキュリティにつながります。

詳しくはこちら
https://qiita.com/shisama/items/5f4c4fa768642aad9e06

書籍の紹介

【はじめから】ざっくりわかるシェルスクリプト1」

【はじめから】ざっくりわかるシェルスクリプト1」

【2.echo コマンド】ざっくりわかる「シェルスクリプト」

【2.echo コマンド】ざっくりわかる「シェルスクリプト」