STEP 3: プログラム’知識

【IT入門】シェルとシェルスクリプトの違いとは?シェルの種類について

IT入門シリーズ

🟢 STEP 1: ITの基礎を知る(ITとは何か?)
 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ。

🟡 STEP 2: PCの基本を知る(パソコンを扱えるようにする)
 📌 パソコンの基本操作を学び、Windows・Macの使い方や選び方を解説。

🔵 STEP 3: プログラミングの概念を理解する
📌 プログラムの仕組みやプログラミング言語の基礎を学ぶ。
├─ 【IT入門】プログラムって何?初心者向けにわかりやすく解説!
├─ 【IT入門】プログラムとスクリプトの違いとは?
├─ 【IT入門】インタプリタとコンパイラの違いは?網羅的に解説
├─ 【IT入門】シェルとシェルスクリプトの違いとは?シェルの種類について
├─ 【IT入門】アルゴリズムって何?基本の理解と活用方法
├─ 【IT入門】プログラミング言語とは?どんな種類がある?
└─ 【IT入門】初心者におすすめのプログラミング言語5選

🟣 STEP 4: IT技術の応用を学ぶ
 📌 システム開発、データベース、セキュリティなど、実践的なIT技術を習得する。

🔴 STEP 5: IT業界とキャリアを考える
 📌 IT業界の職種、エンジニアの働き方、キャリアパスについて学ぶ。

「シェル」と「シェルスクリプト」という言葉を聞いたことがありますか?どちらもLinuxやMacのターミナルで使われるものですが、それぞれの役割や使い方には違いがあります。

本記事では、「シェル」と「シェルスクリプト」の違いを初心者向けにわかりやすく解説します。
シェルは「コマンドを実行する環境」であり、シェルスクリプトは「その操作を自動化するためのスクリプト」です。

「シェルって何?」「シェルスクリプトはどう使うの?」と疑問に思っている方でも、この記事を読めば基本が理解できます!
実際の使い方や、簡単なサンプルコードも紹介するので、ぜひ最後まで読んでみてください。

シェルとは?(黒い画面の正体)

「シェル」とは、コンピューターに対して命令を入力し、実行させるためのインターフェースのことです。
多くの人が「黒い画面」として認識しているものが、このシェルにあたります。

たとえば、Windowsの「コマンドプロンプト」や「PowerShell」、MacやLinuxの「ターミナル」がシェルの一種です。シェルを通じて、ファイル操作やシステム管理、プログラムの実行など、さまざまな処理を行うことができます。

Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。

「Shell」とは、コマンドプロンプト画面から「カーネル」に対して命令をしたとき、カーネルが理解できる機械語に翻訳して伝達する役割を担っているインターフェイスのことです。

カーネルって?

カーネルとは、OSの核となる部分で、コンピュータを操作するうえでの最も基本的な処理、すなわち、CPUやメモリ、ディスクの制御などを行うプログラムを指しています。

カーネルはOSの中に位置しています。

詳しい使い方については、以下の記事で解説しています。

シェルスクリプトとは?

「シェルスクリプト」とは、シェルで実行するコマンドを1つのファイルにまとめ、自動実行できるようにしたものです。

通常、シェルでは1つずつコマンドを入力して実行しますが、シェルスクリプトを使えば複数の処理を一度に実行できます。

詳しい使い方については、以下の記事で解説しています。

シェルとシェルスクリプトの違い

「シェルスクリプト」とは、カーネルに対して処理をさせたい命令をまとめた「プログラム」ファイルのことです。「Shell」はシェルスクリプトの上から順番に処理していきますので、サーバー管理のような単純な作業をまとめておくと自動化することができます。

また、シェルスクリプトはプログラムを上から順番に実行するだけではなく、「条件分岐」や「繰り返し処理」を行うことが出来ます。これらの制御構文をスクリプト言語と言います。

つまり、Shell上で実行できるスクリプト言語のことを「シェルスクリプト」というわけです。

シェルとシェルスクリプトは、どちらもコマンドを実行するために使われますが、その使い方には大きな違いがあります。
ここでは、それぞれの特徴と使い方の違いをわかりやすく解説します。

シェルとシェルスクリプトの違いを簡単に整理すると、次のようになります。

項目シェルシェルスクリプト
役割コンピューターとやり取りするためのインターフェースシェルで実行する命令をまとめたもの
使い方手動で1つずつコマンドを入力するスクリプトとして保存し、まとめて実行できる
ターミナルで ls を入力して実行 backup.sh というファイルを実行

このように、シェルは「黒い画面」、シェルスクリプトは「そのシェルに対する命令の集合体」と覚えると分かりやすいでしょう。

例えば、Word(アプリケーション)で作成した文章をプリンター(ハードウェア)で印刷するとき、「カーネル」が間に入って「Word」を「印刷する」という要求を「プリンター」に伝えているということです。

コマンドプロンプト画面から「カーネル」に対してプリント出力を実行するまでの流れ

つまり、コマンドプロント画面から「Shell」を通して、人間の言葉を機械語に翻訳してから、各「H/W(ハードウエア)」へ命令しているのです。

シェルスクリプトの具体的な書き方や使い方については、以下の記事で詳しく解説しています。

シェル = 手動でコマンドを実行する環境

シェルとは、ユーザーがコンピューターに直接コマンドを入力し、実行できる環境のことを指します。
黒い画面(ターミナル)を開いて、手作業で1つずつコマンドを入力しながら操作するのがシェルの基本的な使い方です。

たとえば、以下のようなコマンドを1つずつ入力し、手動で実行できます。

$ ls # ファイル一覧を表示
$ cd /home/user # 指定のディレクトリに移動
$ rm test.txt # ファイルを削除

このように、シェルでは1つずつコマンドを実行しながら作業を進めます。

