SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine Day 2024 Winter

2024年2月1日(木)12:00~17:40

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

その他のスペック一覧

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

採用管理システム<br>主要製品スペック一覧 2023

採用管理システム
主要製品スペック一覧 2023

Linuxを知らない人のためのLPICレベル1【101試験】入門 | 第5回

シェルスクリプトの構文・書き方と実行方法~パーミッションの設定も


  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena

 本連載では、LPICレベル1学習のポイントを、全10回で解説していきます。第5回となる本稿のテーマは「シェルスクリプト」です。システム管理・運用の現場ではシェルスクリプトが多用されています。高いスキルを持つことでLinuxエンジニアとしての仕事が速くなり、高い評価を得られるでしょう。プログラミング経験のない方も難しく考えず、コマンドが処理されていく順番をまず押さえましょう。また、シェススクリプトの実行に必要な設定である「パーミッション」についても、最低限の説明を行います。

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena

シェルスクリプトとは

シェルスクリプトとは、「シェル」が解釈することができる「スクリプト」のことです。

シェルとは、ユーザーが入力したコマンドを認識し、Linuxのコアであるカーネルにそのコマンドを受け渡すプログラム群です。Linuxでコマンドを実行する場合、何らかのシェルの上で行います。

一方、スクリプトとは、コンパイル(機械語への変換処理)を行わずに実行される形態のプログラムのことをいいます。Linuxでは複数のコマンドを使ってある処理を行う場合、それら複数のコマンドをファイルに記述しておき、それをシェルに読ませて実行することができます。この「複数のコマンドをファイルに記述」したものがシェルスクリプトです。シェルスクリプトファイルを作成することにより、コマンドを1つ1つ入力し実行していく手間が省けます。

シェルスクリプトのメリットそれだけではありません。処理のフローを制御することも可能になります。例えば、「ある条件の時に処理Aを実行するが、その条件以外の時には処理Bを実行する」といった条件分岐処理や、 「ある処理Cを10回繰り返す」といった反復処理を記述できるのです。

何だかとても便利そうな気がしてきますよね。それでは、早速シェルスクリプトを作っていきましょう。

シェルスクリプトを作ってみよう

まず、簡単なシェルスクリプトを作成してみましょう。内容は次のとおりで、3行だけの非常にシンプルなスクリプトです。rootユーザのホームディレクトリに、スクリプトを記述したファイルを作成します。シェルスクリプトであると分かるよう、ファイルの拡張子は「.sh」にします。

/root/sample1.sh
#!/bin/bash
echo TEST
echo TEST2

1行目は何度も出てくるので覚えておきましょう。これはbashというシェルを使ってスクリプトを解釈し実行するという宣言です。

実は、シェルにはいくつも種類があります。bashはその内の1つに過ぎません。現在多くのLinuxディストリビューションでbashが標準のシェルとなっていますが、bash以外のシェルも使用できます。ただし、シェルによって使えない記述もあるため、このようにスクリプトの先頭で、どのシェルでスクリプトを実行するかを指定しておくのです。

もし、bash以外のシェルにスクリプトを実行させる場合には、そのシェルのパスを指定します。また、bashのパスが「/bin/bash」でなければ、そのパスを指定します。

2~3行目では、echoコマンドで「TEST」「TEST2」という文字列を出力しています。このシェルスクリプトを実行すると、次のように文字列が表示されるはずです。

/root/sample1.shの実行結果の予想
TEST
TEST2

では、sample1.shを実際に実行してみましょう。スクリプトファイルを実行するには、そのファイルのパスを指定します。今回は相対パス指定を使って、./sample1.shと入力します。

/root/sample1.shの実行結果
# ./sample1.sh
-bash: ./sample1.sh: 許可がありません

文字列は表示されず、エラーになってしまいました。なぜでしょう?

ファイルに実行権限を付与する

エラーになった理由は、スクリプトファイルを実行する権限が、自分に付与されていなかったためです。Linuxのユーザーはファイルに対し、「読み取り」「書き出し」「実行」という3つの操作を行うことができますが、そのためにはそれを行う権限(パーミッション)がファイルに付与されている必要があります。

ファイルに付与されているパーミッションはls -lコマンドで確認できます。

ls- lコマンドでパーミッションを確認
# ls -l sample1.sh
-rw-r--r-- 1 root root 24  2月 17 19:41 sample1.sh

コマンドの実行結果の先頭にある-rw-r--r--がこのファイルに付与されているパーミッションを表しています。ただし、最も左にある1文字はパーミッションではなくファイルの種類を表します。パーミッションを表す記号は、左から2文字目から一番右の文字までです。

パーミッションを表す記号はその位置(何文字目か)で、誰に対するパーミッションかが決まっています。

  • 左から2~4文字目:このファイルを作成したユーザーのパーミッション
  • 左から5~7文字目:このファイルを作成したユーザーの所属グループ(前回を参照)にいる他のパーミッション
  • 左から8~10文字目:その他のユーザーのパーミッション

パーミッションは3文字で表されます。並びは常に左からrwxという順です。

  • r:そのファイルの読み取り権限を持つ
  • w:そのファイルの書き出し権限を持つ
  • x:そのファイルの実行権限を持つ
  • -:その権限を持たない

sample1.shの場合、このファイルを作成した自分に付与されている権限は、2~4文字目がrw-であることから、読み取りと書き出しだと分かります。つまり、自分で作成したファイルではありますが、実行権限は付与されていません。これがエラーの原因だったのです。

それでは、sample1.shを実行できるよう、パーミッションを変更しましょう。パーミッションの変更はchmodコマンドで行います。

chmodコマンドでパーミッションを変更
# chmod 755 sample1.sh
# ls -l sample1.sh
-rwxr-xr-x 1 root root 24  2月 17 19:41 sample1.sh

権限を表すrwxには数値が割り当てられています。rは1、wは2、xは4です。chmod 755コマンドの755はこの数値を使って、付与したい権限の数値を自分、グループのメンバー、他のユーザーそれぞれで足し込んだものです。

自分には7を指定してrwxという権限(読み取り、書き出し、実行)を付与しています。グループのメンバー、他のユーザーには5を指定してr-xという権限(読み取り、実行)を付与しています。実行権限を付与するときには、必ず読み取り権限も付与します。ファイルが読めなければ実行できないからです。

これでsample1.shを実行するための権限が付与できました。それでは、再度実行してみましょう。

権限を付与後のsample1.shの実行結果
# ./sample1.sh
TEST
TEST2

実行されました。「echoコマンドを2回実行し、”TEST”と”TEST2”という文字列を出力する」という処理をシェルスクリプトにまとめることができました。これだけではあまりメリットが感じられないかもしれませんが、これも立派なシェルスクリプトです。では、次にもう少し複雑なスクリプトを作成していきましょう。

次のページ
if文による条件分岐

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
Linuxを知らない人のためのLPICレベル1【101試験】入門連載記事一覧

もっと読む

この記事の著者

土橋 直樹(システムアーキテクチュアナレッジ)(ツチハシ ナオキ)

システムアーキテクチュアナレッジにて講師を行う傍ら、IT技術情報ブログ「テックプロジン」や、スイーツ口コミサイト「スイートウォント」など、各種Webサービスの開発・運営に携わる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/84 2016/10/04 12:16

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年2月1日(木)12:00~17:40

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング