Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxシェルスクリプト学習ガイド:初心者からシステム管理者への全5回シリーズ

Linuxシェルスクリプトとは?

Linuxには、Windowsでは利用できない強力なツールが数多く組み込まれています。その代表格がシェルスクリプト(Shell Scripting)です。Windowsにも類似のツールは存在しますが、Linuxのシェルに比べると機能面で大きく劣ります。シェルスクリプトを活用すれば、複数のコマンドをパイプで連結して目的の出力を得るなど、日々の定型作業を自動化できます。実際、サーバー上の日常タスクの自動化はシステム管理者にとって重要な業務であり、多くの管理者は必要なタイミングで実行できるスクリプトを作成してこれに対応しています。

Linuxシェルスクリプト学習ガイド:初心者からシステム管理者への全5回シリーズ

Linuxで最も広く利用されているシェルは、Bourne Again Shellの略であるBASHです。その他、Linuxでよく使われる主なシェルは以下のとおりです。

  1. Almquist shell(ash
  2. Bourne shell(sh
  3. Debian Almquist shell(dash
  4. Korn shell(ksh
  5. Public Domain Korn shell(pdksh
  6. MirBSD Korn shell(mksh
  7. Z shell(zsh
  8. Busybox など

本記事では、全5回のシリーズにわたって、さまざまな観点からシェルスクリプトの書き方を幅広く紹介します。

第1部:Linuxシェルと基本のシェルスクリプトを理解する

筆者は当初、スクリプト言語の記事が読者に受け入れられるか不安でしたが、反響は歴史に残るほどのものでした。この記事では、スクリプト言語の基礎知識、基本的なコマンドの書き方、コメント行の必要性と記述方法、「shebang(シバン)」の意味、スクリプトを実行可能ファイルにする方法と実行手順までを解説しました。

Hello.sh

最初の入門スクリプトは、シンプルな出力を行うものです。まずはシェルスクリプトの世界に慣れることを目的としています。

Process.sh

2つ目のスクリプトでは、1つのスクリプト内で複数のコマンドを実行する方法を学びます。この段階ではまだパイプ処理は扱いません。

Interactive.sh

3つ目となる最後のスクリプトは、シンプルながら対話性の高いものです。名(ファーストネーム)の入力を求めて保存し、続いて姓(ラストネーム)の入力を求めて保存したうえで、フルネームと姓を別々の行に出力します。

この記事を読み終える頃には、シェルスクリプトから独立してLinuxコマンドを実行する方法、必要に応じたデータの保存・操作、実行時のデータ保存方法を習得できているはずです。

シェルスクリプト 第1部: Linuxシェルと基本のシェルスクリプト言語を理解しよう

第2部:Linux初心者向けシェルスクリプト5選

第1回の記事で大きな反響をいただいたため、すぐにシリーズ第2弾の執筆に取りかかりました。タイトルのとおり、ここでは5つのシェルスクリプトを取り上げます。どのようなスクリプトを紹介すべきか悩んだ末、今回は「デザインと色」にテーマを絞りました。狙いは「Linuxのターミナルは退屈で無機質なものではなく、カラフルに作業を進められる」ということを伝えることでした。

Special_patter.sh

最初のスクリプトは、ドット(.)を使ったダイヤモンド模様などの特殊なパターンを描画します。ここではforループの実装方法を学べます。

Colourful.sh

2つ目のスクリプトでは、複数の色で出力を行います。文字色と背景色をそれぞれ変更するカラーコード(暗記は不要です)を習得でき、とてもカラフルな学習体験が得られます。

Encrypt.sh

3つ目のスクリプトは10行未満の短いコードですが、ファイルやフォルダをパスワードで暗号化できる非常に便利なものです。セキュリティ対策がこれほど簡単に実装できるのは驚きです。復号化用のスクリプトは用意せず、復号に必要なコマンドだけを紹介し、自分で復号スクリプトを書いてもらう課題形式にしました。

Server-Health.sh

4つ目のスクリプトは、この学習段階としてはやや長めのもので、サーバー関連の情報をレポートし、後で参照できるようにファイルへリダイレクトできます。Linuxコマンドをパイプラインで連結して目的の結果を得る手法を解説しており、スクリプティングにおける重要な道具である「パイプライン」をマスターできます。

Disk_space.sh

5つ目となる最後のスクリプトは、特にWeb管理者に役立つもので、ディスク使用量が上限を超えた際にユーザーへ自動メールを送信します。たとえば5GBのWebスペースを契約しているユーザーの使用量が4.75GBに達した時点で、容量増加を促すメールが自動送信される仕組みです。

シェルスクリプト 第2部: シェルプログラミングを学べる5つのスクリプト

第3部:Linux BASHスクリプティングの世界を航海する

次は、スクリプト言語で使われるキーワードや予約語について解説し、よりプロフェッショナルなスクリプト作りを目指します。また、シェルスクリプト内でのLinuxコマンドの活用方法についても触れました。

up.sh

最初のスクリプトは、シェルスクリプト内で1つ上のディレクトリへ移動する方法を示します。Linuxパッケージのインストール時に、ファイルが複数の場所へ自動的に配置されるのを見たことがあるでしょう。こうした処理が必要な場面でこのスクリプトが役立ちます。

Randomfile.sh

2つ目のスクリプトは、管理者にとって非常に有用です。日付とタイムスタンプ付きの一意なファイル/フォルダを自動生成できるため、データの上書き事故を防げます。

Collectnetworkinfo.sh

3つ目のスクリプトは、サーバーに関する情報を収集してテキストファイルに保存します。あとで参照できるよう送信・保管しておくのに便利です。

Convertlowercase.sh

4つ目のスクリプトは、ファイルまたは標準入力からのデータを一括して小文字に変換します。

Simplecalc.sh

最後のスクリプトはシンプルな電卓で、四則演算(加算・減算・乗算・除算)を対話的に実行できます。

シェルスクリプト 第3部: Linux BASHスクリプティングの世界を航海しよう

第4部:Linuxシェルプログラミングにおける数学的処理

数学テーマの記事は、読者からのメールがきっかけで生まれました。Linux愛好家の方から「第3回の最後のスクリプト、そう、電卓スクリプトが理解できない」というご指摘をいただいたのです。そこで数学的な操作を分かりやすくするため、各演算ごとに独立したスクリプトを作成しました。

Addition.sh

名前のとおり、2つの数値の足し算を行うスクリプトです。演算には「expr」コマンドを使用しています。

Subtraction.shMultiplication.shDivision.sh は、それぞれ2番目、3番目、4番目のスクリプトで、名前に対応した数学的演算を実行します。

Table.sh

5つ目のスクリプトは、実行時に指定した数値の掛け算表(九九表)を生成します。

EvenOdd.sh

次のスクリプトは、標準入力から受け取った数値が奇数か偶数かを判定し、結果を標準出力に表示します。

Factorial.sh

7つ目のスクリプトは、数値の階乗を計算します。紙の上で階乗を計算するのは大変な作業ですが、スクリプトなら楽しく計算できます。

Armstrong.sh

このスクリプトは、入力された数値がアームストロング数かどうかを判定します。

Prime.sh

最後のスクリプトは、数値が素数かどうかを判定し、結果を出力します。

シェルスクリプト 第4部: Linuxシェルプログラミングにおける数学的側面

第5部:スクリプトによる数式の計算

Fibonacci.sh

最初のスクリプトは、入力された数値がフィボナッチ数かどうかを判定します。

Decimal2Binary.sh

2つ目のスクリプトは、10進数を2進数に変換します。夏休みの課題でおなじみの定番プロジェクトですね。

Binary2Decimal.sh

3つ目のスクリプトは、2進数を10進数に変換します。前述の処理の逆変換です。

ただし、以下の基数変換については専用スクリプトは用意せず、ワンライナーのコマンドを紹介しました。各自のスクリプトに組み込んでみてください。

  1. 10進数 → 8進数
  2. 10進数 → 16進数
  3. 8進数 → 10進数
  4. 16進数 → 10進数
  5. 2進数 → 8進数(上記の応用です)

シェルスクリプト 第5部: シェルスクリプト言語による数式の計算

おわりに

掲載したすべてのスクリプトは、私たち自身の手で動作確認済みです。どのスクリプトも端末上で100%問題なく動作します。さらに、ほとんどのスクリプトにはサンプル出力を添えているので、迷うことはありません。

今回の紹介はここまでです。今後も皆さんに楽しんで読んでいただけるような興味深い記事をお届けします。それまでTecmintとのつながりをお忘れなく。健康に気をつけて、ご購読を続けてください。貴重なご意見をコメント欄でお聞かせいただければ幸いです。

  1. 実用的な5つの例で学ぶBashスクリプト入門チュートリアル

    Unix SedやUnix Awkシリーズと同様に、本シリーズではBashスクリプティングに関する記事を複数回にわたって公開します。実用的なサンプルを交えながら、Bashスクリプティングのテクニックを幅広く解説していきます。 シェルとは、ユーザーが入力したコマンドを解釈して実行するプログラムです。コマンドはユーザーが直接入力するか、「シェルスクリプト」と呼ばれるファイルから読み込まれます。 ユーザーからの入力を直接読み取る場合、そのシェルは対話型(インタラクティブ)シェルと呼ばれます。 一方、ファイルからコマンドを読み込んで実行する場合は非対話型(ノンインタラクティブ)シェルと呼ばれます。この

  2. Windowsの「システム情報」ウィンドウでPCの詳細な構成を確認する方法

    Windowsが世界中の何百万人ものユーザーに愛されている理由は数多くありますが、そのひとつが、パソコンのハードウェアやOSに関するほぼすべての情報を簡単に確認できる点です。実はWindowsには、コンピュータ本体とソフトウェア面のあらゆる詳細を一覧表示できる機能が標準で搭載されています。この情報は、ハードウェアの交換や、長年悩まされてきたトラブルの原因調査などにおいて非常に役立ちます。 この機能は「システム情報(System Information)」ウィンドウと呼ばれ、Windows Vista以降のOSに標準搭載されています。その後Windows 7、Windows 8、Windows