シェルスクリプト = その命令をファイルにまとめて実行できるもの

シェルスクリプトは、シェルで実行する複数のコマンドを1つのファイルにまとめ、まとめて実行できるようにしたものです。
毎回手作業でコマンドを入力するのではなく、スクリプトファイルとして保存しておけば、ワンクリックで自動的に実行できます。

たとえば、以下のようなスクリプト(`backup.sh`)を作成すると、1回の実行で複数のコマンドが順番に処理されます。

#!/bin/bash
tar -czf backup_$(date +%Y%m%d).tar.gz ~/Documents
mv backup_*.tar.gz /backup
echo "バックアップ完了!"

このスクリプトを実行すれば、毎回手作業でコマンドを入力しなくても、**バックアップの作業を自動化**できます。

実際の使い方の違い(表で比較)

項目シェルシェルスクリプト
使い方手動で1つずつコマンドを入力し実行するあらかじめ複数のコマンドをスクリプトにまとめ、自動で実行する
実行方法ターミナルでコマンドを直接入力スクリプトファイルを作成し、実行コマンドで呼び出す
用途1回限りの処理、確認しながらの作業定期的な処理、自動化が必要な作業

$ ls
$ cd /var/log
$ cat syslog

#!/bin/bash
cd /var/log
cat syslog > syslog_backup.txt

このように、シェルは「手作業向け」、シェルスクリプトは「自動化向け」と考えると理解しやすくなります。

代表的なシェルの種類

UNIX系OSで使用されているシェルには、「bash」だけでなく、「ksh」「tcsh」等、複数の種類のシェルが存在し、Bシェル系とCシェル系の2種類に分類できます。

ここで重要なのは、「B系シェルとC系シェルがあるんだな」くらいに思っておいていただければ問題ありません。

手っ取り早くお金が稼げるShellはズバリB系シェルです。

B系シェル

  • sh(Bourne Shell)
    shは(Bourne Shell)と呼ばれ、AT&Tベル研究所によって開発されました。ちなみにBの意味は開発者(Steven Bourne氏)の名前からとっています。「Shell」と言えば、このBshを指していると思ってよいでしょう。現在では、このBshを元にして、様々な派生シェルが登場しています。
  • bash(Bourne-Again Shell)
    bashは(Born again shell)と呼ばれ、Bshを元に機能を拡張した派生シェルの1つです。RedHat系のLinuxの標準シェルとして組み込まれています。急速なLinux普及を背景に、現在ではこの「bash」が標準シェルと思っている方も多く、また、Bshとも互換性を持つため、事実上のBshの後継シェルとも言われています。
  • ksh(Korn Shell)
    kshは(khon shell)と呼ばれ、bashと同様に、AT&Tベル研究所によって開発されました。ちなみにKの意味は開発者(David Korn氏)の名前からとっています。このKshもbash同様に、Bshを元に機能を拡張した派生シェルの1つです。KshはIBM社制サーバーOS「AIX (ver.4以降)」の標準シェルとして世界的に普及しました。

C系シェル

  • csh
    cshは、カリフォルニア大学バークレー校の大学院生によって開発されました。Bshを元にスクリプト構文をC言語のプログラミング風にアレンジしたシェルがcshです。最大の特徴はBshにはない「配列」を使用可能としたシェルとなります。
  • tcsh
    tcshは、Cshを元に、ユーザーインターフェイス部分を中心に拡張した派生シェルの1つです。tcshは、「FreeBSD(ver4以降)」の標準シェルとして世界的に普及しました。

上記以外にもシェルの種類はありますが、とりあえず上記のシェル名を覚えておけば問題ありません。

シェルスクリプトの具体的な活用例

シェルスクリプトは、手作業で行う繰り返しの操作を自動化し、効率的に処理を実行できるようにするために活用されます。
ここでは、代表的な活用例として「サーバー管理」「ファイル整理」「システム監視」の3つを紹介します。

サーバー管理の自動化(定期バックアップ)

サーバー運用では、定期的なデータのバックアップが必要不可欠です。
しかし、毎回手作業でバックアップを実行するのは手間がかかります。

シェルスクリプトを活用すれば、決まった時間に自動でバックアップを実行し、データの保全を確実に行うことができます。

  • 指定フォルダのデータを圧縮し、バックアップファイルを作成
  • バックアップデータを特定のディレクトリや外部ストレージへ移動
  • cron(Linuxのスケジューラ)を利用して、毎日・毎週の自動バックアップ

ファイル整理(ファイル名変更、移動)

パソコンやサーバー上のファイルは、日々増え続けていきます。
手作業でフォルダを整理したり、ファイルの名前を変更したりするのは非常に面倒です。

シェルスクリプトを活用することで、ファイル管理を自動化できます。

  • 特定のファイルを自動で日付ごとのフォルダに整理
  • ファイル名にタイムスタンプを付与し、一意の名前に変更
  • 不要なファイルを一定期間ごとに削除

💡 実際のスクリプト例については、以下の記事で詳しく解説しています。

システム監視(リソースモニタリング)

サーバーやPCのリソース(CPU使用率、メモリ消費量、ディスク空き容量など)を定期的にチェックすることは、
システムが安定して動作するために重要です。

シェルスクリプトを活用すれば、以下のような監視タスクを自動化できます。

  • CPUやメモリの使用率を取得し、一定の閾値を超えた場合に通知
  • ディスクの空き容量が少なくなった際にアラートを発信
  • 特定のプロセスが動作しているかどうかをチェック

💡 システム監視のスクリプト例については、以下の記事で詳しく解説しています。

この記事を読んだら、次は 「【IT入門】アルゴリズムって何?基本の理解と活用方法」 を読むのがおすすめです!

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-STEP 3: プログラム’知識