shell(シェル)とは?特徴やメリット・活用方法を解説
thumb_shell_01
shell(シェル)とは?特徴やメリット・活用方法を解説
アンドエンジニア編集部
2022.06.17
この記事でわかること
shell(シェル)とは、システムコマンドを実行するOSの操作インターフェースを指します
対話的に逐次解釈する方法と、シェルスクリプト実行によるバッチ処理や一括実行に対応します
運用の自動化や作業の標準化・作業品質向上が期待でき、システム運用に活用されています

shell(シェル)とは?

img_shell_01

shell(シェル)とは、OS(オペレーティングシステム)の操作を行うためのインターフェースプログラムを指します。システムコマンドのインターフェースとしてOS操作を行います。

OSの中核となるコードをカーネル(核)と言います。その外側のユーザ側のインターフェース部分をシェル(殻)と呼んでいます。貝殻の中と外のイメージです。シェルは対話的(インタラクティブ)にユーザー操作要求を解釈し、必要な処理を実行します。

シェルの特徴

シェルの特徴の1つは、カーネルリクエストを簡単に行えることです。従来のプログラミングではシステムアクセス用のプログラムコードを作成する必要がありました。シェルでは、追加のアプリ開発をせずに、コマンドラインで必要な操作をすることができます。

続く特徴は、シェルスクリプトというスクリプト言語に対応していることが挙げられます。シェルは、作業の操作をコマンドラインに記述し実行します。シェルスクリプトでは、同じ処理手順をコードとして作成することで、バッチ処理や一括実行を簡単に行うことができます

シェルの特徴とメリット

シェルの利用メリットは、前述のシェルの有する特徴を最大限活用できることです。具体的には、複数の作業手順を一括実行することで、シェルスクリプト実行による作業品質の均一化が可能です。スクリプト実行では、運用管理の自動化も期待できます。

作業手順としては、CLIで基本操作が正しいことを確認し、シェルスクリプトのコードを作成します。これにより運用管理における作業手順の標準プロセス化も可能です

コマンドラインインターフェイスとは

コマンドラインインターフェイスとは、コマンドを入力し所定の操作を行うインターフェースを指します。略称として、CLI(Command Line Interface)と呼びます。

シェルのコマンドインターフェースは、CLI形式がほとんどです。シェルはシェル自体が解釈できる組み込みコマンドと、外部のコマンドやアプリケーションを起動する外部コマンド呼び出しが実装されています

AWS CLIの使い方は?インストールから使用方法まで解説!

シェルスクリプトとは

シェルスクリプトとは、シェルで解釈可能な一連の操作コマンドを記述したコードを指します。スクリプト言語の一種です。シェル組み込みコマンドや外部コマンドを適宜実行させることで、複雑な処理に対応します。

シェルにはコマンドインターフェースとしてインタプリタ機能があります。入力されたコマンドの解釈を対話型で逐次実行します。シェルの実行方法は、CLIからのコマンド入力の対話型実行と、シェルスクリプトを用いた一括実行の両モードに対応します。

カーネルとは

カーネルとは、システム資源をプロセッサの特権を使って効率的に割当・実行・制御する機能を指します。具体的には、メモリーやCPU・I/O等を管理するOSの中核機能です。ユーザーはプログラムを実行することで、システムコールを通じてカーネルへ処理要求を発行します。カーネルは、システムコールの要求を手順に従い処理していきます。

カーネルはユーザーのプログラムやデーモン(常駐プロセス)をプロセスとして管理し、システム資源を割り当て、ファイルやI/Oのアクセスを管理します。

シェルの種類

img_shell_02

シェルは、UNIX系システムで実装されており、Linuxにも利用されています。macOSやWindowsにもシェルが搭載されています。ここでは代表的なシェルの種類について見ていきます。

Bourne Shell

Bourne Shellはshプログラムで、1977年に登場したシェルです。UNIXに標準搭載されていたため、古くから使われています。対話的に操作する場合にコマンド編集等の機能が実装されておらず、後に標準化されたPOSIX Shellに置き換わっていきました。

C Shell

C Shellはcshプログラムで、BSD UNIXで配布されたシェルです。Bourne Shellに不足していたヒストリ機能やエイリアス機能を実装したことで、対話的な操作性が大幅に向上しました。C言語に近い言語体系を取っており、シェルスクリプトの開発が容易です

ジョブコントロール機能によりフォアグランドジョブとバックグラウンドジョブの管理を可能としたために、バッチ処理等の運用性も向上しました。

KornShell

KornShellはkshプログラムで、Bourne ShellとC Shellの機能を取り込んでいます。Bourne Shellの上位互換として動作し、かつC Shellで実装された対話的操作時のコマンド編集機能を実装したものです。

Bash

