Shellの基礎知識
「シェルって、あの黒い画面のことでしょ?・・・(鬱」
現役のプログラマーでさえ、ネガティブなイメージを持つ方が多い「シェルスクリプト」。
仕事でUNIXを与えられたはいいが、その使い方がうまくつかめないため、どことなく不安な方も数多くいると思います。
まずは「シェル」を使って簡単なスクリプトを作成することを目標に学んでいきましょう!
シェルスクリプトの基礎知識
step
1 シェルスクリプトの基本事項
「シェルスクリプト」とは、カーネルに対して処理をさせたい命令をまとめた「プログラム」ファイルのことです。「Shell」はシェルスクリプトの上から順番に処理していきますので、サーバーの管理のような単純な作業をまとめておくと自動化することができます。この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」の基礎について解説します。
主な内容
- シェルスクリプトの基本事項
- コメントの付け方「#」
- 権限の設定
- シェルスクリプトの実行
- コマンドの終了ステータス
- ひな形の活用
step
2 シェル変数と特殊変数
シェルでは、シュル変数によって変数を扱うことが出来ます。またシェル変数と演算子を使うことによって、複雑な処理の判定を行うことが出来るようになります。本記事では、シェル変数について解説します。
主な内容
- 変数とは?
- シェル変数とは?
- 変数名についてのルール
- シェル変数を宣言する
- シェル変数の初期設定(=、-、?、+)
- 特殊変数とは?
- 「$0」「$@」「$*」「$#」「$?」「$!」「$$」「$-」「$_」
step
3 「算術演算子」「比較演算子」
シェルスクリプトは、シェル演算子を使うことによって、複雑な処理の判定を行うことが出来るようになります。本記事では、シェル演算子について解説します。
主な内容
- 演算子とは?
- 四則演算子とは?
- 比較演算子とは?
step
4 条件分岐
条件判断によってプログラムを分岐する「if」文や文字列をパターンごとに場合分けしてプログラムを分岐する「case」文、一定の処理をシェル関数としてまとめ、これを適宜呼び出して使用することもできます。この記事では、シェルスクリプトにおける代表的な制御構文「if」文及び「case」文について解説しています。
主な内容
- 条件分岐とは?
- if文とは?
- case文とは?
step
5 ループ処理
条件分岐と繰り返し処理を組み合わせれば、特定の処理を指定した回数、処理してくれるようにすることが可能です。この記事では、シェルで扱う上で、代表的な制御文「for」文及び「while」文について解説します。
主な内容
- ループ処理とは?
- for文とは?
- while文とは?
step
6 文字列置換
業務中にメモ帳やエクセルで特定の言葉や名称だけを変更したいときに「置き換え」機能を使ったことありませんか?本記事では、普段何気なく使っている便利な機能を、シェルスクリプトで行う方法を説明しています。
主な内容
- 置換する方法
- bash置換の書式
- sed置換の書式
step
7 複数行のテキスト出力(ヒアドキュメント)
一定の内容の文書を即席で作成して、これをコマンドの標準入力にリダイレクトしたいことが時々あります。そんな時は、ヒアドキュメントが大変便利です。本記事では、ヒアドキュメントについて解説します。
主な内容
- ヒアドキュメントとは?
- 標準入力へリダイレクト
- ヒアドキュメントのインデント
- echoコマンドとの違い
- ファイルへ出力する方法
- catコマンドを利用したヒアドキュメントの記述
step
8 シェルスクリプトの関数
シェル関数は古くから組み込まれた、非常によく使われる機能です。シェルの関数を自在に使いこなせるようになると、サーバー構築における生産性は格段に向上します。この記事では、書式、戻り値、シェルスクリプト内の関数についてに解説しています。
主な内容
- 関数を定義・使用するときの書式について
- 関数における引数やパラメータについて
- 戻り値について
- 変数の範囲について
- グローバル変数
- ローカル変数
- 複数ファイルに分割して記述
- 共通関数定義ファイルの分割
- 実行シェルスクリプトの作成
step
9 組み込みコマンドの概要
シェルのコマンドには、基本的に最初から組み込まれている「基本組み込みコマンド」と、後から組み込まれた「外部組み込みコマンド」、「拡張組み込みコマンド」が存在します。この記事では、シェルに始めから組み込まれている「組み込みコマンド」をご紹介します。
主な内容
- 組み込みコマンドとは?
- 基本組み込みコマンド
- 「:(ヌル)」「.(ドット)」「break」「continue」「cd」「eval」「exec」「exit」「export」「getopts」「read」「readonly」「return」「shift」「trap」「type」「umask」「unset」
- 外部組み込みコマンド
- 「echo」「true」「false」「kill」「printf」「pwd」「test」
- 拡張組み込みコマンド
- 「builtin」「let」「local」
step
10 クォートとコマンド置換
クォートとは、文章においてはいわゆる引用符ですが、シェルスクリプトにおいては、囲まれた内容について特別な処理を行います。この記事では、「クォート」及びコマンドの置換について解説します。
主な内容
- クォートとは
- シングルクォート「'」
- ダブルクォート「”」
- バックスラッシュ(\)
- コマンド置換とは
- バッククォート「`」によるコマンド置換
- 「 $()」によるコマンド置換
step
11 シェルスクリプトのリダイレクト
通常、コマンドの出力結果は端末画面に出るようになっています。それをリダイレクトすることでファイルに結果を出力することができます。この記事では、リダイレクトとは?標準入力・出力、標準エラー出力等について解説しています。
主な内容
- リダイレクトとは
- ファイルディスクリプタとは
- リダイレクトの方法
- 標準入力のリダイレクト 「<」
- 標準入力のリダイレクト・ヒアドキュメント 「<<」
- 標準出力のリダイレクト 「>」
- 標準出力のリダイレクト・アペンド(追記)モード 「>>」
- 標準エラー出力のリダイレクト 「2>」
- ファイル記述子「&」を用いた表記
サンプル集
共通関数定義ファイル編
Shellはオブジェクト指向言語ではありませんが、共通関数は共通関数定義ファイルとして切り分けることで、可読性がより高くなりメンテナンス性も向上します。
実行シェルTIPS
Linux設定ツール編
※ 本サイトにて記載のすべてのスクリプト利用により発生した利用者の損害全てに対し、いかなる責任をも負わないものとし、損害賠償をする一切の義務はないものとします。