BashはLinuxやUNIX系システムで用いられているシェルで、GNUプロジェクトにより開発されたBourne Shellのフリーソフトウェア版です。bashとは、Bourne-again shellの頭文字をとった名称です。フリーソフトウェア版開発にあたり、C ShellやKornShellの機能を取り入れています。

Bashは登場以降、Linuxのデフォルトシェルとして利用が進んでいます。macOSおよびMicrosoft Windowsにも対応しています。

Windows Powershell

Powershellは、.NET Frameworkで用いるオブジェクト指向のシェルです。CLIとシェルスクリプトに対応します。古くはWindows Scripting Host(WSH)が主流でしたが、Windows 7以降はPowershellが標準搭載され、Windowsシステムで利用されています。

その他

MS-DOSでは、コマンドプロンプトでバッチファイルが実行できました。現在はWindowsではWindows Subsystem for Linux(WSL)が実装されており、Bashを利用することが増えています

GUI系Shellというと、マンマシンインターフェースとしては、macOSやWindows、UNIX系システムのX Windowsがあります。スクリプト実行という意味合いでは、先に挙げたCLIとシェルスクリプトを併用することになります。

シェルの利用方法

img_shell_03

ここでは代表的なシェルであるBashの利用方法を見ていきます。BashはLinuxに標準搭載されています。macOSにも導入済みですので、お持ちの環境で利用できます。Windowsの場合は、WSLをインストールすることで、UbuntuとBashが利用可能になります。

Bashはデフォルトシェルとして広く利用されています。bashのリファレンスマニュアルはGNUで配布されています。 【参考】:Bash Reference Manual

シェルの操作方法

シェルは対話型によるコマンド実行や、スクリプトファイルを読み込んで実行します。リダイレクト機能を用いて入出力先を変更することもできます。コメント行には行頭に#を入れておきます。

システムのログインシェルとしてBashが設定されている場合は、そのままBashのコマンド入力が可能です。外部コマンドとしてBashを起動することもできますし、シェルスクリプトの1行目のコメント行に実行プログラム名としてbashを “#!/bin/bash” のように明示的に指定することもできます。

ログインシェルのプロンプトが ”$” の場合は一般ユーザ、”#” の場合はスーパーユーザ(root)の権限でシェルを実行することができます。

シェルのコマンド

シェルのコマンドは組み込みコマンドと、外部コマンド呼び出しが可能です

内部コマンドには、操作コマンドとしてechoやprintf、ジョブ制御のfg・bg・jobs等があります。ディレクトリ管理用のdirs・popd・pushd、履歴管理のfcやhistory、環境設定のsetやalias等が用意されています。スクリプト言語の構文では、evalやbreak・continue・return・break・exit等が用意されていますのでコマンドを併用し、プログラミングに利用することができます。

外部コマンドの例ですが、LinuxやUNIX環境ではファイルやディレクトリ表示のls、カレントディレクトリ変更のcd・chdir、ファイルやディレクトリ移動のmv、削除のrm、コピーのcp等を利用し、業務プログラムと連携してスクリプト処理を作成します。上記以外にも、ご利用の環境で提供されているコマンドは外部コマンドとしてシェルから実行できます。

シェルスクリプトの作成方法

スクリプトファイルはテキスト形式ですので、emacsやvi等のテキストエディタを用いて作成します

シェルスクリプトでは環境変数に応じた処理の追加や、コマンド解釈で必要とされる引用ルールに応じた文字列を引数として渡すことができます。シェル組み込みコマンドや外部コマンドを組み合わせて、より大規模な処理を登録することが可能です。

WindowsでBashを利用するには

WindowsのシェルはPowershellですが、LinuxやUNIXで使用しているBashを共通利用する場合はWSLを利用するのが良いでしょう。

WSL(Windows Subsystem for Linux)とは、Windows上でLinuxのコマンド・ツール・アプリケーションを直接実行するサブシステムを指します。WSL2では最新の仮想化テクノロジーを使用し、Linux環境がそのまま動作します。インストールも簡単に行うことができます。 【参考】:Windows Subsystem for Linuxに関するドキュメント 【参考】:Microsoft WSL のインストール

シェルの活用は、運用効率化の鍵

img_shell_04

シェルはインタラクティブに操作するインターフェースとして、LinuxやUNIX系システムで標準的に利用されています。WindowsでもWSLの活用が進んでいます。シェルスクリプトをシステム間で統一することで統合運用を図ることができます。運用自動化や作業プロセスの標準化が可能となります。

特にBashはクロスプロットフォームでも動作するため、活用実践や知識吸収は運用スキルアップとしてもおすすめです。

DXとは?その意味と日本の現状、DX推進の障壁となる要因を分かりやすく解説!
気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【無料個別転職相談会】アプリケーションエンジニア向け!リモート・在宅勤務で働きたい方へ
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT